CISA FotoGallery

Statistiche

Tot. visite contenuti : 923121
Home Articoli tecnici Forms Associazione di maschere a recordset ADO

Associazione di maschere a recordset ADO

Questo Articolo è tratto dalla KB di Microsoft:

http://support.microsoft.com/kb/281998


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.

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.