Commenti su HelloData
L'applicazione HelloData illustra le operazioni di base di una tipica applicazione ADO: recupero, esame, modifica e aggiornamento dei dati. Quando si avvia l'applicazione, fare clic sul primo pulsante Recupera dati. Verrà eseguita la subroutine GetData.
GetData
GetData inserisce una stringa di connessione valida in una variabile a livello di modulo m_sConnStr. Per altre informazioni sulle stringhe di connessione, vedere Creazione della stringa di connessione.
Assegnare un gestore errori usando un'istruzione di Visual Basic OnError. Per altre informazioni sulla gestione degli errori in ADO, vedere Gestione degli errori. Viene creato un nuovo oggetto Connection e la proprietà CursorLocation è impostata su adUseClient perché l'esempio HelloData crea un Recordset disconnesso. Ciò significa che non appena i dati sono stati recuperati dall'origine dati, la connessione fisica con l'origine dati viene interrotta, ma è comunque possibile usare i dati memorizzati nella cache in locale nell'oggetto recordset .
Dopo aver aperto la connessione, assegnare una stringa SQL a una variabile (sSQL). Creare quindi un'istanza di un nuovo oggetto Recordset, m_oRecordset1
. Nella riga di codice successiva, apri il Recordset sulla Connessione esistente, utilizzando sSQL
come sorgente del Recordset . È possibile consentire ad ADO di determinare che la stringa SQL passata come origine per il Recordset è una definizione testuale di un comando passando adCmdText nell'argomento finale al metodo Open di Recordset . Questa riga imposta anche il LockType e il CursorType associati al Recordset.
La riga di codice successiva imposta la proprietà MarshalOptions su adMarshalModifiedOnly. MarshalOptions indica quali record devono essere sottoposti a trasferimento al livello intermedio o al server Web. Per altre informazioni sul marshalling, vedere la documentazione COM. Quando usi adMarshalModifiedOnly con un cursore sul lato client (CursorLocation = adUseClient), solo i record modificati sul client vengono riscritti nel tier intermedio. L'impostazione di MarshalOptions su adMarshalModifiedOnly può migliorare le prestazioni perché vengono effettuate operazioni di marshalling su un minor numero di righe.
Disconnettere quindi il recordset impostando la sua proprietà ActiveConnection uguale a Nothing . Per ulteriori informazioni, vedere la sezione "Disconnessione e riconnessione del Recordset" in Aggiornamento e salvataggio permanente dei dati.
Chiudere la connessione all'origine dati e distruggere l'oggetto Connection esistente. In questo modo vengono rilasciate le risorse utilizzate.
Il passaggio finale consiste nell'impostare l'recordset come DataSource per il controllo Microsoft DataGrid nel modulo in modo che sia possibile visualizzare facilmente i dati del Recordset nel modulo.
Fare clic sul secondo pulsante Esaminare i dati. Viene eseguita la subroutine di ExamineData.
EsaminaDati
ExamineData usa vari metodi e proprietà dell'oggetto Recordset per visualizzare informazioni sui dati nell'oggetto Recordset . Indica il numero di record utilizzando la proprietà RecordCount. Esegue un ciclo nell'recordset e stampa il valore della proprietà AbsolutePosition nella casella di testo visualizzata nel form. Inoltre, durante il ciclo, il valore della proprietà segnalibro per il terzo record viene inserito in una variabile variant, vBookmark, per un uso successivo.
La routine torna direttamente al terzo record usando la variabile di segnalibro archiviata in precedenza. La routine chiama la subroutine WalkFields, che esegue un ciclo attraverso la collezione Fields del Recordset e visualizza i dettagli su ogni Field nella collezione.
Infine, ExamineData usa la proprietà Filter dell'Recordset per visualizzare solo i record con un CategoryId uguale a 2. Il risultato dell'applicazione di questo filtro è immediatamente visibile nella griglia di visualizzazione del modulo.
Per altre informazioni sulle funzionalità illustrate nella subroutine ExamineData, vedere Analisi dei dati.
Fare quindi clic sul terzo pulsante Modifica dati. Verrà eseguita la subroutine EditData.
EditData
Quando il codice immette la subroutine di EditData, il recordset viene ancora filtrato in base a CategoryId uguale a 2, in modo che siano visibili solo gli elementi che soddisfano i criteri di filtro. Per prima cosa, viene eseguito un ciclo sull'Recordset e il prezzo di ogni elemento visibile nel Recordset viene aumentato del 10 percento. Il valore del campo prezzo viene modificato impostando la proprietà valore per tale campo uguale a un nuovo importo valido.
Tieni presente che il recordset è disconnesso dall'origine dati. Le modifiche apportate in EditData vengono apportate solo alla copia memorizzata nella cache locale dei dati. Per altre informazioni, vedere Modifica dei dati.
Le modifiche non verranno apportate nell'origine dati finché non si fa clic sul quarto pulsante, Aggiorna dati. Verrà eseguita la subroutine UpdateData.
AggiornaDati
UpdateData rimuove innanzitutto il filtro applicato all'oggetto Recordset . Il codice rimuove e reimposta m_oRecordset1
come DataSource per Microsoft Bound DataGrid nel modulo in modo che il recordset non filtrato venga visualizzato nella griglia.
Il codice verifica quindi se è possibile spostarsi all'indietro nel Recordset usando il metodo Supporta con l'argomento adMovePrevious.
La routine passa al primo record utilizzando il metodo MoveFirst e visualizza i valori originali e correnti del campo utilizzando le proprietà OriginalValue e Value dell'oggetto Field. Queste proprietà, insieme alla proprietà ValoreSottostante (non usata qui), sono descritte in Aggiornamento e persistenza dei dati.
Viene quindi creato un nuovo oggetto Connection e usato per ristabilire una connessione all'origine dati. Per riconnettere l'recordset all'origine dati, impostare la nuova connessione come ActiveConnection per l'oggetto Recordset . Per inviare gli aggiornamenti al server, il codice chiama UpdateBatch nel Recordset .
Se l'aggiornamento batch ha esito positivo, una variabile flag a livello di modulo, m_flgPriceUpdated
, è impostata su True. Questo ricorderà in un secondo momento di pulire tutte le modifiche apportate al database.
Infine, il codice torna al primo record nel recordset e visualizza i valori originali e correnti. I valori sono uguali dopo la chiamata a UpdateBatch.
Per informazioni dettagliate su come aggiornare i dati, incluse le operazioni da eseguire quando i dati nel server cambiano mentre il recordset è disconnesso, vedere Aggiornamento e salvataggio permanente dei dati.
Form_Unload
La subroutine Form_Unload è importante per diversi motivi. In primo luogo, poiché si tratta di un'applicazione di esempio, Form_Unload pulisce le modifiche apportate al database prima dell'uscita dall'applicazione. In secondo luogo, il codice mostra come eseguire un comando direttamente da un oggetto Connection aperto utilizzando il metodo Execute. Viene infine illustrato un esempio di esecuzione di una query che non restituisce righe (query UPDATE) sull'origine dati.