访问自定义主键

时间:2013-05-09 23:36:46

标签: ms-access ms-access-2007 access-vba ms-access-2010 ms-access-2013

我想在Access数据库中创建自定义主键。

数据库将是多用户的,所以我需要一种方法来确保每个密钥都是唯一的,即使多个用户试图将新记录添加到同一个表中也是如此。

我需要创建自定义主键的原因是因为我的数据库启动了审计跟踪,该跟踪进入另一个我无法控制的外部系统。

但是,这个其他系统允许我们使用单个12个字符长度的用户定义字段来传递我们选择的数据。

我想使用该用户定义的字段来记录12个字符的代码,该代码具有我可以在以后推断的各种缩写(例如,前2个字符与我们组织中的某个部门相关,接下来3个字符与产品和等......)

从我到目前为止所做的阅读中,Access中的自定义键似乎是一个雷区。

出于我的目的,我可以看到至少在组合Access'自动编号字段以帮助构建我想要的主键时的妥协。

这就是我的想法:

我想要推断的代码部分可以由我们的用户构建,例如,如果部门是人力资源部门,前2个字符可能始终是“HR”。

然后假设我让访问中的AutoNumber运行在我的“HR”条目填充的同一个表中的字段...我可以得到第三个字段来自动连接同一个表中的2(不是查询)...?就像这样:

| Department | AutoNumber | CustomPrimaryKey |
|    HR      |     1      |        HR1       |

如果这可以在VBA中的某些事件上完成,那就太棒了(给我看代码!:))

第二部分是我是否可以使自动编号与前导零连接,确保自定义主键的“唯一编号”部分介于99999和00001之间,即占用相同的5个字符空间,如下所示:

| Department | AutoNumber | CustomPrimaryKey |
|    HR      |     1      |     HR00001      |
|    HR      |     2      |     HR00002      |

我不太可能需要超过100,000个条目。

我希望这是可行和安全的!

1 个答案:

答案 0 :(得分:1)

我宁愿将此作为评论而不是答案,因为我认为您并不完全清楚自己需要什么,但我会尽量回答。另外,我不打算“给你看代码!”正如你所建议的那样,它什么都不教。

在自动连接第三个字段的第一个问题中,它实际上是如何填充字段的问题。

如果是通过表单输入,那么您可以在控件的更新事件期间将所有组件字段连接到键字段,这些组件字段正在填充。在VBA中,您可以通过访问表单的记录集轻松引用记录成员。

如果您通过已导入规范的文件导入填充该字段,则执行导入,不包括您的密钥字段,然后打开导入的表的记录集并遍历记录集。你可以了解ADO记录集here.同样,我不只是要编写代码,因为我真的不知道你需要什么。

如果您通过自己的解析器填充字段,那么我可能不必解释如何执行此操作。

对于第二个问题,您可以使用format()函数轻松地将字符串中的数字对齐。例如,format(2,"00000")将产生“00002”而format(210,"0000")将产生“0210”。您还可以使用string()函数设置要在其中对齐变量的0的数量。例如format(2054,string(12-len("HR"),"0"))会给你“0000002054”

我要告诉你的另一个注意事项是,说“我不太可能......”并且没有做好准备,这绝不是一个好主意。墨菲定律是B中的一个痛点。你应该考虑处理超出你的钥匙可以处理的限制的条件。