Freigeben über


Kommentare zu HelloData

Die HelloData-Anwendung führt die grundlegenden Vorgänge einer typischen ADO-Anwendung durch: Abrufen, Untersuchen, Bearbeiten und Aktualisieren von Daten. Wenn Sie die Anwendung starten, klicken Sie auf die erste Schaltfläche, Daten abrufen. Dadurch wird die GetData-Unterroutine ausgeführt.

DatenAbrufen

GetData platziert eine gültige Verbindungszeichenfolge in eine Variable auf Modulebene, m_sConnStr. Weitere Informationen zu Verbindungszeichenfolgen finden Sie unter Erstellen der Verbindungszeichenfolge.

Weisen Sie einen Fehlerhandler mithilfe einer Visual Basic-OnError--Anweisung zu. Weitere Informationen zur Fehlerbehandlung in ADO finden Sie unter Fehlerbehandlung. Ein neues Connection-Objekt wird erstellt, und die CursorLocation-Eigenschaft wird auf adUseClient festgelegt, da im HelloData-Beispiel ein getrenntes Recordseterstellt wird. Dies bedeutet, dass die physische Verbindung mit der Datenquelle unterbrochen wird, sobald die Daten aus der Datenquelle abgerufen wurden, aber Sie können weiterhin mit den Daten arbeiten, die lokal in Ihrem Recordset-Objekt zwischengespeichert werden.

Nachdem die Verbindung geöffnet wurde, weisen Sie einer Variablen (sSQL) eine SQL-Zeichenfolge zu. Erstellen Sie dann eine Instanz eines neuen Recordset--Objekts, m_oRecordset1. Öffnen Sie in der nächsten Codezeile das -Recordset über die vorhandene -Verbindungund übergeben Sie sSQL als Quelle für das -Recordset. Sie helfen ADO bei der Bestimmung, dass die SQL-Zeichenfolge, die Sie als Quelle für das Recordset-Objekt übergeben haben, eine Textdefinition eines Befehls ist, indem Sie adCmdText- im letzten Argument an die Recordset Open-Methode übergeben. Diese Zeile legt auch dem Recordset-zugeordnete LockType- und CursorType- fest.

Die nächste Codezeile legt die MarshalOptions-Eigenschaft auf adMarshalModifiedOnlyfest. MarshalOptions- gibt an, welche Datensätze auf die Middle-Tier (oder Webserver) übertragen werden sollen. Weitere Informationen zum Marshalling finden Sie in der COM-Dokumentation. Wenn Sie adMarshalModifiedOnly mit einem clientseitigen Cursor (CursorLocation = adUseClient) verwenden, werden nur Datensätze, die auf dem Client geändert wurden, in die mittlere Ebene zurückgeschrieben. Das Festlegen von MarshalOptions auf adMarshalModifiedOnly kann die Leistung verbessern, da weniger Zeilen übertragen werden.

Trennen Sie als Nächstes das Recordset, indem Sie die ActiveConnection-Eigenschaft auf Nichtsfestlegen. Weitere Informationen finden Sie im Abschnitt "Auftrennen und Wiederverbinden des Recordsets" in Aktualisieren und Speichern von Daten.

Schließen Sie die Verbindung mit der Datenquelle, und zerstören Sie das vorhandene Connection-Objekt. Dadurch werden die ressourcen freigegeben, die sie verbraucht haben.

Der letzte Schritt besteht darin, das Recordset als DataSource- für das Microsoft DataGrid-Steuerelement im Formular festzulegen, sodass Sie die Daten aus dem Recordset- im Formular problemlos anzeigen können.

Klicken Sie auf die zweite Schaltfläche, Untersuchen Sie Daten. Dadurch wird die ExamineData-Unterroutine ausgeführt.

ExamineData

ExamineData verwendet verschiedene Methoden und Eigenschaften des Recordset Objekts, um Informationen zu den Daten im Recordset-anzuzeigen. Sie meldet die Anzahl von Datensätzen mithilfe der RecordCount--Eigenschaft. Es iteriert über das Recordset und gibt den Wert der AbsolutePosition-Eigenschaft im Anzeige-Textfeld im Formular aus. Auch während der Schleife wird der Wert der Bookmark-Eigenschaft für den dritten Datensatz in einer Variantenvariable gespeichert, vBookmark-, zur späteren Verwendung.

Die Routine navigiert direkt zurück zum dritten Datensatz mithilfe der Textmarkenvariable, die sie zuvor gespeichert hat. Die Routine ruft die WalkFields-Unterroutine auf, die die Fields -Auflistung des Recordset durchläuft und Details zu den einzelnen Field in der Auflistung anzeigt.

Schließlich verwendet ExamineData die Eigenschaft Filter des Recordset, um nur die Datensätze mit einer CategoryId gleich 2 herauszufiltern. Das Ergebnis der Anwendung dieses Filters ist sofort im Anzeigeraster des Formulars sichtbar.

Weitere Informationen zu den Funktionen, die in der ExamineData-Unterroutine angezeigt werden, finden Sie unter Untersuchen von Daten.

Klicken Sie als Nächstes auf die dritte Schaltfläche, Daten bearbeiten. Dadurch wird die EditData--Unterroutine ausgeführt.

DatenBearbeiten

Wenn der Code die EditData--Unterroutine eingibt, wird das Recordset- weiterhin nach CategoryId gleich 2 gefiltert, sodass nur die Elemente, die den Filterkriterien entsprechen, sichtbar sind. Es durchläuft zunächst das Recordset- und erhöht den Preis jedes sichtbaren Elements im Recordset um 10 Prozent. Der Wert des Felds Preis wird geändert, indem die eigenschaft Value für dieses Feld auf einen neuen gültigen Betrag festgelegt wird.

Denken Sie daran, dass das Recordset- von der Datenquelle getrennt ist. Die Änderungen, die in EditData vorgenommen wurden, werden nur an der lokal zwischengespeicherten Kopie der Daten vorgenommen. Weitere Informationen finden Sie unter Bearbeiten von Daten.

Die Änderungen werden erst an der Datenquelle vorgenommen, wenn Sie auf die vierte Schaltfläche klicken, Daten aktualisieren. Dadurch wird die UpdateData-Unterroutine ausgeführt.

DatenAktualisierung

UpdateData entfernt zuerst den Filter, der auf das Recordsetangewendet wurde. Der Code entfernt und setzt m_oRecordset1 als DataSource- für das Microsoft Bound DataGrid im Formular zurück, sodass das ungefilterte Recordset- im Raster angezeigt wird.

Anschließend überprüft der Code, ob Sie mithilfe der Supports-Methode mit dem Argument adMovePrevious rückwärts im Recordset- navigieren können.

Die Routine wechselt mithilfe der MoveFirst-Methode zum ersten Datensatz und zeigt die ursprünglichen und aktuellen Werte des Felds mithilfe der eigenschaften OriginalValue und Value des Field-Objekts an. Diese Eigenschaften, zusammen mit der UnderlyingValue-Eigenschaft (die hier nicht verwendet wird), werden in Aktualisierung und Speicherung von Datenerläutert.

Als Nächstes wird ein neues Connection-Objekt erstellt und verwendet, um eine Verbindung mit der Datenquelle wiederherzustellen. Sie verbinden das Recordset erneut mit der Datenquelle, indem Sie die neue Connection als ActiveConnection- für das Recordset-festlegen. Um die Updates an den Server zu senden, ruft der Code UpdateBatch für das Recordsetauf.

Wenn die Batchaktualisierung erfolgreich ist, wird eine Flagvariable auf Modulebene m_flgPriceUpdatedauf "True" festgelegt. Dadurch werden Sie später daran erinnert, alle Änderungen zu bereinigen, die an der Datenbank vorgenommen wurden.

Schließlich wechselt der Code zurück zum ersten Datensatz im Recordset- und zeigt die ursprünglichen und aktuellen Werte an. Die Werte sind nach dem Aufruf von UpdateBatchidentisch.

Ausführliche Informationen dazu, wie Daten aktualisiert werden, einschließlich der erforderlichen Schritte, wenn Daten auf dem Server geändert werden, während das Recordset getrennt ist, finden Sie unter Aktualisieren und Speichern von Daten.

Form_Unload

Die Form_Unload-Unterroutine ist aus mehreren Gründen wichtig. Erstens bereinigt Form_Unload, da es sich um eine Beispielanwendung handelt, die Änderungen, die an der Datenbank vorgenommen wurden, bevor die Anwendung beendet wird. Zweitens zeigt der Code, wie ein Befehl direkt aus einem geöffneten Connection-Objekt mithilfe der Execute-Methode ausgeführt werden kann. Schließlich zeigt es ein Beispiel für die Ausführung einer Abfrage ohne Zeilenrückgabe (eine UPDATE-Abfrage) für die Datenquelle.