2009-10-30 3 views
1

DAO가있는 테이블에 레코드를 삽입하려고하면 (MS-Access 내에서) 오류 3022가 표시됩니다. 고유 색인이 위반됨). 실제로 try-to-insert 레코드에는 이미 테이블에서 발견 된 값이 있기 때문에 오류가 정확합니다.DAO/MS 액세스에서 위반하는 고유 인덱스 제약 조건의 이름은 무엇입니까

이제 위반 된 고유 색인의 이름을 찾고 싶습니다. 누군가 내가 이것을 얻을 수있는 단서가 있습니까? 어떤 포인터 여기 르네

+0

DAO 오류 객체가 위반되는 정확한 제약 조건/색인을 반환하지 않기 때문에 (적어도 지금까지 내가 아는 한)이 정보를 얻을 수는 없다고 생각합니다. 나는 insert가 오류를 던져 버렸기 때문에 당신이 겪고있는 것을 정확히 알고있다. 그리고 난 문제를 일으키는 열을 수동으로 찾아야 만했다. –

+0

내 의혹을 확인해 주신 David 께 감사드립니다. 적어도 나는 다른 사람들이 내가하는 것처럼 똑같은 문제를 안고 있음을 안다. –

답변

0

에 대한

덕분에 몇 가지주의 사항은 다음과 같습니다

Sub WithADO() 
''Reference: Microsoft ADO Ext x.x For DLL and Security 
Dim catTables As ADOX.Catalog 
Dim cn As ADODB.Connection 
Dim ndx As Object 

Set catTables = CreateObject("ADOX.Catalog") 

Set cn = CreateObject("ADODB.Connection") 
dbfile = "C:\Docs\LTD.mdb" 

    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
       "Data Source=" & dbfile & ";" 

Set catTables.ActiveConnection = cn 

For Each ndx In catTables.Tables("Table1").Indexes 
    strlist = ndx.Name & " " & ndx.Properties("Primary Key") & vbCrLf & strlist 
Next 
MsgBox strlist 

Set catTables = Nothing 

End Sub 

Sub WithDAO() 
''Reference: Microsoft DAO x.x Object Library 
Dim db As DAO.Database 
Dim tdf As TableDef 
Dim ndx As Object 

Set db = CurrentDb 
Set tdf = db.TableDefs("Table1") 

For Each ndx In tdf.Indexes 

    If ndx.Primary = True Then 
     MsgBox ndx.Name 
    End If 
Next 
End Sub 

또한 스키마를 사용할 수 있습니다.

관련 문제