Aktualisieren der Onlinedaten
Nachdem Sie die Offlinearbeit beendet haben, können Sie die Daten auf dem Server mit Hilfe derselben Transaktionen aktualisieren, die Sie auch für Onlinedaten verwenden. Beim Arbeiten mit Remotedaten sollten Sie folgende Tipps beachten:
- Führen Sie einzelne Datensatzaktualisierungen mit automatischen Transaktionen durch.
- Führen Sie Batchaktualisierungen mit manuellen Transaktionen durch.
- Fügen Sie ggf. Code zum Feststellen von Aktualisierungskonflikten ein, erstellen Sie ein Protokoll der Konflikte, und beseitigen Sie diese.
Bevor Sie die Aktualisierungen verarbeiten können, müssen Sie mit dem USE-Befehl und dem Schlüsselwort ONLINE die Verbindung zur Hostdatenbank wiederherstellen. Nach Ausführung des Befehls versucht Visual FoxPro, die Hostdatenbank mit den in der Ansicht gespeicherten Informationen zur Datenquelle zu finden. Besteht die Verbindung zur Datenbank, können Sie mit TABLEUPATE( ) die in den Offlinedaten gespeicherten Aktualisierungen verarbeiten.
Um sicherzustellen, dass die Verbindungsinformationen, unabhängig vom Speicherort der Host- oder Ansichtstabellen, richtig sind, müssen Sie die Syntax für Verbindungszeichenfolgen anstelle einer benannten Verbindung verwenden.
Batchaktualisierungen für Datensätze in lokalen Tabellen
Für Batchaktualisierungen in lokalen Tabellen sollten Sie manuelle Transaktionen verwenden. Hierbei können die gesamten Batchaktualisierungen in einer einzigen Transaktion statt in einer Reihe von separaten Transaktionen durchgeführt werden.
Aktualisieren lokaler Tabellen mit Offlineansichten
Code | Kommentar |
---|---|
|
Wiederverbinden mit dem Host und Öffnen der Ansicht |
|
Überprüfen auf Aktualisierungskonflikte und ggf. Aktualisieren |
Batchaktualisierungen für Datensätze in Remotetabellen
Verwenden Sie für Batchaktualisierungen in Remotetabellen manuelle Transaktionen. Beginnen Sie mit TABLEUPDATE( ), und beenden Sie die Verarbeitung mit SQLCOMMIT( ) oder SQLROLLBACK( ).
Zum Aufbau der Verbindung für das manuelle Durchführen der Transaktionen müssen Sie CURSORGETPROP( ) für den Ansichtscursor verwenden, um die Verbindungskennung zu erhalten. Setzen Sie anschließend die Transactions-Eigenschaft auf den manuellen Modus.
Im folgenden Code ist die aktuelle Verbindungskennung für die Ansicht myview
in hConn1
gespeichert. hConn1
wird verwendet, um die Transactions-Eigenschaft auf den Wert 2 für manuelle Transaktionen zu setzen.
hConn1 = CURSORGETPROP("CONNECTHANDLE","myview") ;
SQLSETPROP(hConn1,"TRANSACTIONS",2)
Nachdem die Verbindung für die Aktualisierungen eingerichtet ist, können Sie mit TABLEUPDATE( ) Ihre Transaktionen verarbeiten.
Befinden sich die Hosttabellen auf einem Remoteserver (z. B. SQL-Server), können Sie den folgenden Code als Richtlinie verwenden.
Aktualisieren von Remotetabellen mit Offlineansichten
Code | Kommentar |
---|---|
|
Wiederverbinden mit dem Host und Öffnen der Ansicht |
|
Einrichten der Verbindungen für die Ansichten zum manuellen Verarbeiten der Transaktionen |
|
Behandeln von Aktualisierungen und Aktualisierungskonflikten |
Aktualisieren eines Datensatzes
Wenn Sie nur eine Zeile aktualisieren, können Sie automatische Transaktionen dazu verwenden. Da jede Anweisung zum Verarbeiten eines Aktualisierungs-, Lösch- oder Einfügevorgangs als separate Transaktion behandelt wird, ist ein Zurücksetzen vorheriger Transaktionsanweisungen nicht möglich.
USE customerview ONLINE EXCLUSIVE
GO TO 3
IF TABLEUPDATE (0, .F. workarea)
* conflict handling code
ENDIF
Tipp Verwenden Sie zum Aktualisieren eines einzelnen Datensatzes in einer lokalen Tabelle die GETNEXTMODIFIED( )-Funktion.
Abbrechen von Offlineaktualisierungen
Sollten Sie sich entscheiden, die Offlinedaten zu löschen und die Ansicht wieder in eine Onlineansicht umzuwandeln, können Sie dazu die DROPOFFLINE( )-Funktion verwenden.
So brechen Sie Offlineaktualisierungen ab
- Verwenden Sie die DROPOFFLINE( )-Funktion mit dem Namen der Ansicht.
Überprüfen Sie die Rückgabewerte. Wahr (.T.) gibt an, dass der Befehl erfolgreich ausgeführt wurde, während Falsch (.F.) angibt, dass die Ansicht vor Erteilung des Befehls nicht geschlossen wurde.
Der folgende Code löscht alle Änderungen, die an der Datenuntermenge in myview
vorgenommen wurden. Die Ansicht bleibt Bestandteil der Datenbank; die aktuelle Datenmenge der Ansicht wird jedoch gelöscht.
DROPOFFLINE("myview")
Sie können Offlinedatensätze löschen, jedoch nicht die Befehle PACK, ZAP oder INSERT für eine Offlineansicht verwenden.
Siehe auch
Optimieren der Leistungsfähigkeit von Ansichten | Erstellen von Abfragen | Einstellen der maximalen Anzahl von zu ladenden Datensätzen | USE | TABLEUPATE( ) | SQLCOMMIT( )