批量修改ACCESS主键名称
Option Compare Database
Option Explicit
Private Sub ListObjects()
Dim fldr As New ADOX.Catalog
fldr.ActiveConnection = CurrentProject.Connection
Dim oTable
With fldr
For Each oTable In CurrentDb.TableDefs
'处理主键
Dim ky
For Each ky In .Tables(oTable.Name).Keys
Debug.Print ky.Name
If ky.Type = adKeyPrimary And Left(ky.Name, 3) = "PK_" Then
Dim no As Integer
no = Right(ky.Name, Len(ky.Name) - 7) + 10
ky.Name = "PK_" + no
ky.ConstraintName = ky.Name
'ky.Clustered=true
End If
Next
Next
End With
'处理外键
'Dim ref
' For Each ref In fldr.References
' output "FK " + ref.ClassName + " " + ref.Name
' ref.Name = "FK_" + ref.ChildTable.Code + "_" + ref.ParentTable.Code
' ref.Code = ref.Name
' ref.ForeignKeyConstraintName = ref.Name
' Next
End Sub