데이터베이스 엔진은 조인 된 테이블에 대한 관계가 정의되었는지 여부에 관계없이 JOIN 문을 수락합니다. 따라서 INNER JOIN 쿼리가 데이터베이스에 정의 된 관계가 있음을 의미하지는 않습니다.
관계에 대한 정보는 숨겨진 시스템 테이블, MSysObjects 및 MSysRelationships에 저장됩니다. 데이터베이스의 관계 컬렉션을 사용하여 해당 정보를 볼 수 있습니다.
Public Sub InspectRelations()
Dim rel As DAO.Relation
Dim fld As DAO.Field
For Each rel In CurrentDb.Relations
Debug.Print "Relationship Name: " & rel.name
If rel.Attributes And dbRelationDontEnforce = dbRelationDontEnforce Then
Debug.Print "Relationship not enforced"
Else
Debug.Print "Relationship enforced"
End If
Debug.Print "Table: " & rel.Table
Debug.Print "ForeignTable: " & rel.ForeignTable
For Each fld In rel.Fields
Debug.Print "Field Name: " & fld.name
Debug.Print "ForeignName: " & fld.ForeignName
Next fld
Debug.Print String(10, "-")
Next rel
Set fld = Nothing
Set rel = Nothing
End Sub
편집 : 당신은 관계의 속성을 검사 할 수 있습니다. 이 예제에는 dbRelationDontEnforce가 포함되어 있습니다. dbRelationDeleteCascade 및 dbRelationUpdateCascade와 같은 다른 속성이 유용 할 수 있습니다. RelationAttributeEnum 열거 형에 대한 도움말 항목을보고 사용 가능한 속성의 전체 목록을 확인하십시오.
편집 2 : 코드를 사용하려면 Access에서 데이터베이스를 엽니 다. 그런 다음 Ctrl + g 바로 가기를 사용하여 Visual Basic Editor에서 직접 실행 창을 엽니 다. 그런 다음 VBE 기본 메뉴에서 삽입 -> 모듈을 선택하십시오. 코드를 복사하여 모듈에 붙여 넣습니다. 모듈을 저장하고, 이름 ("Module1"과 같음)을 제공하거나, 더 많은 의미를 부여하는 다른 이름을 지정하십시오. 그러나 모듈의 이름을 지정하지 마십시오. InspectRelations --- 모듈과 프로시 저는 이름이 다르다.
주 메뉴에서 디버그 -> 컴파일을 선택하여 컴파일러에서 코드를 허용하는지 확인하십시오. Access 2000을 사용하고 있으므로 "Microsoft DAO 3.6 Object Library"에 대한 참조를 설정해야 할 수 있습니다. 목록에서 찾아서 옆에 체크 표시를 한 다음 확인을 클릭하십시오. 그런 다음 다시 컴파일하십시오.
오류없이 컴파일 된 경우 프로 시저 본문 내에 커서를 놓고 F5 키를 눌러 실행하면 프로 시저를 실행할 수 있습니다. Debug.Print 문은 출력을 직접 실행 창으로 보냅니다.
코드를 따라갈 수는 있지만 죄송 합니다만 액세스 프로그래밍을 한 적이 없습니다. 이 코드를 어디에 넣어야합니까? 어떻게 실행합니까? 생산량은 어느 정도 올릴 것인가? – user450143