Freigeben über


HelloData-Details

Gilt für: Access 2013, Office 2013

The HelloData application steps through the basic operations of a typical ADO application: getting, examining, editing, and updating data. When you start the application, click the first button, Get Data. This will run the GetData() subroutine.

GetData

GetData platziert eine gültige Verbindungszeichenfolge in einer Variablen auf Modulebene , m_sConnStr. For more information about connection strings, see Creating the Connection String.

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

Weisen Sie nach dem Öffnen der Verbindung einer Variablen (sSQL) eine SQL-Zeichenfolge zu. Instanziieren Sie dann ein neues Recordset-Objekt , m_oRecordset1 . Öffnen Sie in der nächsten Codezeile das Recordset über die vorhandene Verbindung, und übergeben Sie dabei . Öffnen Sie in der nächsten Codezeile das Recordset über die vorhandene Verbindung, und übergeben Sie sSQL als Quelle des Recordsets. Sie unterstützen ADO bei der Bestimmung, dass die SQL-Zeichenfolge, die Sie als Quelle für das Recordset übergeben haben, eine Textdefinition eines Befehls ist, indem Sie adCmdText im letzten Argument an die Recordset Open-Methode übergeben. Diese Zeile legt auch die LockType - und CursorType-Elemente fest, die dem Recordset zugeordnet sind.

Mit der nächsten Codezeile wird die MarshalOptions -Eigenschaft mit adMarshalModifiedOnly gleichgesetzt. MarshalOptions gibt an, welche Datensätze auf die mittlere Ebene (oder auf den Webserver) gemarshallt werden sollen. Weitere Informationen zum Marshalling finden Sie in der Dokumentation zu COM. Bei Verwendung von adMarshalModifiedOnly mit einem clientseitigen Cursor (CursorLocation = adUseClient) werden nur Datensätze, die auf dem Client geändert wurden, zurück in die mittlere Ebene geschrieben. Wenn MarshalOptions auf adMarshalModifiedOnly festgelegt wird, wird möglicherweise die Leistung verbessert, da weniger Zeilen gemarshallt werden müssen.

Trennen Sie anschließend das Recordset -Objekt, indem Sie die zugehörige ActiveConnection -Eigenschaft auf Nothing setzen. Weitere Informationen finden Sie unter Trennen und Wiederherstellen der Verbindung für das Recordset-Objekt in "Kapitel 5: Aktualisieren und Speichern von Daten".

Schließen Sie die Verbindung mit der Datenquelle, und löschen Sie das vorhandene Connection-Objekt. Damit geben Sie die von diesem Objekt belegten Ressourcen frei.

In einem letzten Schritt wird das Recordset -Objekt als DataSource für Microsoft DataBound-Rastersteuerelement auf dem Formular festgelegt, sodass die Daten aus dem Recordset -Objekt problemlos auf dem Formular angezeigt werden können.

Click the second button, Examine Data. This runs the ExamineData subroutine.

ExamineData

ExamineData uses various methods and properties of the Recordset object to display information about the data in the Recordset. It reports the number of records by using the RecordCount property. It loops through the Recordset and prints the value of the AbsolutePosition property in the display text box on the form. Auch während der Schleife wird der Wert der Bookmark-Eigenschaft für den dritten Datensatz zur späteren Verwendung in einer Variantenvariablen vBookmark platziert.

The routine navigates directly back to the third record using the bookmark variable that it stored earlier. The routine calls the WalkFields subroutine, which loops through the Fields collection of the Recordset and displays details about each Field in the collection.

Finally, ExamineData uses the Filter property of the Recordset to screen for only those records with a CategoryId equal to 2. The result of applying this filter is immediately visible in the display grid on the form.

For more information about the functionality shown in the ExamineData subroutine, see Chapter 3: Examining Data.

Next, click the third button, Edit Data. This will run the EditData subroutine.

EditData

When the code enters the EditData subroutine, the Recordset is still filtered on CategoryId equal to 2, so only those items that meet the filter criteria are visible. It first loops through the Recordset and increases the price of each visible item in the Recordset by 10 percent. The value of the Price field is changed by setting the Value property for that field equal to a new, valid amount.

Remember that the Recordset is disconnected from the data source. The changes made in EditData are made only to the locally cached copy of the data. For more information, see Chapter 4: Editing Data.

The changes will not be made on the data source until you click the fourth button, Update Data. This will run the UpdateData subroutine.

UpdateData

UpdateData first removes the filter that has been applied to the Recordset. Der Code entfernt und setzt es als DataSource für das Microsoft Bound DataGrid im Formular zurück, sodass das ungefilterte Recordset im Raster angezeigt wird.

Der Code überprüft als Nächstes, ob Sie sich im Recordset -Objekt mithilfe der Supports -Methode mit dem adMovePrevious -Argument zurück bewegen können.

Die Routine wechselt mithilfe der MoveFirst-Methode zum ersten Datensatz und zeigt die ursprünglichen und aktuellen Werte des Felds mithilfe der OriginalValue - und Value-Eigenschaften des Field-Objekts an. Diese Eigenschaften werden zusammen mit der UnderlyingValue-Eigenschaft (hier nicht verwendet) in Kapitel 5: Aktualisieren und Beibehalten von Daten erläutert.

Im nächsten Schritt wird ein neues Connection -Objekt erstellt und verwendet, um mit der Datenquelle erneut eine Verbindung herzustellen. Sie verbinden das Recordset-Objekt erneut mit der Datenquelle, indem Sie das neue Connection-Objekt als ActiveConnection für das Recordset-Objekt festlegen. Um die Aktualisierungen an den Server zu senden, ruft der Code UpdateBatch auf dem Recordset-Objekt auf.

Wenn die Batchaktualisierung erfolgreich ist, wird die Flagvariable auf Modulebene auf True festgelegt. This will remind you later to clean up all changes made to the database.

In einem letzten Schritt kehrt der Code zum ersten Datensatz im Recordset -Objekt zurück und zeigt den ursprünglichen und aktuellen Wert an. Diese beiden Werte sind nach dem Aufruf von UpdateBatch identisch.

Ausführlichere Informationen zum Aktualisieren von Daten sowie Anweisungen zur Vorgehensweise, wenn Daten auf dem Server geändert werden, während das Recordset-Objekt getrennt ist, finden Sie in Kapitel 5: Aktualisieren und Speichern von Daten.

Form_Unload

The Form_Unload subroutine is important for several reasons. First, because this is a sample application, Form_Unload cleans up the changes made to the database before the application exits. Second, the code shows how a command can be executed directly from an open Connection object using the Execute method. Schließlich wird ein Beispiel für die Ausführung einer Nicht-Zeilenrückgabeabfrage (eine UPDATE-Abfrage) für die Datenquelle gezeigt.