2012-05-01 4 views
7

엄청난 양의 테이블로 Access에 DB를 가지고 있습니다. 불행하게도, 작성자는 매우 비 기술적 인 이름을 사용했기 때문에 이름을 보면서 테이블이 무엇인지를 추측하는 것은 기본적으로 불가능합니다. 나는 긴급하게 특정 데이터를 담고있는 테이블을 찾을 필요가있다. 나는 컬럼의 이름이나 적어도 컬럼의 이름에 포함 된 단어의 이름을 알고 있다고 확신한다. 기본적으로 필요한 것은 특정 열 이름을 포함하는 모든 테이블을 보여주는 일종의 '전체 데이터베이스의 모든 테이블에서 열 이름으로 검색'입니다.열 이름을 알고있는 테이블을 찾으십니까?

원숭이처럼 하나씩 시작하기 전에이를 수행 할 수있는 방법이 있습니까?

답변

7

이 프로시 저는 입력 한 텍스트가 이름에 포함 된 열의 테이블 이름과 열 이름을 나열합니다. 결과는 직접 실행 창에 인쇄

Public Sub ListTablesWithColumnNamesContaining(ByVal pText As String) 
Dim db As DAO.Database 
Dim tdf As DAO.TableDef 
Dim fld As DAO.Field 
Set db = CurrentDb 
For Each tdf In db.TableDefs 
    For Each fld In tdf.Fields 
     If InStr(1, fld.Name, pText, vbTextCompare) > 0 Then 
      Debug.Print tdf.Name & ":", fld.Name 
     End If 
    Next fld 
Next tdf 
Set fld = Nothing 
Set tdf = Nothing 
Set db = Nothing 
End Sub 
+0

마법처럼 일했다, 감사 (Ctrl 키 + 그램 거기 가서)! – Antrim

2

특정 열 이름을 가진 모든 테이블을 찾는 방법이 있지만 몇 가지 코드가 필요합니다 (쿼리를 실행할 수있는 것과 반대).

먼저 데이터베이스에 시스템 테이블을 "표시"해야합니다. 사용중인 MS Access의 버전은 언급하지 않지만 옵션 대화 상자에서 무언가를 허용해야합니다 along these lines.

그러면 모든 사용자 테이블 이름이 들어있는 테이블 MSysObjects이 표시됩니다.

DAO.TableDef 개체로 표를 여는 코드에 이름을 전달하고 해당 Fields 컬렉션의 특성을 검사하면 모든 사용자 테이블을 반복 할 수 있습니다.

앨런 브라우니는 some VBA code that displays these attributes입니다. 필요에 맞게 사용자 정의 할 수 있습니다.

관련 문제