不能用 SQL 得到:DAO: Public Function Get_Primary(ByVal databasename As String, ByVal tablename As String) As StringDim td As DAO.TableDef Dim db As DAO.database Dim nx As DAO.IndexSet db = OpenDatabase(databasename) Set td = db.TableDefs(tablename) For Each nx In td.Indexes If nx.Primary = True Then Get_Primary = nx.Fields(0).Name Exit For End If Next End Function ADOX: Public Function Get_Primary(ByVal databasename As String, ByVal tablename As String) As String Dim cat As New ADOX.Catalog Dim ndx As ADOX.Indexcat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _ "Data Source=" & databasenameFor Each ndx In cat.Tables(tablename).Indexes If ndx.PrimaryKey Then Get_Primary = ndx.Columns(0).Name Exit For End If Next End Function
在Access911上查到答案,分享:须引用“Microsoft ADO Ext. 2.7 For DDL and Security”Public Function GetPrimaryKeyName(strTable As String) Dim kyForeign As New ADOX.Key Dim cat As New ADOX.Catalog
cat.ActiveConnection = ADOCnn GetPrimaryKeyName = "" For Each kyForeign In cat.Tables(strTable).Keys If kyForeign.Type = adKeyPrimary Then GetPrimaryKeyName = kyForeign.Name Exit For '常量 值 说明 'adKeyPrimary 1 默认值。此键是主键。 'adKeyForeign 2 此键是外键。 'adKeyUnique 3 此键是唯一键。 End If Next End Function得到的主键名就是 “primarykey1”之类,已在VB6+Accesss2000上测试通过。结贴。
Public Function Get_Primary(ByVal databasename As String, ByVal tablename As String) As StringDim td As DAO.TableDef
Dim db As DAO.database
Dim nx As DAO.IndexSet db = OpenDatabase(databasename)
Set td = db.TableDefs(tablename)
For Each nx In td.Indexes
If nx.Primary = True Then
Get_Primary = nx.Fields(0).Name
Exit For
End If
Next
End Function
ADOX:
Public Function Get_Primary(ByVal databasename As String, ByVal tablename As String) As String
Dim cat As New ADOX.Catalog
Dim ndx As ADOX.Indexcat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source=" & databasenameFor Each ndx In cat.Tables(tablename).Indexes
If ndx.PrimaryKey Then
Get_Primary = ndx.Columns(0).Name
Exit For
End If
Next
End Function
Dim kyForeign As New ADOX.Key
Dim cat As New ADOX.Catalog
cat.ActiveConnection = ADOCnn
GetPrimaryKeyName = ""
For Each kyForeign In cat.Tables(strTable).Keys
If kyForeign.Type = adKeyPrimary Then
GetPrimaryKeyName = kyForeign.Name
Exit For
'常量 值 说明
'adKeyPrimary 1 默认值。此键是主键。
'adKeyForeign 2 此键是外键。
'adKeyUnique 3 此键是唯一键。
End If
Next
End Function得到的主键名就是 “primarykey1”之类,已在VB6+Accesss2000上测试通过。结贴。