2010-06-10 3 views

ответ

2

Добавить ссылку ADOX и ADODB library.

Function ShowKeys(tbl As String) As String 
    'Add reference ADOX library: Microsoft ADO Ext. 2.8 for DDL and Security. 
    'Add reference ADODB library: Microsoft ActiveX Data Objects 
    Dim cat As New ADOX.Catalog 
    Dim tbl As ADOX.Table 
    Dim idx As ADOX.Index 
    Dim col As ADOX.Column 
    Dim cnn As New ADODB.Connection 

    On Error GoTo errh 

    cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _ 
     "Data Source= 'Northwind.mdb';" 

    Set cat.ActiveConnection = cnn 

    For Each tbl In cat.Tables 
     If tbl.Name = tbl Then 
     If tbl.Indexes.Count <> 0 Then 
      For Each idx In tbl.Indexes 
       With idx 
        If .PrimaryKey Then 
        For Each col In .Columns 
         ShowKeys = col.Name & ", " & ShowKeys 
        Next 
        End If 
       End With 
      Next 
     End If 
     End If 
    Next 

errh: 
    If Err <> 0 Then 
     MsgBox Err.Number & ": " & Err.Description, vbOKOnly, "Error" 
    End If 

    Set cat = Nothing 
    Set tbl = Nothing 
    Set idx = Nothing 
    Set col = Nothing 
    Set cnn = Nothing 
End Function 
+0

+1. Я не проверял код, но ADOX определенно является инструментом для использования. – MarkJ

+0

MarkJ - ADOX - не единственное решение. Вы также можете использовать DAO для выполнения всего этого. –

+0

ADO также имеет метод OpenSchema для объектов Connection. – Bob77

4

В одной таблице есть только один первичный ключ, который может быть простым или сложным.

Смежные вопросы