2011-08-18 8 views
1

코드가있는 Microsoft Access 2000에서 테이블 & 쿼리를 상속했습니다. 이것을 SQL로 변환해야합니다.MS Access - 관계

Select 명령으로 INNER JOINS이라는 몇 가지 쿼리를 볼 수 있습니다. 그래서 나는 관계가 설정된 테이블을 추측하고 있습니까?

관계 도구 (그래픽 도구) &을 사용하여 모든 테이블을 추가했습니다. 관계가 나타나지 않습니다.

관계를 설정하는 방법은 무엇입니까? 설정된 관계를 검색하려면 어떻게해야합니까?

답변

1

데이터베이스 엔진은 조인 된 테이블에 대한 관계가 정의되었는지 여부에 관계없이 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 문은 출력을 직접 실행 창으로 보냅니다.

+0

코드를 따라갈 수는 있지만 죄송 합니다만 액세스 프로그래밍을 한 적이 없습니다. 이 코드를 어디에 넣어야합니까? 어떻게 실행합니까? 생산량은 어느 정도 올릴 것인가? – user450143

0

관계 도구가 관계를 나타내거나 참조 무결성을 적용하는 데 사용되지 않은 경우 관계 도구를 사용하지 않고 테이블간에 관계를 가질 수 있기 때문에 운이 없게됩니다.

조인은 관련 테이블의 기본 키/외래 키를 표시하므로 쿼리의 JOIN 절에서 관계를 리버스 엔지니어링해야 할 수 있습니다.

+0

코드의 모든 JOIN을 검색하고 관계가 설정되는 방법을 확인 하시겠습니까? 또한 관계 도구를 사용할 때 많은 쿼리가 나타났습니다. 그들이 나를 도울까요? – user450143

+0

예, 암시 적 조인 등이있을 수 있으므로 'JOIN'에 대한 CTRL + F만으로는 충분하지 않을 수 있습니다. – Jacob

+0

참고 : CTRL-F는 쿼리 개체에서 조인을 찾지 않습니다. 당신은 각각을 조사해야 할 것입니다. – BIBD