我使用ODBC驱动程序从MySql数据库导入了40个表到Access,因为该服务器将停机数天,我需要保持我的应用程序运行。一切顺利(app接受了与Access数据库的新连接) 除了 以定义主键(每个表的第一个字段命名为" id&#34 ;,类型为Integer且为AutoIncremented,在导入期间丢失。
我尝试编写VBA Sub来恢复导入表的这些设置,但在尝试设置AutoIncrement属性时出现错误。这是我的代码:
Option Explicit
Option Compare Database
Public Sub RestorePrimaryKeys()
Dim db As dao.Database
Set db = CurrentDb()
Dim tables As dao.TableDefs
Set tables = db.TableDefs
Dim table As dao.TableDef
For Each table In tables
If table.Name Like "table*" Then
If table.Indexes.Count = 0 Then
If table.fields(0).Name = "id" Then
Dim field As dao.Field2
Set field = table.fields(0)
field.Attributes = field.Attributes Or FieldAttributeEnum.dbAutoIncrField
'raises "Invalid operation (3219)"
Dim pkindex As Index
Set pkindex = table.CreateIndex("Primary Key")
Dim fields As dao.fields
Set fields = pkindex.fields
fields.Append field
pkindex.Primary = True
table.Indexes.Append pkindex
End If
End If
End If
Next
End Sub
好吧,我可以使用表格布局编辑器手动完成,但正如我所说的那样,大约有40个表格。如果我可以手动完成,为什么我不能使用VBA?我在这里做错了什么?
非常感谢。