【发布时间】:2015-03-16 02:21:23
【问题描述】:
我是 microsoft access 的新手。我只是想知道如何使用创建自定义主键?比如 abc-123 格式?
【问题讨论】:
-
您实际上希望
abc部分如何出现在不同的元组中。我认为一些验证可能会有所帮助。
标签: ms-access
我是 microsoft access 的新手。我只是想知道如何使用创建自定义主键?比如 abc-123 格式?
【问题讨论】:
abc 部分如何出现在不同的元组中。我认为一些验证可能会有所帮助。
标签: ms-access
这取决于您希望如何创建 abc-123 值。
如果您想在代码中自己创建它们,只需创建一个 Text 列并将其用作您的主键。
如果您希望 Access 来创建这些值……那是不可能的。 Access 唯一能够自动生成的是增加数值(数据类型AutoNumber)。
因此,您可以做的最好的事情是在内部使用 AutoNumber 作为实际的主键,并从中创建 abc-123 值,仅用于显示。
以下是一些如何做到这一点的示例,来自我过去回答的类似问题:
免责声明:我不知道类似的方法是否适用于您的情况。
如果没有,您需要提供更多信息,您希望如何准确地创建您的号码:
【讨论】:
实际上,如果使用 2010 或更高版本,您可以创建表触发器。表触发器可以获取一些字段(从中获取 abc),然后获取一些其他字段(seq num),然后将 + 1 添加到值。
“空气”代码如下所示:
表触发器的美妙之处在于它在表(数据引擎)级别运行,因此如果您使用 ODBC、VB.net、FoxPro、Access 等打开数据库,那么 PK 密钥将始终为您自动生成。
【讨论】:
DMax() 进行类似的操作,当从 Access 本身插入记录时它可以工作,但它会导致其他应用程序的 INSERT 失败。 (“数据宏中不允许使用 DMax。”)我一直在 Access 2010 中尝试对上述内容进行变体,但如果我的 LookUpRecord 尝试在数据宏所属的同一张表上执行 SELECT,我会得到“The ' LookUpRecord' 宏操作的 'Look Up A Record In' 参数的值无效。” (来自不同表的 SELECT 似乎没问题。)您能否更新您的答案以提供一个工作示例?谢谢!