Aktualisieren von Daten mit Hilfe einer Ansicht
In Ansichten werden Daten auf die gleiche Art wie in Tabellen aktualisiert. Mit einer Ansicht können Sie auch die Basistabellen der Ansicht aktualisieren. Ansichten werden standardmäßig mit der optimistischen Zeilenpufferung zwischengespeichert. Dieser Modus kann jedoch geändert werden, so dass die tabellenweise Zwischenspeicherung aktiviert ist. Weitere Informationen zum Zwischenspeichern finden Sie in Kapitel 17, Programmieren für gemeinsamen Zugriff.
Die Daten in einer Ansicht können in der Benutzeroberfläche oder mit der Programmiersprache aktualisiert werden. Der erste Schritt hierfür ist, dass Sie die Ansicht aktualisierbar machen. In den meisten Fällen ist die Ansicht mit den standardmäßigen Eigenschaftseinstellungen bereits aktualisierbar, jedoch werden die aktualisierten Daten nicht zur Datenquelle gesendet, bis Sie Visual FoxPro dazu anweisen, indem Sie die SendUpdates-Eigenschaft auf On setzen.
Eine Ansicht verwendet fünf Eigenschaften zum Steuern von Aktualisierungen. Diese Eigenschaften werden in der folgenden Tabelle mit ihren Standardeinstellungen aufgeführt:
Aktualisierungseigenschaften einer Ansicht und die entsprechenden Standardeinstellungen
View-Eigenschaft | Standardeinstellung |
---|---|
Tabellen | Umfasst alle Tabellen, die über aktualisierbare Felder und mindestens ein Primärschlüsselfeld verfügen. |
KeyField | Datenbank-Schlüsselfelder und Remoteprimärschlüssel in der Tabelle |
UpdateName | Tabellenname.Spaltenname für alle Felder |
Updateable | Alle Felder mit Ausnahme der Primärschlüsselfelder |
SendUpdates | Der Standardwert wird vom Standardwert der Arbeitssitzung, normalerweise Falsch (.F.), übernommen. Wird der Wert auf Wahr (.T.) gesetzt, wird dies der neue Standardwert für alle in der Arbeitssitzung erstellten Ansichten. |
CompareMemo | Der Standardwert ist Wahr (.T.), das bedeutet, dass Memofelder in der WHERE-Klausel enthalten sind und zum Erkennen von Aktualisierungskonflikten verwendet werden. |
Während alle sechs Eigenschaften zur Aktualisierung von Daten benötigt werden, dient die SendUpdates-Eigenschaft als "Hauptschalter" zur Kontrolle, ob Aktualisierungen gesendet werden. Während des Entwickelns einer Anwendung möchten Sie vielleicht die SendUpdates-Eigenschaft auf Off setzen und anschließend alle anderen Eigenschaften so konfigurieren, dass Aktualisierungen nur an den Feldern vorgenommen werden, die Sie aktualisieren möchten. Wenn Sie dann zum Testen Ihrer Anwendung bereit sind, können Sie die SendUpdates-Eigenschaft wieder auf On setzen, um Aktualisierungen zu ermöglichen.
In manchen komplexeren Situationen bieten die Standardeinstellungen für die Aktualisierung möglicherweise keine Aktualisierungen für eine Ansicht, die mit der Programmiersprache erstellt wurde. Um Aktualisierungen zu aktivieren, zeigen Sie die Standardeinstellungen aller Aktualisierungseigenschaften an, und stellen Sie diese entsprechend ein. Sie können ferner zusätzliche Eigenschaften wie z. B. UpdateType, WhereType usw. entsprechend den benötigten Voreinstellungen einstellen. Eine vollständige Liste der Ansichtseigenschaften finden Sie unter DBGETPROP( ).
So machen Sie eine Ansicht mit dem Ansichts-Designer aktualisierbar
- Klicken Sie im Ansichts-Designer auf die Registerkarte Aktualisierungskriterien, und überprüfen Sie die Standardeinstellungen.
Die Standardeinstellungen für Ansichten, die im Ansichts-Designer erstellt werden, stellen die Ansicht normalerweise so ein, dass sie aktualisierbar ist. Sie müssen nur noch das Kontrollkästchen SQL-Aktualisierungen senden aktivieren, um die Aktualisierungen zu ermöglichen. Ferner können Sie Tabellen, Felder, die SQL WHERE-Klausel und die Optionen für die Aktualisierung ändern.
So machen Sie durch Einstellen der Aktualisierungseigenschaften der Ansicht eine Ansicht aktualisierbar
- Überprüfen Sie die aktuellen Standardeinstellungen mit dem DISPLAY DATABASE-Befehl, und ändern Sie anschließend mit der DBSETPROP( )-Funktion die Eigenschaften der Ansichtsdefinition entsprechend den Anforderungen.
Im folgenden Beispiel werden die Schritte gezeigt, die Sie zum programmgesteuerten Einstellen der fünf Aktualisierungseigenschaften befolgen sollten:
Anmerkung Die standardmäßigen Ansichtseigenschaften bieten möglicherweise bereits die gesamten Informationen, die zum Aktualisieren Ihrer Ansicht benötigt werden.
Stellen Sie die Tables-Eigenschaft mit mindestens einem Tabellennamen ein.
Wenn Sie z. B. eine Ansicht mit dem Namen
cust_view
, die auf der Tabellecustomer
basiert, haben, können Sie die Tabelle mit der folgenden Funktion einstellen.DBSETPROP('cust_view','View','Tables','customer')
Tipp Wenn eine Tabelle als qualifizierendes Merkmal in der UpdateName-Eigenschaft, jedoch nicht in der Standardliste der Tables-Eigenschaft auftritt, ist für die Tabelle möglicherweise kein Primärschlüsselfeld definiert. Machen Sie die Tabelle aktualisierbar, indem Sie das Feld, das Sie als Schlüsselfeld erachten, zur KeyField-Eigenschaft und anschließend die Tabelle zur Eigenschaftsliste Tables hinzufügen.
Stellen Sie die KeyField-Eigenschaft mit einem oder mehreren lokalen Visual FoxPro-Feldnamen ein, die zusammen einen eindeutigen Schlüssel für die aktualisierbare Tabelle bilden.
Wenn wir dazu dasselbe Beispiel wie oben verwenden, können Sie
cust_id
mit dem folgenden Code zum Schlüsselfeld machen:DBSETPROP('cust_view.cust_id','Field','KeyField',.T.)
Vorsicht Stellen Sie sicher, dass die angegebenen Schlüsselfelder sowohl in der Basistabelle, die aktualisiert werden soll, als auch in der Ansicht einen eindeutigen Schlüssel bilden.
Ordnen Sie mit der UpdateName-Eigenschaft die Felder der Ansicht den entsprechenden Feldern in der Basistabelle zu. Diese Eigenschaft ist besonders dann nützlich, wenn die Ansicht auf einer Verknüpfung zweier Tabellen mit einem gemeinsamen Feldnamen basiert oder wenn den Feldern Aliase in der Ansicht zugewiesen sind. Um die gewünschte Basistabelle zu aktualisieren, ordnen Sie den Namen des Visual FoxPro-Ansichtsfeldes dem Namen des Feldes in der Basistabelle und dem Tabellennamen zu.
DBSETPROP('cust_view.cust_id','Field','UpdateName',; 'customer.cust_id')
Tipp Damit Sie nicht versehentlich Felder doppelt in einer Ansicht einfügen, können Sie die Feldnamen, die Sie für die Ansicht verwenden, in der SQL-Anweisung qualifizieren. Anschließend können Sie mit der Visual FoxPro-Eigenschaft UpdateName der Ansicht die qualifizierten Felder dem richtigen Basistabellen- und Feldnamen zuordnen.
Geben Sie den Gültigkeitsbereich der Felder, die Sie aktualisieren möchten, mit der Updateable-Eigenschaft an. Sie sollten nur die Bereiche der Felder festlegen, die Sie ebenfalls mit der UpdateName-Eigenschaft angegeben haben.
DBSETPROP('cust_view.cust_id','Field','Updateable',; .T.)
Setzen Sie die SendUpdates-Eigenschaft auf Wahr (.T.). Dies ist der "Hauptschalter", der Visual FoxPro anweist, die Aktualisierungen zu erstellen und an alle Tabellen und Felder, die Sie als aktualisierbar definiert haben, zu senden.
DBSETPROP('cust_view','View','SendUpdates',.T.)
Wenn Sie mit DBSETPROP( ) die Eigenschaften einer Ansicht vor der Verwendung der Ansicht festlegen, werden diese Einstellungen in der Datenbank gespeichert und automatisch beim Aktivieren der Ansicht verwendet. Ist die Ansicht aktiviert, können die Eigenschaftseinstellungen der aktiven Ansicht mit CURSORSETPROP( ) verändert werden. Die Eigenschaftseinstellungen, die mit CURSORSETPROP( ) an einer aktiven Ansicht vorgenommen werden, werden nach dem Schließen der Ansicht nicht gespeichert.
Siehe auch
Anzeigen der Struktur einer Ansicht | Aktualisieren mehrerer Tabellen in einer Ansicht | Erstellen von Abfragen | DBGETPROP( ) | Ansichts-Designer | Aktualisieren von Daten