我有一个Access DB,可以通过宏(转换为VBA)每小时自动统一一个表中的几个CSV( Aux_Table1 )。在统一之前,我运行查询以清除 Aux_Table1 表,但Access被编码为 NOT 重用KEY ID,因此每次清除和统一CSV时,密钥ID都会继续计数。
我知道“重置”ID KEY编号的唯一方法是在表的设计模式下手动删除创建这个主键,但我想自动运行它(它是巨大的一部分)批处理)。
如何在我的(VBA)功能中通过VBA将此过程转换为INCLUDE? (参见这个4Mb GIF演示)。
我的功能示例:
Function MacroUnify()
DoCmd.SetWarnings False
DoCmd.OpenQuery "00_Borrar_Aux_Tabla1", acViewNormal, acEdit
>>> Here I need to _REMOVE_ PrimaryKey from Aux_Tabla1 <<<
>>> Here I need to _CREATE_ PrimaryKey from Aux_Tabla1 <<<
DoCmd.OpenQuery "10_Crea_Tabla definitva", acViewNormal, acEdit
DoCmd.OutputTo acOutputTable, "zzz_resultado_Combinado", "Excel97-Excel2003Workbook(*.xls)", "D:\access\fullCatalog.xls", False, "", , acExportQualityPrint
End Function
我尝试过:
CurrentDb.Execute "ALTER TABLE Aux_Tabla1 DROP CONSTRAINT PrimaryIndex"
DoCmd.RunSQL "CREATE INDEX PrimaryIndex ON Aux_Tabla1(ID) WITH PRIMARY"
该函数运行没有问题,但密钥索引仍在计数而不重置。
PS:索引名称为 PrimaryIndex ,字段名称为 ID
答案 0 :(得分:2)
如果我理解正确,您需要重置ID字段
上的自动增量计数器您可以使用此SQL指令
执行此操作CurrentDb.Execute "ALTER TABLE Aux_Tabla1 ALTER COLUMN ID COUNTER(1,1)"
答案 1 :(得分:1)
自动增量属性属于表中的列,而不属于索引。因此删除并重新创建索引无效。您需要首先删除索引,然后删除列,然后重新创建两者。 - 但你不必这样做。 有一个更简单的选择:
ALTER TABLE Aux_Tabla1 ALTER COLUMN ID COUNTER(1,1)
此SQL语句将重置列&#34; ID&#34;上的自动增量计数器。为1,每个记录增加1。您可以CurrentDb.Execute
或DoCmd.RunSQL
执行此操作。
请注意,只有在当时表未打开时才能更改表的结构。