Microsoft Access 폼을 ADO 레코드 집합에 바인딩하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 281998 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR281998
고급: 전문적인 코드 작성, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서의 내용은 Microsoft Access 데이터베이스(.mdb)와 Microsoft Access 프로젝트(.adp)에 적용됩니다.

모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 ActiveX 데이터 개체(ADO) Recordset 개체로 바인딩하는 업데이트 가능한 폼을 만드는 데 필요한 사항을 설명합니다.

추가 정보

Microsoft Access 폼을 레코드 집합으로 바인딩하려면 폼의 Recordset 속성을 유효한 데이터 액세스 개체(DAO) 또는 ADO Recordset 개체로 설정해야 합니다.

Recordset 속성은 Microsoft Access 2000에 도입되었으며 이 속성을 사용하여 폼을 DAO 또는 ADO Recordset 개체로 바인딩할 수 있습니다. 그러나 Access 2000의 폼은 ADO 연결이 MSDataShape와 SQL Server OLEDB 공급자를 사용하여 열린 경우에만 업데이트 기능을 지원합니다. Access 2000의 이러한 제한에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
227053 ACC2000: ADO 레코드 집합을 기반으로 하는 폼이 읽기 전용으로 나타난다
Microsoft Access 2002 이상에서는 다른 OLEDB 공급자를 사용하는 ADO 레코드 집합에 바인딩되는 업데이트 가능한 폼을 만들 수 있습니다. 폼은 ADO 레코드 집합으로 바인딩될 때 업데이트 가능한 폼의 여러 가지 일반 요구 사항을 만족해야 합니다. 일반 요구 사항은 다음과 같습니다.
  1. 기본 ADO 레코드 집합은 업데이트 가능해야 합니다.
  2. 레코드 집합은 테이블의 기본 키처럼 고유하게 인덱싱된 하나 이상의 필드를 포함하고 있어야 합니다.
업데이트 기능의 기타 요구 사항은 공급자에 따라 다릅니다. 이 문서에서는 Microsoft SQL Server, Jet, ODBC 및 Oracle OLEDB 공급자를 사용할 때의 기타 요구 사항에 대해 설명합니다.

Microsoft SQL Server의 요구 사항

Microsoft SQL Server 데이터를 사용하는 ADO 레코드 집합으로 폼을 바인딩할 때 업그레이드 기능을 지원하려면 다음 두 가지 주 요구 사항을 만족해야 합니다.
  • ADO 레코드 집합의 연결은 Microsoft Access 10.0 OLEDB 공급자를 서비스 공급자로 사용해야 합니다.
  • ADO 레코드 집합의 연결은 Microsoft SQL Server OLEDB 공급자를 데이터 공급자로 사용해야 합니다.
참고: Microsoft Access 10.0 OLEDB 공급자는 Microsoft Access 전용으로 작성된 OLEDB 서비스 공급자입니다. Microsoft Access 이외의 응용 프로그램에 사용하도록 설계되지 않았으며 다른 응용 프로그램에서는 지원되지 않습니다.

Microsoft Access 내에서 ADO 레코드 집합을 만들 때 ADO 연결을 레코드 집합에서 사용하도록 선택할 수 있습니다. ADO 코드는 Microsoft Access가 Access 프로젝트(ADP) 파일에서 현재 연 SQL Server 데이터베이스에 사용하는 ADO 연결을 공유할 수 있습니다. 또는 다른 SQL Server 데이터베이스에 대한 새 ADO 연결을 프로그래밍 방식으로 만들 수 있습니다.

Microsoft Access에서 사용하는 ADO 연결 공유

Microsoft SQL Server 데이터베이스에 연결된 Access 프로젝트 파일(.adp)을 사용할 경우 ADO 코드는 Microsoft Access에서 사용하는 ADO 연결을 공유할 수 있습니다. 이 연결은 CurrentProject.AccessConnection 속성에 의해 제공됩니다.

다음 예제에서는 Microsoft Access와 ADO 연결을 공유하는 SQL Server 데이터에 기반하는 ADO 레코드 집합으로 폼을 바인딩하는 방법을 보여 줍니다.
  1. NorthwindCS.adp 예제 프로젝트를 엽니다.
  2. 디자인 보기에서 Customers 폼을 엽니다.
  3. 폼의 RecordSource 속성을 지워 폼의 바인딩을 해제합니다.
  4. 폼의 OnOpen 속성을 다음 이벤트 프로시저로 설정합니다.
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Use the ADO connection that Access uses
       Set cn = CurrentProject.AccessConnection
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
    
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. 폼을 저장하고 닫습니다.
  6. 폼 보기에서 Customers 폼을 엽니다.
  7. 폼에 레코드를 추가, 편집 또는 삭제합니다.
폼은 SQL Server 데이터에 기반한 업데이트 가능한 레코드 집합에 바인딩됩니다.

별도의 ADO 연결 열기

이때 SQL Server에 대한 사용자 자신의 ADO 연결을 열고 관리해야 할 수 있습니다. 예를 들어, 사용자 응용 프로그램과는 다른 SQL Server 데이터베이스에 연결된 Access 데이터베이스(.mdb) 또는 Access 프로젝트 파일(.adp)에 코드를 작성하는 경우 이 방법을 사용해야 합니다. 이 방법을 사용할 때 열려 있는 ADO 연결이 더 이상 필요하지 않으면 닫는 것이 좋습니다. 예를 들어, 폼의 UnLoad 이벤트에서 ADO 연결을 닫아야 할 수 있습니다.

다음 예제는 Microsoft SQL Server 데이터베이스에 대한 사용자 자신의 ADO 연결을 열고 폼을 바인딩하는 방법을 보여 줍니다.
  1. Northwind.mdb 예제 데이터베이스를 엽니다.
  2. 디자인 보기에서 Customers 폼을 엽니다.
  3. 폼의 RecordSource 속성을 지워 폼의 바인딩을 해제합니다.
  4. 폼의 OnOpen 속성을 다음 이벤트 프로시저로 설정합니다.
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       'Use the Access 10 and SQL Server OLEDB providers to
       'open the Connection
       'You will need to replace MySQLServer with the name
       'of a valid SQL Server
       With cn
          .Provider = "Microsoft.Access.OLEDB.10.0"
          .Properties("Data Provider").Value = "SQLOLEDB"
          .Properties("Data Source").Value = "MySQLServer"
          .Properties("User ID").Value = "sa"
          .Properties("Password").Value = ""
          .Properties("Initial Catalog").Value = "NorthwindCS"
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. 폼의 UnLoad 이벤트에 다음 코드를 추가합니다.
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  6. 폼을 저장하고 닫습니다.
  7. 폼 보기에서 Customers 폼을 엽니다.
  8. 폼에 레코드를 추가, 편집 또는 삭제합니다.
폼은 SQL Server 데이터에 기반한 업데이트 가능한 레코드 집합에 바인딩됩니다.

Microsoft Jet의 요구 사항

Jet 데이터베이스의 데이터를 사용하는 ADO 레코드 집합에 폼을 바인딩할 수 있습니다. 그러나 DAO를 사용하는 것이 좋습니다. DAO는 Jet에 대해 최적화되어 있으며 Jet 데이터베이스와 함께 사용하면 대개 ADO보다 더 빠르게 수행됩니다.

Microsoft Jet 데이터를 사용하는 ADO 레코드 집합으로 폼을 바인딩할 때 두 가지 다른 방법이 있습니다.
  • 레코드 집합의 ActiveConnection 속성은 Microsoft Access 10.0 OLEDB 서비스 공급자는 물론 Microsoft Jet 4.0 OLEDB Data 공급자를 사용해야 합니다. 그리고 레코드 집합은 서버 쪽 커서가 되어야 합니다.

    또는
  • 레코드 집합의 ActiveConnection 속성은 Microsoft Jet 4.0 OLEDB Data 공급자만 사용해야 합니다. 그리고 레코드 집합은 클라이언트 쪽 커서가 되어야 합니다.
이 문서 앞부분의 "Microsoft SQL Server" 절과 유사하게 Jet 데이터베이스를 사용할 때 레코드 집합이 사용할 ADO 연결을 선택할 수 있습니다. ADO 코드는 Microsoft Access가 현재 열린 Jet 데이터베이스 파일(.mdb)에 사용 중인 ADO 연결을 공유하거나, 별도의 Jet 데이터베이스 파일에 새 ADO 연결을 프로그래밍 방식으로 만들 수 있습니다.

Microsoft Access에서 사용하는 ADO 연결 공유

레코드 집합이 요구하는 데이터가 포함된 동일한 Microsoft Access 데이터베이스(.mdb)에 코드를 작성하는 경우 ADO 코드가 Microsoft Access에서 사용하는 ADO 연결을 공유할 수 있습니다. 이 연결은 CurrentProject.AccessConnection 속성에 의해 제공됩니다. 다음 예제는 Microsoft Access가 현재 사용 중인 ADO 연결을 공유하여 Jet 데이터베이스에 있는 ADO 레코드 집합으로 폼을 바인딩하는 방법을 보여 줍니다.
  1. Northwind.mdb 예제 데이터베이스를 엽니다.
  2. 디자인 보기에서 Customers 폼을 엽니다.
  3. 폼의 RecordSource 속성을 지워 폼의 바인딩을 해제합니다.
  4. 폼의 OnOpen 속성을 다음 이벤트 프로시저로 설정합니다.
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
                    
       Set cn = CurrentProject.AccessConnection
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .CursorLocation = adUseServer
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. 폼을 저장하고 닫습니다.
  6. 폼 보기에서 Customers 폼을 엽니다.
  7. 폼에 레코드를 추가, 편집 또는 삭제합니다.
폼은 Jet 데이터를 사용하는 업데이트 가능한 레코드 집합으로 바인딩됩니다.

별도의 ADO 연결 열기

이때 Jet 데이터베이스에 대한 사용자 고유의 ADO 연결을 열고 관리해야 할 수 있습니다. 예를 들어, 액세스해야 하는 데이터가 들어 있는 데이터베이스와는 다른 데이터베이스에 코드를 작성하는 경우 이 방법을 사용해야 합니다. 이 방법을 사용할 때 열려 있는 ADO 연결이 더 이상 필요하지 않으면 닫는 것이 좋습니다. 예를 들어, 폼의 UnLoad 이벤트에서 ADO 연결을 닫아야 할 수 있습니다.

다음 예제는 Microsoft Jet 데이터베이스에 대한 사용자 고유의 ADO 연결을 열고 폼을 바인딩하는 방법을 보여 줍니다.
  1. 빈 데이터베이스를 새로 만듭니다.
  2. Northwind.mdb 예제 데이터베이스에서 Customers 폼을 가져옵니다.
  3. 디자인 보기에서 Customers 폼을 엽니다.
  4. 폼의 RecordSource 속성을 지워 폼의 바인딩을 해제합니다.
  5. 폼의 OnOpen 속성을 다음 이벤트 프로시저로 설정합니다.
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       With cn
          .Provider = "Microsoft.Access.OLEDB.10.0"
          .Properties("Data Provider").Value = "Microsoft.Jet.OLEDB.4.0"
          .Properties("Data Source").Value = _
              "C:\Program Files\Microsoft Office\Office10" & _
              "\Samples\Northwind.mdb"
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  6. 폼의 UnLoad 이벤트에 다음 코드를 추가합니다.
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  7. 폼을 저장하고 닫습니다.
  8. 폼 보기에서 Customers 폼을 엽니다.
  9. 폼에 레코드를 추가, 편집 또는 삭제합니다.
폼은 Jet 데이터를 사용하는 업데이트 가능한 레코드 집합에 바인딩됩니다.

ODBC의 요구 사항

ODBC 데이터베이스의 데이터를 사용하는 ADO 레코드 집합에 폼을 바인딩할 때 두 가지 기본 요구 사항이 있습니다.
  • 레코드 집합이 사용하는 ADO 연결은 ODBC용 Microsoft OLEDB 공급자를 사용해야 합니다.
  • ADO 레코드 집합은 클라이언트 쪽 커서가 되어야 합니다.
다음 예제는 ODBC 데이터베이스에 대한 ADO 연결을 열고 폼을 바인딩하는 방법을 보여 줍니다.

참고: 이 단계에서는 Northwind.mdb 예제 데이터베이스에 있는 Customers 테이블 구조와 동일한 CUSTOMERS라는 이름의 테이블이 ODBC 데이터베이스에 포함되어 있다고 가정합니다. 또한 백 엔드 데이터베이스에 연결하는 데 필요한 ODBC 드라이버를 사용하는 MyDSN이라는 이름의 ODBC DSN을 만들었다고 가정합니다.
  1. Northwind.mdb 예제 데이터베이스를 엽니다.
  2. 디자인 보기에서 Customers 폼을 엽니다.
  3. 폼의 RecordSource 속성을 지워 폼의 바인딩을 해제합니다.
  4. 폼의 OnOpen 속성을 다음 이벤트 프로시저로 설정합니다.
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
       Dim strConnection As String
    
       strConnection = "ODBC;DSN=MyDSN;UID=sa;PWD=;DATABASE=Northwind"
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       With cn
          .Provider = "MSDASQL"
          .Properties("Data Source").Value = strConnection
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .CursorLocation = adUseClient
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. 폼의 UnLoad 이벤트에 다음 코드를 추가합니다.
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  6. 폼을 저장하고 닫습니다.
  7. 폼 보기에서 Customers 폼을 엽니다.
  8. 폼에 레코드를 추가, 편집 또는 삭제합니다.
폼은 ODBC 데이터에 기반한 업데이트 가능한 레코드 집합으로 바인딩됩니다.

Oracle의 요구 사항

Oracle 데이터베이스의 데이터를 사용하는 ADO 레코드 집합으로 폼을 바인딩할 때 두 가지 기본 요구 사항이 있습니다.
  • 레코드 집합이 사용하는 ADO 연결은 Oracle용 Microsoft OLEDB 공급자를 사용해야 합니다.
  • ADO 레코드 집합은 클라이언트 쪽 커서가 되어야 합니다.
다음 예제는 Oracle 데이터베이스에 대한 ADO 연결을 열고 폼을 바인딩하는 방법을 보여 줍니다.

참고: 이 단계에서는 Northwind.mdb 예제 데이터베이스의 Customers 테이블과 구조가 동일한 CUSTOMERS라는 테이블이 Oracle 데이터베이스에 포함되어 있다고 가정합니다.
  1. Northwind.mdb 예제 데이터베이스를 엽니다.
  2. 디자인 보기에서 Customers 폼을 엽니다.
  3. 폼의 RecordSource 속성을 지워 폼의 바인딩을 해제합니다.
  4. 폼의 OnOpen 속성을 다음 이벤트 프로시저로 설정합니다.
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       With cn
          .Provider = "MSDAORA"
          .Properties("Data Source").Value = "MyOracleServer"
          .Properties("User ID").Value = "username"
          .Properties("Password").Value = "password"          
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .CursorLocation = adUseClient
    
          .Open 
       End With
      
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. 폼의 UnLoad 이벤트에 다음 코드를 추가합니다.
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  6. 폼을 저장하고 닫습니다.
  7. 폼 보기에서 Customers 폼을 엽니다.
  8. 폼에 레코드를 추가, 편집 또는 삭제합니다.
폼은 Oracle 데이터에 기반한 업데이트 가능한 레코드 집합으로 바인딩됩니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
281784 Connection 속성과 AccessConnection 속성의 차이
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 281998 - 마지막 검토: 2005년 9월 16일 금요일 - 수정: 4.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
키워드:?
kbado kbdatabinding kbdatabase kbdesign kbprogramming kbhowto KB281998

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com