1

e我想在我的 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 个条目。

我希望这是可能且安全的!

4

1 回答 1

1

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

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

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

如果您通过已经有导入规范的文件导入来填充字段,那么您将执行不包括关键字段的导入,然后打开您导入的表的记录集并遍历记录集。您可以在此处了解 ADO 记录集同样,我不只是要编写代码,因为我真的不知道你需要这个做什么。

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

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

我要留给您的另一个注意事项是,说“我不太可能……”之类的话并且不为此做好准备绝不是一个好主意。墨菲定律是 B 中的一个痛点。您应该考虑处理超出密钥可以处理限制的条件。

于 2013-05-10T00:59:34.097 回答