[MS Access VBA]如何使用带文本前缀的自动编号主键创建表



目前,我有一个VBA代码,可以创建带有自动编号主键的表(字段名:code(。它看起来像这样。

SQL1 = "CREATE TABLE [" + Replace(Me.RecordNo.Value, ".", "p") + "_Inspect] (Code COUNTER(1, 1) PRIMARY KEY, Name TEXT, Description TEXT, Last_inspection DATE, Recent_inspection DATE, Next_inspection DATE, Inspection_type TEXT, inspection_equipment TEXT, Inspection_result TEXT)"
DoCmd.RunSQL SQL1

但是对于"代码",我想更改这个主键的格式。目前,这只是一个带有递增数字(1,2,3,4,5…(的主键,但我想添加文本前缀,比如(Code1,Code2,Code3,Code4…(。我该怎么做?

提前谢谢,真诚。

你不能。

自动编号只是数字。将文本包含在其中会对排序产生重大影响(在文本排序中,Code9大于Code10,因为9大于1(,从而导致大规模碎片化。

相反,您可以更改自动编号的格式,以在编号前显示"代码"(而不存储它(,或者使用第二个计算字段来存储"代码",然后再存储自动编号。

请注意,动态创建表是非规范化数据库的有力指标。请考虑调整数据库,使其不需要动态创建的表。

要更改格式,可以使用以下代码:

Dim td As DAO.TableDef
Set td = CurrentDb.TableDefs(MyTableName)
Dim fld As DAO.Field
Set fld = td.Fields!MyFieldName
Dim prp As DAO.Property
Set prp = fld.CreateProperty("Format", dbText, """Code""#")
fld.Properties.Append prp

这假设format属性尚未初始化。否则,您可以简单地使用以下代码:

CurrentDb.TableDefs(MyTableName).Fields!MyField.Properties!Format = """Code""#"

最新更新