使用Access VBA更改现有字段的属性

时间:2017-09-27 12:12:01

标签: vba ms-access primary-key auto-increment

我使用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?我在这里做错了什么?

非常感谢。

0 个答案:

没有答案