Associazione di maschere di Microsoft Access a recordset ADO

Traduzione articoli Traduzione articoli
Identificativo articolo: 281998 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato precedentemente pubblicato con il codice di riferimento I281998
Utenti esperti: sono richieste conoscenze avanzate di gestione di codice, interoperabilitÓ e funzioni multiutente.

Le informazioni contenute in questo articolo si applicano ai database di Microsoft Access (mdb) e ai progetti di Microsoft Access (adp).

Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritta la procedura necessaria per creare una maschera aggiornabile associata a un oggetto Recordset ADO (ActiveX Data Objects).

Informazioni

Per associare una maschera di Microsoft Access a un recordset, Ŕ necessario impostare la proprietÓ Recordset della maschera su un oggetto Recordset DAO (Data Access Objects) o ADO valido.

La proprietÓ Recordset Ŕ stata introdotta con Microsoft Access 2000 e consente di associare maschere a oggetti Recordset DAO o ADO. In Access 2000, tuttavia, le maschere sono aggiornabili solo se la connessione ADO viene aperta utilizzando i provider OLEDB di MSDataShape e SQL Server. Per ulteriori informazioni su questo limite di Access 2000, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
227053 ACC2000: Le maschere basate sui recordset ADO sono di sola lettura
Microsoft Access 2002 e le versioni successive consentono di creare una maschera aggiornabile associata a un recordset ADO che utilizza altri provider OLEDB. ╚ necessario che la maschera soddisfi una serie di requisiti generali affinchÚ sia aggiornabile quando Ŕ associata a un recordset ADO. Tali requisiti generali sono i seguenti:
  1. Il recordset ADO sottostante deve essere aggiornabile.
  2. Il recordset deve contenere uno o pi¨ campi indicizzati in modo univoco, ad esempio una chiave primaria di una tabella.
Gli altri requisiti di aggiornabilitÓ sono diversi a seconda dei provider. In questo articolo vengono descritti i requisiti dei provider OLEDB Microsoft SQL Server, Jet, ODBC e Oracle.

Requisiti per Microsoft SQL Server

Esistono due requisiti di aggiornabilitÓ principali quando di associa una maschera a un recordset ADO che utilizza dati di Microsoft SQL Server:
  • La connessione del recordset ADO recordset deve utilizzare il provider OLEDB di Microsoft Access 10.0 come provider di servizi.
  • La connessione del recordset ADO deve utilizzare il provider OLEDB di Microsoft SQL Server come provider di dati.
NOTA: il provider OLEDB di Microsoft Access 10.0 Ŕ un provider di servizi OLEDB scritto in modo specifico per Microsoft Access. Non Ŕ stato sviluppato per l'impiego in applicazioni diverse da Microsoft Access e non Ŕ supportato da altre applicazioni.

Quando si creano recordset ADO in Microsoft Access Ŕ possibile scegliere la connessione ADO che il recordset utilizzerÓ. Il codice ADO potrÓ condividere la connessione ADO utilizzata da Microsoft Access per il database di SQL Server correntemente aperto nel file di progetto di Access (ADP),oppure sarÓ possibile creare in fase di programmazione una nuova connessione ADO a un database di SQL Server diverso.

Condivisione della connessione ADO utilizzata da Microsoft Access

Se si utilizza un file di progetto di Access (adp) connesso a un database di Microsoft SQL Server, Ŕ possibile che il codice ADO condivida la stessa connessione ADO utilizzata da Microsoft Access. La connessione Ŕ esposta dalla proprietÓ CurrentProject.AccessConnection.

Nell'esempio che segue viene spiegato come associare una maschera a un recordset ADO basato su dati di SQL Server che condividono una connessione ADO con Microsoft Access.
  1. Aprire il progetto di esempio NorthwindCS.adp.
  2. Aprire la maschera Clienti in visualizzazione Struttura.
  3. Deselezionare la proprietÓ RecordSource della maschera per eseguirne la dissociazione.
  4. Impostare la proprietÓ OnOpen della maschera sulla seguente routine evento:
    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. Salvare e chiudere la maschera.
  6. Aprire la maschera Clienti in visualizzazione Maschera.
  7. Aggiungere, modificare o eliminare un record della maschera.
Si noti che la maschera Ŕ associata a un recordset aggiornabile basato su dati SQL Server.

Apertura di una connessione ADO separata

Pu˛ essere necessario a un certo punto aprire e aggiornare la connessione ADO a SQL Server, ad esempio nel caso in cui si scriva codice in un database di Access (mdb) o in un file di progetto di Access (adp) connessi a un database SQL Server diverso rispetto all'applicazione utilizzata. Si noti che quando si adotta questa prassi Microsoft consiglia di chiudere la connessione ADO precedentemente aperta quando non Ŕ pi¨ necessaria. ╚ ad esempio consigliabile chiudere la connessione ADO nell'evento UnLoad della maschera.

Nell'esempio seguente viene spiegato come aprire la connessione ADO a un database di Microsoft SQL Server e come associarvi una maschera:
  1. Aprire il database di esempio Northwind.mdb.
  2. Aprire la maschera Clienti in visualizzazione Struttura.
  3. Deselezionare la proprietÓ RecordSource della maschera per eseguirne la dissociazione.
  4. Impostare la proprietÓ OnOpen della maschera sulla seguente routine evento:
    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. Aggiungere il codice riportato di seguito all'evento UnLoad della maschera:
    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. Salvare la maschera, quindi chiuderla.
  7. Aprire la maschera Clienti in visualizzazione Maschera.
  8. Aggiungere, modificare o eliminare un record della maschera.
Si noti che la maschera Ŕ associata a un recordset aggiornabile basato su dati SQL Server.

Requisiti per Microsoft Jet

Pur essendo possibile associare una maschera a un recordset ADO che utilizza dati di un database Jet, Microsoft consiglia di utilizzare DAO. DAO Ŕ particolarmente indicato per Jet e di solito ha prestazioni pi¨ veloci di ADO quando lo si utilizza con un database Jet.

Quando si associa una maschera a un recordset ADO che utilizza dati di Microsoft Jet, esistono due alternative:
  • La proprietÓ ActiveConnection del recordset deve utilizzare il provider di servizi OLEDB di Microsoft Access 10.0 nonchÚ il provider di dati OLEDB di Microsoft Jet 4.0 e il recordset deve essere un cursore sul lato server.

    Oppure
  • La proprietÓ ActiveConnection del recordset deve utilizzare solo il provider di dati OLEDB Microsoft Jet 4.0 e il recordset deve essere un cursore sul lato client.
Similmente a questo descritto nella sezione su Microsoft SQL Server di questo articolo, Ŕ possibile scegliere la connessione ADO che il recordset utilizzerÓ quando si serve di un database Jet. Il codice ADO potrÓ condividere la connessione ADO utilizzata da Microsoft Access per il file di database di Jet (mdb) correntemente aperto, oppure sarÓ possibile creare in fase di programmazione una nuova connessione ADO a un file di database di Jet separato.

Condivisione della connessione ADO utilizzata da Microsoft Access

Se si scrive il codice nello stesso database di Microsoft Access (mdb) che contiene i dati di cui ha bisogno il recordset, Ŕ possibile che il codice ADO condivida la stessa connessione ADO utilizzata da Microsoft Access. La connessione Ŕ esposta dalla proprietÓ CurrentProject.AccessConnection. Nell'esempio che segue viene spiegato come associare una maschera a un recordset ADO in un database Jet condividendo la connessione ADO correntemente utilizzata da Microsoft Access:
  1. Aprire il database di esempio Northwind.mdb.
  2. Aprire la maschera Clienti in visualizzazione Struttura.
  3. Deselezionare la proprietÓ RecordSource della maschera per eseguirne la dissociazione.
  4. Impostare la proprietÓ OnOpen della maschera sulla seguente routine evento:
    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. Salvare la maschera, quindi chiuderla.
  6. Aprire la maschera Clienti in visualizzazione Maschera.
  7. Aggiungere, modificare o eliminare un record della maschera.
Si noti che la maschera Ŕ associata a un recordset aggiornabile che utilizza dati Jet.

Apertura di una connessione ADO separata

Pu˛ essere necessario a un certo punto aprire e aggiornare la connessione ADO a un database Jet, ad esempio se si scrive il codice in un database diverso da quello che contiene i dati ai quali Ŕ necessario accedere. Si noti che quando si adotta questa prassi Microsoft consiglia di chiudere la connessione ADO precedentemente aperta quando non Ŕ pi¨ necessaria. ╚ ad esempio consigliabile chiudere la connessione ADO nell'evento UnLoad della maschera.

Nell'esempio seguente viene spiegato come aprire la connessione ADO a un database di Microsoft Jet e come associarvi una maschera:
  1. Creare un nuovo database vuoto.
  2. Importare la maschera Clienti dal database di esempio Northwind.mdb.
  3. Aprire la maschera Clienti in visualizzazione Struttura.
  4. Deselezionare la proprietÓ RecordSource della maschera per eseguirne la dissociazione.
  5. Impostare la proprietÓ OnOpen della maschera sulla seguente routine evento:
    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. Aggiungere il codice riportato di seguito all'evento UnLoad della maschera:
    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. Salvare la maschera, quindi chiuderla.
  8. Aprire la maschera Clienti in visualizzazione Maschera.
  9. Aggiungere, modificare o eliminare un record della maschera.
Si noti che la maschera Ŕ associata a un recordset aggiornabile che utilizza dati Jet.

Requisiti per ODBC

Quando si associa una maschera a un recordset ADO che utilizza dati di un database ODBC, esistono due principali requisiti:
  • La connessione ADO utilizzata dal recordset deve servirsi del provider OLEDB Microsoft per ODBC.
  • Il recordset ADO deve essere un cursore sul lato client.
Nell'esempio seguente viene spiegato come aprire la connessione ADO a un database ODBC e come associarvi una maschera:

NOTA: questa procedura presuppone che il database ODBC contenga una tabella denominata CLIENTI con struttura identica alla tabella Clienti del database di esempio Northwind.mdb. Presuppone inoltre che sia stato creato un DSN ODBC denominato "DSN" che utilizza il driver ODBC necessario per connettersi al database esterno.
  1. Aprire il database di esempio Northwind.mdb.
  2. Aprire la maschera Clienti in visualizzazione Struttura.
  3. Deselezionare la proprietÓ RecordSource della maschera per eseguirne la dissociazione.
  4. Impostare la proprietÓ OnOpen della maschera sulla seguente routine evento:
    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. Aggiungere il codice riportato di seguito all'evento UnLoad della maschera:
    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. Salvare la maschera, quindi chiuderla.
  7. Aprire la maschera Clienti in visualizzazione Maschera.
  8. Aggiungere, modificare o eliminare un record della maschera.
Si noti che la maschera Ŕ associata a un recordset aggiornabile basato su dati ODBC.

Requisiti per Oracle

Quando si associa una maschera a un recordset ADO che utilizza dati di un database Oracle, esistono due principali requisiti:

  • La connessione ADO utilizzata dal recordset deve servirsi del provider OLEDB Microsoft per Oracle.
  • Il recordset ADO deve essere un cursore sul lato client.
Nell'esempio seguente viene spiegato come aprire la connessione ADO a un database Oracle e come associarvi una maschera:

NOTA: questa procedura presuppone che il database Oracle contenga una tabella denominata CLIENTI con struttura identica alla tabella Clienti del database di esempio Northwind.mdb.
  1. Aprire il database di esempio Northwind.mdb.
  2. Aprire la maschera Clienti in visualizzazione Struttura.
  3. Deselezionare la proprietÓ RecordSource della maschera per eseguirne la dissociazione.
  4. Impostare la proprietÓ OnOpen della maschera sulla seguente routine evento:
    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. Aggiungere il codice riportato di seguito all'evento UnLoad della maschera:
    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. Salvare la maschera, quindi chiuderla.
  7. Aprire la maschera Clienti in visualizzazione Maschera.
  8. Aggiungere, modificare o eliminare un record della maschera.
Si noti che la maschera Ŕ associata a un recordset aggiornabile basato su dati Oracle.

Riferimenti

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
281784 ACC2002: Differenze tra le proprietÓ Connection e AccessConnection
I prodotti di terze parti citati in questo articolo sono forniti da produttori indipendenti. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilitÓ di tali prodotti.

ProprietÓ

Identificativo articolo: 281998 - Ultima modifica: martedý 4 novembre 2003 - Revisione: 4.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Chiavi:á
kbhowto KB281998
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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