Jak powiązać formularze programu Microsoft Access zestawy rekordów ADO

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 281998 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Zaawansowane: Wymaga ekspertów kodowania, interoperacyjności i wielodostępne umiejętności.

Ten artykuł dotyczy bazy danych programu Microsoft Access (.mdb) i Projekt programu Microsoft Access (.adp).

Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule opisano, co jest wymagane do utworzenia można aktualizować formularz, który jest powiązany z obiektów danych ActiveX (ADO) Zestaw rekordów obiekt.

Więcej informacji

Aby związać formularz programu Microsoft Access zestaw rekordów, należy Ustaw Zestaw rekordów właściwości formularza w celu prawidłowego obiektów DAO (Data Access) lub obiektów ADO Zestaw rekordów obiekt.

W Zestaw rekordów Właściwość została wprowadzona w programie Microsoft Access 2000, a dzięki temu możesz powiązać formularze DAO lub ADO Zestaw rekordów obiekty. Jednak formularze w programie Access 2000 obsługuje tylko updateability Jeśli połączenia ADO jest otwierana przy użyciu MSDataShape i OLE DB programu SQL Server dostawcy. Aby uzyskać dodatkowe informacje na ten temat ograniczenia w programie Access 2000, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu bazy wiedzy Microsoft Knowledge Base:
227053 ACC2000: Formularze oparte na zestawy rekordów ADO są tylko do odczytu
W programie Microsoft Access 2002 lub nowszym można utworzyć można aktualizować formularz, który jest powiązany z zestawu rekordów ADO, który używa innych OLEDB dostawcy. Formularz musi spełniać kilka ogólne wymagania dla formularza jest można aktualizować, gdy jest on związany z zestawu rekordów ADO. Wymagania ogólne są:
  1. Podstawowego zestawu rekordów ADO musi być aktualizowana.
  2. Zestaw rekordów musi zawierać jedno lub więcej pól, które są jednoznacznie indeksowane, takie jak klucz podstawowy tabeli.
Inne wymogi dla updateability różnią się między różnymi dostawcy. W tym artykule opisano, co inne wymagania są podczas używania dostawcy Microsoft SQL Server, Jet, ODBC i OLEDB programu Oracle.

Wymagania dla Microsoft SQL Server

Istnieją dwa główne wymagania dotyczące obsługi updateability po związać formularz zestawu rekordów ADO, korzystającego z Microsoft SQL Server dane:
  • Połączenie zestawu rekordów ADO, należy użyć programu Microsoft Dostawca OLE DB dostępu 10.0 jako jego usługodawca.
  • Połączenie zestawu rekordów ADO, należy użyć programu Microsoft SQL Dostawca OLE DB serwera jako jego dostawcy danych.
UWAGA: Dostawca OLE DB programu Microsoft Access 10.0 jest usługą OLE DB Dostawca napisane specjalnie przeznaczone do użycia w programie Microsoft Access. Nie było przeznaczone do użycia w aplikacjach innych niż Microsoft Access i nie jest obsługiwane w innych aplikacjach.

Podczas tworzenia zestawów rekordów ADO w programie Microsoft Access mają wybór co do których będzie połączenia ADO używany przez zestaw rekordów. Kodu ADO można udostępniać połączenia ADO, Aktualnie otwarte w bazie danych SQL Server korzysta z programu Microsoft Access Plik projektu (ADP); lub można programowo utworzyć nowe obiekty ADO połączenie z innej bazy danych programu SQL Server.

Udostępnianie połączenia ADO używana przez program Microsoft Access

Jeśli używasz pliku projektu programu Access (.adp) połączony Microsoft SQL Server bazy danych, jest możliwe dla kodu ADO udostępnić Połączenia ADO przy użyciu programu Microsoft Access. Objawia się to połączenie w CurrentProject.AccessConnection Właściwość.

Poniższy przykład ilustruje sposób związać formularz zestawu rekordów ADO, oparty na danych programu SQL Server, który udostępnia Połączenia ADO z programem Microsoft Access.
  1. Otwórz przykładowy projekt NorthwindCS.adp.
  2. Umożliwia otwarcie formularza Klienci w widoku Projekt.
  3. Wyczyść RecordSource właściwości formularza w celu usunięcia powiązania formularza.
  4. Ustaw OnOpen Właściwość formularza na następującą procedurę zdarzenia:
    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. Zapisz i zamknij formularz.
  6. Umożliwia otwarcie formularza Klienci w widoku Formularz.
  7. Dodawanie, edytowanie lub usuwanie rekordu w formularzu.
Należy zauważyć, że formularz jest powiązany z można aktualizować rekordów, który jest na podstawie danych programu SQL Server.

Otwarcie oddzielnego połączenia ADO

W pewnym momencie może być konieczne otwieranie i zarządzanie własne ADO połączenia z serwerem SQL. Na przykład należy użyć tej metody, jeśli podczas pisania kodu w bazie danych programu Access (.mdb) lub projekt programu Access plik (.adp), który był podłączony do innej bazy danych programu SQL Server niż sieci aplikacja. Należy zauważyć, że kiedy użyjesz tej metody Microsoft zaleca Zamknij połączenia ADO otwierane, gdy jest już potrzebne. Dla przykład można zamknąć połączenia ADO w zdarzenie UnLoad w formularzu.

Poniższy przykład ilustruje sposób otwierania własne ADO połączenie z bazą danych Microsoft SQL Server i powiązać formularza:
  1. Otwórz przykładową bazę danych Northwind.mdb.
  2. Umożliwia otwarcie formularza Klienci w widoku Projekt.
  3. Wyczyść RecordSource właściwości formularza w celu usunięcia powiązania formularza.
  4. Ustaw OnOpen Właściwość formularza na następującą procedurę zdarzenia:
    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. Dodaj następujący kod do zdarzenie UnLoad formularza:
    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. Zapisz formularz, a następnie Zamknij.
  7. Umożliwia otwarcie formularza Klienci w widoku Formularz.
  8. Dodawanie, edytowanie lub usuwanie rekordu w formularzu.
Należy zauważyć, że formularz jest powiązany z można aktualizować rekordów, który jest na podstawie danych programu SQL Server.

Wymagania dotyczące aparatu Microsoft Jet

Mimo że jest to możliwe związać formularz do zestawu rekordów ADO używa danych z bazy danych Jet, firma Microsoft zaleca, aby używać obiektów DAO Zamiast tego. DAO jest bardzo dobrze optymalizowana dla aparatu Jet i wykonuje zwykle szybciej niż ADO gdy używana z bazy danych Jet.

Kiedy należy związać formularz ADO zestaw rekordów przy użyciu danych Microsoft Jet, istnieją dwie możliwości:
  • W zestawie rekordów ActiveConnection Właściwość musi używać usługi OLE DB programu Microsoft Access 10.0 Dostawca, jak również dostawca danych OLE DB programu Microsoft Jet 4.0 i zestaw rekordów musi być kursora po stronie serwera.

    - lub -
  • W zestawie rekordów ActiveConnection Właściwość muszą używać tylko dostawcy danych OLE DB programu Microsoft Jet 4.0 i zestaw rekordów musi być kursora po stronie klienta.
Podobne do sekcji "Microsoft SQL Server" wcześniej w tym artykuł, mają wybór co do których ADO połączenie będzie używane przez zestaw rekordów przy użyciu bazy danych Jet. Kodu ADO można udostępniać połączenia ADO Program Microsoft Access używa aparatu Jet pliku bazy danych (.mdb) aktualnie otwarte lub można programowo utworzyć nowego połączenia ADO do oddzielnych Jet plik bazy danych.

Udostępnianie połączenia ADO używana przez program Microsoft Access

Podczas pisania kodu w tej samej bazie danych programu Microsoft Access (.mdb), który zawiera dane, które wymaga zestawu rekordów jest możliwe kodu ADO do udostępniania połączenia ADO, przy użyciu programu Microsoft Access. To połączenie jest udostępniane przez CurrentProject.AccessConnection Właściwość. Poniższy przykład ilustruje sposób związać formularz do zestawu rekordów ADO w bazie danych Jet przez Udostępnianie połączenia ADO, Program Microsoft Access używa obecnie:
  1. Otwórz przykładową bazę danych Northwind.mdb.
  2. Umożliwia otwarcie formularza Klienci w widoku Projekt.
  3. Wyczyść RecordSource właściwości formularza w celu usunięcia powiązania formularza.
  4. Ustaw OnOpen Właściwość formularza na następującą procedurę zdarzenia:
    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. Zapisz formularz, a następnie Zamknij.
  6. Umożliwia otwarcie formularza Klienci w widoku Formularz.
  7. Dodawanie, edytowanie lub usuwanie rekordu w formularzu.
Należy zauważyć, że formularz jest powiązany z można aktualizować rekordów, który jest przy użyciu danych aparatu Jet.

Otwarcie oddzielnego połączenia ADO

W pewnym momencie może być konieczne otwieranie i zarządzanie własne ADO połączenie z bazą danych Jet. Na przykład należy użyć tej metody podczas pisania kodu w bazie danych, który jest odseparowany od bazy danych zawierający dane, które chcesz uzyskać dostęp. Należy zauważyć, że to użycia podejście, firma Microsoft zaleca zamknięcie połączenia ADO że otwierany, gdy jest już potrzebne. Na przykład należy zamknąć ADO połączenia w przypadku zwalniania formularza.

Poniższy przykład Pokazuje, jak otworzyć połączenia ADO własne bazy danych Microsoft Jet i powiązać formularza:
  1. Utwórz nową, pustą bazę danych.
  2. Importowanie formularza Klienci z przykładowej bazy danych Northwind.mdb.
  3. Umożliwia otwarcie formularza Klienci w widoku Projekt.
  4. Wyczyść RecordSource właściwości formularza w celu usunięcia powiązania formularza.
  5. Ustaw OnOpen Właściwość formularza na następującą procedurę zdarzenia:
    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. Dodaj następujący kod do zdarzenie UnLoad formularza:
    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. Zapisz formularz, a następnie Zamknij.
  8. Umożliwia otwarcie formularza Klienci w widoku Formularz.
  9. Dodawanie, edytowanie lub usuwanie rekordu w formularzu.
Należy zauważyć, że formularz jest powiązany z można aktualizować rekordów, który jest przy użyciu danych aparatu Jet.

Wymagania dla ODBC

Kiedy związać formularz do zestawu rekordów ADO, który używa danych z Baza danych ODBC, istnieją dwa główne wymagania:
  • Należy użyć połączenia ADO, który jest używany przez zestaw rekordów Dostawca Microsoft OLE DB dla ODBC.
  • Zestaw rekordów ADO musi być kursora po stronie klienta.
Poniższy przykład ilustruje sposób otwierania obiektów ADO połączenie z bazą danych ODBC i powiązać formularza.

UWAGA: Tych kroków założono, że baza danych ODBC zawiera tabelę o nazwie Klienci, którzy jest identyczną strukturę tabeli Klienci w próbce bazy danych Northwind.mdb. Ponadto zakłada, że zostały utworzone źródło danych ODBC DSN o nazwie MyDSN, który używa sterownika ODBC, które trzeba połączyć back-end Baza danych.
  1. Otwórz przykładową bazę danych Northwind.mdb.
  2. Umożliwia otwarcie formularza Klienci w widoku Projekt.
  3. Wyczyść RecordSource właściwości formularza w celu usunięcia powiązania formularza.
  4. Ustaw OnOpen Właściwość formularza na następującą procedurę zdarzenia:
    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. Dodaj następujący kod do zdarzenie UnLoad formularza:
    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. Zapisz formularz, a następnie Zamknij.
  7. Umożliwia otwarcie formularza Klienci w widoku Formularz.
  8. Dodawanie, edytowanie lub usuwanie rekordu w formularzu.
Należy zauważyć, że formularz jest powiązany z można aktualizować rekordów, który jest na podstawie danych ODBC.

Wymagania dla programu Oracle

Kiedy związać formularz do zestawu rekordów ADO, który używa danych z Baza danych Oracle, istnieją dwa główne wymagania:
  • Należy użyć połączenia ADO, który jest używany przez zestaw rekordów Dostawca Microsoft OLE DB dla programu Oracle.
  • Zestaw rekordów ADO musi być kursora po stronie klienta.
Poniższy przykład ilustruje sposób otwierania obiektów ADO połączenie z bazą danych Oracle i powiązać formularza.

UWAGA: Tych kroków założono, że baza danych Oracle zawiera tabelę o nazwie Klienci, którzy jest identyczną strukturę tabeli Klienci w przykładową bazę danych Northwind.mdb.
  1. Otwórz przykładową bazę danych Northwind.mdb.
  2. Umożliwia otwarcie formularza Klienci w widoku Projekt.
  3. Wyczyść RecordSource właściwości formularza w celu usunięcia powiązania formularza.
  4. Ustaw OnOpen Właściwość formularza na następującą procedurę zdarzenia:
    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. Dodaj następujący kod do zdarzenie UnLoad formularza:
    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. Zapisz formularz, a następnie Zamknij.
  7. Umożliwia otwarcie formularza Klienci w widoku Formularz.
  8. Dodawanie, edytowanie lub usuwanie rekordu w formularzu.
Należy zauważyć, że formularz jest powiązany z można aktualizować rekordów, który jest na podstawie danych Oracle.

Materiały referencyjne

Aby uzyskać dodatkowe informacje kliknij następujący artykuł: numer w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
281784Różnica między Połączenia i właściwości AccessConnection
Produkty innych firm, które są omówione w tym artykule są wytwarzane przez producentów, które są niezależne od Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych lub w przeciwnym razie dotyczącej wydajności lub niezawodności tych produktów.

Właściwości

Numer ID artykułu: 281998 - Ostatnia weryfikacja: 17 września 2011 - Weryfikacja: 3.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Słowa kluczowe: 
kbado kbdatabinding kbdatabase kbdesign kbprogramming kbhowto kbmt KB281998 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:281998

Przekaż opinię

 

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