Come creare ADO disconnessi Recordset in VBA / C + + / Java

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 184397
Dichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Sommario
In questo articolo viene illustrata una tecnica per la creazione di un recordset ActiveX Objects(ADO) di dati disconnesso utilizzando Microsoft Visual Basic, Applications Edition (VBA), Microsoft Visual C++ e Microsoft Visual J++. Esistono tre modi per generare un recordset ADO disconnesso e in questo articolo fa riferimento a altri articoli che ne illustrano in dettaglio.
Informazioni
Un recordset disconnesso è una delle potenti funzionalità di ADO in cui stata viene rimosso da un recordset popolato. Il recordset può bemanipulated e nuovamente connessi al database per l'aggiornamento. DataServices remoti (RDS) utilizza questa funzionalità per inviare i recordset tramite uno dei due orDistributed HTTP protocolli di Strumentazione gestione Windows (DCOM, Component Object Model) a un computer remoto, tuttavia, non si è limitati all'utilizzo di Remote Data Service (RDS) al recordset disconnesso di generatea. Seguono le tre tecniche per la generazione di disconnectedrecordsets.
  • Utilizzando il modello a oggetti Remote Data Service.
    Oggetti del lato client RDS possono essere utilizzati per ottenere un oggetto recordset disconnesso, generato da un oggetto business in un computer server che esegue Internet Information Server. L'oggetto business è una che transazione creata o l'oggetto business RDS predefinito, RDSServer DataFactory. Qualsiasi oggetto recordset restituito dai componenti del Server RDS è intrinsecamente disconnesso. Nell'articolo della Microsoft Knowledge Base riportato di seguito vengono illustrate delle tecniche per l'utilizzo di componenti del lato client RDS per restituire un oggetto recordset disconnesso:
    183294 INFO: Tecniche per la restituzione di un oggetto Recordset tramite RDS
  • Utilizzo di ADO per richiamare il servizio dati remoti e restituire un oggetto recordset disconnesso.
    L'unica differenza è invece un'istanza di un oggetto del client RDS per ottenere l'oggetto recordset, è possibile utilizzare una stringa di connessione con l'oggetto Connection di ADO per richiamare i componenti RDS sul lato server per restituire l'oggetto recordset disconnesso. Questa tecnica viene illustrata nel seguente articolo della Microsoft Knowledge Base:
    183628 Modalità di utilizzo di RDS DataFactory tramite il metodo Open ADO Standard
  • Modifica di ADO direttamente alla disconnessione di un oggetto recordset senza l'utilizzo di RDS Server o componenti lato Client.
Questa tecnica di seguito viene illustrata e operazione viene eseguita impostando la proprietà ActiveConnection.

Tra gli oggetti per primari per un oggetto recordset diventare un recordset disconnesso è di utilizzare i cursori sul lato client. In altre parole, deve essere inizializzata CursorLocation su 'adUseClient'.

In Visual Basic, disconnessione di un oggetto recordset può essere eseguita impostando la proprietà ActiveConnection su 'Nothing'. Con C++ e Java, eseguire la stessa operazione impostando la proprietà ActiveConnection su NULL.

Ecco alcuni frammenti di codice che illustrano come questa può essere eseguita nelle diverse lingue:

Recordset disconnessi tramite applicazione di Visual Basic

Dim Conn As ADODB.ConnectionDim Rs As ADODB.Recordset' Create instance of connection object and then open the' connection.Set Conn = New ADODB.ConnectionConn.Open "DSN=SQLServer", "sa", ""' Create instance of recordset object and open the' recordset object against a table.Set Rs = New ADODB.Recordset' Setting the cursor location to client side is important' to get a disconnected recordset.Rs.CursorLocation = adUseClientRs.Open "Select * from Table1", _         Conn, _         ADODB.adOpenForwardOnly, _         ADODB.adLockBatchOptimistic' Disconnect the recordset.Set Rs.ActiveConnection = Nothing' Get the value of one of the fields from the recordset' after disconnection.Dim vv = Rs.Fields(0).ValueMsgBox vConn.Close' Get the value of one of the fields from the recordset' after closing the connection to ensure that you have a' disconnected recordset.v = Rs.Fields(0).ValueMsgBox (v)' Now edit the value and save it.Rs.Fields("au_lname").Value = "NewValue"' Now reopen the connection and attach it to the recordset.  UpdateSet Conn = New ADODB.ConnectionConn.Open "DSN=DBSql", "sa", ""Rs.ActiveConnection = ConnRs.UpdateBatchRs.CloseConn.CloseSet Rs = NothingSet Conn = Nothing				

Recordset disconnessi tramite Visual C++

Nota: In questo esempio di codice utilizza #import in C++.
try{   _RecordsetPtr spRS(__uuidof(Recordset));   _ConnectionPtr spConn(__uuidof(Connection));   // Connect and get recordset.   spConn->Open(OLESTR("dsn=SQLServer"),OLESTR("sa"),                OLESTR(""), -1);   spRS->CursorLocation = adUseClient;   spRS->Open(OLESTR("select * from Table1"),     spConn.GetInterfacePtr(),       adOpenForwardOnly, adLockBatchOptimistic, -1);   // Disassociate the connection from the recordset.   spRS->PutRefActiveConnection(NULL);   // Change the value.   spRS->Fields->Item[0L]->Value = OLESTR("NewValue");   // Re-connect.   spRS->PutRefActiveConnection(spConn);   // Send updates.   spRS->UpdateBatch(adAffectAll);   spRS->Close();   spConn->Close();}catch( _com_error e){   // Do Exception handling.}				
Nel codice precedente anziché utilizzare questo:
spRS->PutRefActiveConnection(NULL);				
È possibile utilizzare il codice riportato di seguito:
var.vt = VT_UNKNOWN;var.punkVal = NULL;spRS->PutActiveConnection(var);				
- oppure -
var.vt = VT_DISPATCH;var.pdispVal = NULL;spRS->PutActiveConnection(var);				

L'oggetto Recordset disconnesso tramite Java

Questa tecnica utilizza ADO classi wrapper generato dalla creazione guidata libreria dei tipi Java.
try{   Conn1   = new msado15.Connection();   Rs1     = new msado15.Recordset();   Conn1.Open( "DSN=SQLServer", "sa", "", -1 );   // Open recordset using the connection above.   Rs1.putCursorLocation(CursorLocationEnum.adUseClient);   Rs1.putActiveConnection( Conn1 );   Variant vv = new Variant("select * from table1");   Variant varSkip = new Variant();   varSkip.noParam();   Rs1.Open(vv,varSkip, CursorTypeEnum.adOpenForwardOnly,        LockTypeEnum.adLockBatchOptimistic,-1);   String str;   Variant var;   Variant v0 = new Variant(0);   var = Rs1.getFields().getItem(v0).getValue();   // Disconnect recordset.   Rs1.putActiveConnection(null);   // Update value in recordset.   var.putString("Smith");   Rs1.getFields().getItem(v0).putValue(var);   // Re-connect.   Rs1.putActiveConnection(Conn1);   // Transfer updated records.   Rs1.UpdateBatch(AffectEnum.adAffectAll);   Rs1.Close();   Conn1.Close();}catch (com.ms.com.ComFailException e){ // Error proc}				
Riferimenti
Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
220152 Esempio: ADOVC1 semplice ADO / VC + + applicazione

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 184397 - Ultima revisione: 07/03/2015 22:26:00 - Revisione: 2.0

Microsoft ActiveX Data Objects 2.7

  • kbcode kbdatabase kbhowto kbmt KB184397 KbMtit
Feedback