在VB环境中 如何判断access表中有自动编号列且为主键的列
以及如何判断哪列为主键列!
各位高人指点!
谢谢了啊 分不够再加!

解决方案 »

  1.   

    ADO印象中没有,ADO.NET可以!
      

  2.   

    Private Sub Command6_Click()
        Dim adoXClog As Variant
        Dim adoObject As Variant
        Dim objItem As Variant
        Dim objTemp As Variant
        Dim MyField As Variant
        Set adoXClog = CreateObject("ADOX.Catalog")
        adoXClog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库.mdb;" '"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库"
        Set adoObject = adoXClog.Tables("table")
        For Each objItem In adoObject.Keys
           For Each objTemp In objItem.Columns
             For Each MyField In adoObject.Columns  '这部分效率没有优化,自己优化一下吧
               If MyField.Properties("AutoIncrement").Value = True And MyField.Name = objTemp.Name Then
                 Debug.Print objTemp.Name
               End If
             Next
           Next
        Next
    End Sub
      

  3.   

    楼上:我运行了代码好像不对啊  错误提示是“在对应所需名称或序数的集合中,未找到项目” 提示在这句上     Set adoObject = adoXClog.Tables("table")我把你的代码加到这些程序下面        
     adoCon.ConnectionString = sConnectionString
            adoCon.Open
                    With adors
                        .CursorLocation = adUseClient
                        .CursorType = adOpenStatic
                        .LockType = adLockPessimistic
                        .ActiveConnection = sConnectionString
                        .Source = "select * from " & tableName
                        .Open                End With
        Set adors = adoCon.Execute("delete * from " & tableName)
           adors.Open "select * from " & tableName, adoCon, adOpenKeyset, adLockOptimistic   Dim adoXClog As Variant 
        Dim adoObject As Variant 
        Dim objItem As Variant 
        Dim objTemp As Variant 
        Dim MyField As Variant 
        Set adoXClog = CreateObject("ADOX.Catalog") 
        adoXClog.ActiveConnection = sConnectionString  '我修改的地方
        Set adoObject = adoXClog.Tables("table") 
        For Each objItem In adoObject.Keys 
          For Each objTemp In objItem.Columns 
            For Each MyField In adoObject.Columns  '这部分效率没有优化,自己优化一下吧 
              If MyField.Properties("AutoIncrement").Value = True And MyField.Name = objTemp.Name Then 
                Debug.Print objTemp.Name 
              End If 
            Next 
          Next 
        Next 
      

  4.   

    Set adoObject = adoXClog.Tables("table") 
    table是你要查找的表名,比如我这access有个自己建的表叫table