【发布时间】:2013-05-04 14:04:34
【问题描述】:
我想在我的 Access 数据库中创建自定义主键。
数据库将是多用户的,所以我需要一种方法来确保每个键都是唯一的,即使多个用户尝试向同一个表中添加新记录。
我需要创建自定义主键的原因是因为我的数据库启动了一个审计跟踪,该审计跟踪进入另一个我无法控制的外部系统。
但是,这个其他系统确实允许使用单个 12 个字符长度的用户定义字段,以便我们传递我们选择的数据。
我想使用该用户定义的字段来记录一个 12 个字符的代码,该代码具有我可以稍后推断的各种缩写(例如,前 2 个字符与我们组织中的一个部门相关,接下来的 3 个字符与产品相关,并且等等……)
从我目前阅读的内容来看,Access 中的自定义键似乎是一个雷区。
不过,就我的目的而言,我至少可以看到在组合 Access 的自动编号字段以帮助构建我想要的主键方面至少有所妥协。
这就是我的想法:
我稍后想要推断的代码部分可以由我们的用户构建,例如,如果部门是人力资源部,前 2 个字符总是可以是“HR”。
然后假设我让访问中的自动编号针对填充了我的“HR”条目的同一个表中的一个字段运行...我可以获得第三个字段来自动连接同一个表中的 2(不是查询)...?即像这样:
| Department | AutoNumber | CustomPrimaryKey |
| HR | 1 | HR1 |
如果这可以在 VBA 中的某个事件上完成,那就太好了(给我看代码!:))
第二部分是我是否可以让自动编号与前导零连接,以确保自定义主键的“唯一编号”部分介于 99999 和 00001 之间,即占用相同的 5 个字符空间,如下所示:
| Department | AutoNumber | CustomPrimaryKey |
| HR | 1 | HR00001 |
| HR | 2 | HR00002 |
我需要超过 100,000 个条目的可能性很小。
我希望这是可能且安全的!
【问题讨论】:
-
对不起 - 我对 VBA 有点陌生,但想象一下我想要做的是将 Department 和 AutoNumber 的串联存储在 VBA 变量中,然后将其推送到表单的文本框中形式的事件......虽然不确定什么事件是合适的。我也可以想办法用
LEN获得前导零。
标签: ms-access ms-access-2007 vba ms-access-2010 ms-access-2013