DetailPage-MSS-KB

기술 자료

기술 자료: 113701 - 마지막 검토: 2006년 9월 1일 금요일 - 수정: 3.1

 

이 페이지에서

요약

단일 쿼리 동시에 둘 이상의 데이터 원본에서 데이터를 액세스할 때 단일 Access 데이터베이스를 다른 데이터 원본의 테이블을 연결하는 빠르고 가장 일반적인 방법을--사용하도록 사용할 것입니다. 이 시점에서 모든 테이블에 첨부된 또는 로컬, 로컬 Microsoft Access 데이터베이스에 것처럼 두 개의 서로 다른 데이터베이스에 걸쳐 쿼리는 생성할 수 있습니다.
특히 사용자가 쿼리를 반복적으로 실행할 경우 테이블을 연결하는 강력한 성능과 관리 이점을--있습니다. 그러나 두 개 이상의 데이터베이스를 포함하는 임의 쿼리를 사용해야 할 때 이 문서에서 설명하는 느린 경로 걸릴 하는 경우가 있습니다. 이 문서에서는 이러한 느린 데이터베이스 간 쿼리를 구성하는 방법에 대해 설명합니다.

추가 정보

현재 열려 있는 외부 데이터베이스를 지정할 수 있습니다 두 가지가 있습니다.

방법 1

Microsoft Access SQL을 데이터베이스가 현재 데이터베이스가 아닌 외부 데이터베이스에 연결할 수 있도록 IN 절을 제공합니다. 그러나 이 메서드는 하나의 외부 데이터베이스에 한 번에 제한할지 않습니다.

IN 절의 이름을 데이터베이스 및 연결 문자열의 두 부분으로 구성됩니다. 데이터베이스 이름을 파일 또는 데이터베이스 파일을 포함하는 디렉터리의 정규화된 경로 및 데이터베이스 형식 및 다른 매개 변수가 필요에 따라 연결 문자열을 포함합니다.

외부 데이터베이스에 지정하려면 세미콜론 (;) 으로 추가할 수 있는 연결 부분, 및 작은따옴표나 큰따옴표로 묶어야 합니다. 다음 예제에서는 dBASE IV 데이터베이스 (판매) 테이블 (Customers) 지정하려면 IN 절을 사용하여:
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
Visual Basic 사용하면 다이너셋 위의 예제에 다음 VBA 코드를 만들 수 있습니다:
Dim db As Database
Dim ds As Dynaset
Dim sql As String

' Open a database:
Set db = OpenDatabase("C:\VB\BIBLIO.MDB")

' Build the select statement, referencing the external dBASE IV file:
sql = "SELECT Customers.CustomerID, FROM Customers"
sql = sql & " IN 'C:\DBASE\DATA\SALES' 'dBASE IV;'"
sql = sql & " WHERE Customers.CustomerID Like 'A*'"

' Create the recordset:
Set ds = db.CreateDynaset(sql)

' Loop through and display the records:
While Not ds.EOF
   For i = 0 To ds.Fields.Count - 1
      Print ds(i); "  ";
   Next i
   Print
   ds.MoveNext
Wend
				

방법 2

Visual Basic 버전 3.0에 통합된 Microsoft Access 엔진은 SQL 쿼리를 포함할 데이터베이스 개체를 여는 데 사용되는 연결 문자열을 구문 분석할 수 있습니다. From 절은 SQL 문의 테이블 이름 앞에 대괄호로 연결 문자열의 위치가 있습니다 정규화된 테이블 이름을 허용합니다. 연결 문자열 테이블 이름이 마침표로 구분됩니다. 이 메서드를 사용하면 동시에 여러 외부 데이터베이스에 연결할 수 있습니다.

이 구문을 사용하여 모든 테이블이 단일 SELECT 문 내에서 두 데이터베이스 중 하나에 액세스할 수 있습니다:
SELECT tbl1.fld1,tbl2.fld1
FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,
[dbase iii;database=C:\DBASE3].tbl2
WHERE tbl1.fld1 = tbl2.fld1
				
한 디렉터리 C:\DBASE3 ODBC 데이터 원본 및 기타 dBASE III 표, 이 예제에서는 두 개의 서로 다른 데이터베이스 두 테이블을 조인합니다.

일반적으로 대괄호로 여기에 사용된 연결 문자열을 연결하는 동안 TableDef Connect 속성을 또는 OpenDatabase 문의 네 번째 매개 변수는 동일합니다. 해당 ODBC ISAM, 또는 Microsoft Access 데이터베이스 따라 세 가지 형식 중 하나로 표시됩니다.

ODBC 데이터베이스에 대한:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
For ISAM 데이터베이스를:
   [paradox 3.X;database=C:\DATABASE\PARADOX3]
   [foxpro 2.5;database=C:\DATABASE\FOX25]
   [dbase iv;database=C:\DATABASE\DBASEIV]
   [btrieve;database=C:\DATABASE\BTRIEVE\FILE.DDF]
				
위해 Microsoft Access 데이터베이스:
   [;database=C:\VB\BIBLIO.MDB]
				
노트 Microsoft Access 데이터베이스의 앞에 세미콜론이 중요합니다. 이 테이블을 Microsoft Access 형식 데이터베이스에 연결하기 전에 TableDef 개체에 대한 Connect 속성을 설정하는 데 필요한 정확히 동일한 문자열입니다. 앞에 세미콜론이 필요 없는 데이터베이스 형식 사양의 자리 표시자의 있으며 있습니다 있는 "데이터베이스 =" 절을 수행합니다.

여러 쿼리 예제 코드

이 예제에서는 두 개의 데이터 원본에서 한 SQL Server 및 기타 Microsoft Access 데이터베이스의 두 테이블을 조인하는 다이너셋을 만듭니다. TestTab 테이블의 SQL 서버에 있고 Microsoft Access 데이터베이스에서 T1 테이블이 있습니다.

참고<username>반드시 변경 및 < 강력한 암호 > 이 코드를 실행하기 전에 올바른 값으로. 사용자 데이터베이스에서 이 작업을 수행하려면 적절한 사용 권한이 있는지 확인하십시오.
Dim db As database
Dim ds As dynaset
Dim sql As String, Uid$, Pwd$

Set db = OpenDatabase("C:\VB\BIBLIO.MDB")
' This obtains a valid database object. It does not have to be a Microsoft
' Access database; the following works equally as well:
' Set db = OpenDatabase("C:\FOXPRO25\", 0, 0, "foxpro 2.5")

' The values here are hard-coded, but you could prompt the user for their
' user id and password.
Uid$ = <username>
Pwd$ = <strong password>

' Build the select statement, concatenating the user's id and password:
sql = "SELECT T1.F2, TestTab.F2, TestTab.F3"
sql = sql & " FROM [;database=C:\ACCESS\DB1.MDB].T1 , "
sql = sql & " [odbc;dsn=texas;database=playpen;Username=" & Uid$
sql = sql & ";PWD=" & Pwd$ & "].TestTab"
sql = sql & " WHERE T1.F1 = TestTab.F1"

' Execute the select query:
Set ds = db.CreateDynaset(sql)

' Loop through and display the records:
While Not ds.EOF
   For i = 0 To ds.Fields.Count - 1
      Print ds(i); "  ";
   Next i
   Print
   ds.MoveNext
Wend
				

Microsoft Access 데이터베이스 보안 특별 참고 사항

Microsoft Access 데이터베이스에 보안이 적용된 경우 해당 SetDataAccessOption Visual Basic 응용 프로그램을 실행해야 하는 및 관련된 코드 데이터를 실행하기 전에 SetDefaultWorkspace 명령에 액세스할. Microsoft Access 사용하지 않는 성공적인 로그온에 필요한 때문입니다 있는 "사용자 이름 ="및"PWD =" 섹션에서는 연결 문자열의. 예를 들어,:
   ' Establish the location of the SYSTEM.MDA files if in another
   ' directory other than the \WINDOWS directory:
   SetDataAccessOption 1, "C:\MYDIR\MYAPP.INI"
   ' Log on to a valid account:
   SetDefaultWorkspace "admin", "<password>"
				
이 작업을 수행할 경우 보안된 Access 데이터베이스를 위해 쿼리가 성공합니다. 그러나 이 프로세스로 인해 이 임시 기술 위한 기본 제공 제한이 없으며 한 Microsoft Access 데이터베이스가 보안 것을 임의(Ad-hoc) 쿼리를 사용하여 액세스할 수 있습니다. 특정 사용자 이름 및 암호 조합 사용하여 세션에서 Microsoft Access 엔진이 초기화되지 일단 이러한 값을 (Visual Basic 실행 프로그램 또는 세션 VB.EXE 환경) 세션 때까지 유지되기 때문에 이것이 끝납니다.

그러나 두 개 이상의 보안된 Microsoft Access 데이터베이스에 대한 쿼리를 액세스할 수 할 경우 가장 좋은 방법은 실제 테이블 보안된 데이터베이스에서 보안된 데이터베이스로 이동할 수 있습니다. 이렇게 하려면 관리자 계정에 대한 암호를 변경해야 합니다 "" 일시적으로 전송 작업 중에. 다음 VBA 코드를 Visdata, 데이터 액세스 샘플에 있는 같은 테이블을 복사할 수 있습니다.

참조

Microsoft Access 보안에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
105990  (http://support.microsoft.com/kb/105990/ ) 정보: 자동으로 Visual Basic 3.0 Handles 보안 방법 설정

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic 3.0 Professional Edition
키워드: 
kbmt kbhowto kbsqlprog KB113701 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
폐기된 기술 자료 문서더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.