VBA 쿼리에 액세스하여 데이터베이스의 테이블을 나열하는 방법

작가: Robert Simon
창조 날짜: 20 6 월 2021
업데이트 날짜: 12 할 수있다 2024
Anonim
VBA 액세스 | 소개
동영상: VBA 액세스 | 소개

콘텐츠

Microsoft Access는 사용자가 자신의 데이터베이스, 보고서 및 양식을 만들 수있는 데이터베이스 관리 시스템입니다. 액세스에는 작은 애플리케이션 개발을위한 모든 빌딩 블록이 포함됩니다. 양식, 보고서 및 데이터 테이블, 저장 프로 시저, 함수 및 매크로를 만들 수 있습니다. 이러한 모든 구성 요소에는 숨겨진 시스템 테이블에 저장된 고유 한 포인터 또는 레코드 정의가 있습니다. Access는 각 테이블, 보고서, 양식 등의 기록을 유지합니다. 사용자가 생성하고 업데이트 한 날짜 및 시스템 플래그와 같은 데이터도 저장합니다.


지침

Access는 데이터베이스 구조 정보를 MSysObjects 테이블에 저장합니다. (Fotolia.com에서 키르하여 데이터 저장 이미지)

    테이블 목록 얻기

  1. 아래 SQL 명령을 실행하는 쿼리를 만듭니다. 이 쿼리는 현재 Access 데이터베이스의 모든 테이블 목록을 표시합니다. 숫자 1을 사용하는 "where"절은 인용 된 표만 원한다는 것을 나타내는 역할을합니다.

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags from MSysObjects WHERE MSysObjects.Type = 1

  2. 아래 예제와 같이 데이터베이스에서 체계가 아닌 테이블 쿼리를 반환합니다.

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags from MSysObjects WHERE MSysObjects.Type = 1 및 MSysObjects.Name이 아닌 "MSys *";

  3. 아래 쿼리를 실행하여 숨겨진 데이터베이스 테이블 목록을 입력하십시오.

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags MSysObjects WHERE MSysObjects.Type = 1 및 MSysObjects.Flags <> 8


  4. 다음 SQL 코드를 사용하여 비 숨겨진 비 시스템 테이블 목록을 정렬하십시오.

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags from MSysObjects WHERE MSysObjects.Type = 1 AND MSysObjects.Flags <> 8 AND MSysObjects.Name이 아닌 "MSys"; MSysObjects.Name에 의해 주문

    VBA에서 테이블 목록 사용

  1. 아래 VBA 코드를 사용하여 테이블 목록을 레코드 개체에로드하십시오.

    희미한 rsMyTables을 DAO.Recordset으로 설정 rsMyTables = CurrentDb.OpenRecordset ( "MyQuery")

  2. 완료된 쿼리의 각 레코드를 스크롤하십시오.

    희미한 rsMyTables을 DAO.Recordset으로 설정 rsMyTables = CurrentDb.OpenRecordset ( "MyQuery")

    데이터 조작을위한 rsMyTables.EOF '코드 수행

    rsMyTables.MoveNext 루프

  3. 루프를 수정하여 목록의 각 테이블에 이름을 추가하십시오.

    Dim rsMyTables as DAO.Recordset Set rsMyTables = CurrentDb.OpenRecordset ( "MyQuery") Me.cmbMyComboBox.Clear

    Do not Not rsMyTables.EOF Me.cmbMyComboBox.AddItem rsMyTables! [이름]


    rsMyTables.MoveNext 루프

  4. 레지스트리 개체를 닫아 사용중인 메모리를 확보하십시오.

    Dim rsMyTables as DAO.Recordset Set rsMyTables = CurrentDb.OpenRecordset ( "MyQuery") Me.cmbMyComboBox.Clear

    Do not Not rsMyTables.EOF Me.cmbMyComboBox.AddItem rsMyTables! [이름]

    rsMyTables.MoveNext 루프

    rsMyTables.Close Set rsMyTables = Nothing

어떻게

  • Microsoft Office Standard 프로그래밍 언어 인 VBA (Visual Basic for Applications)에서 만들어진 매크로입니다.
  • "MSysObject.Type"필터를 변경하여 Access에서 이러한 개체를 나열 할 수 있습니다. 이 값의 옵션은 다음과 같습니다.
  • 표 = 1
  • 쿼리 = 5
  • 연결된 표 = 4, 6 또는 8
  • 양식 = -32768
  • 보고서 = -32764
  • 모듈 = -32761