Freigeben über


CURSORSETPROP( )-Funktion

Setzt Einstellungen der Eigenschaften einer/s Visual FoxPro-Tabelle oder Cursors.

CURSORSETPROP(cProperty [, eExpression] [, cTableAlias | nWorkArea])

Rückgabewerte

Logisch

Parameter

  • cProperty
    Gibt die zu setzende Tabellen- oder Cursoreigenschaft an. Beachten Sie, dass Sie bei einer Visual FoxPro-Tabelle nur die Buffering-Eigenschaft angeben können.

  • eExpression
    Gibt den Wert für die durch cProperty spezifizierte Eigenschaft an. Wenn Sie eExpression nicht angeben, wird die Eigenschaft auf ihren Standardwert gesetzt.

    Die folgende Tabelle führt die für cProperty angebbaren Eigenschaften samt einer Beschreibung der für eExpression möglichen Werte auf.

    Eigenschaft Werte für eExpression
    BatchUpdateCount* Bei gepufferten Tabellen die Anzahl der Aktualisierungsanweisungen, die an die Remotedatenquelle geschickt werden. Die Standardeinstellung ist 1. Durch die Anpassung dieses Wertes kann die Aktualisierungsleistung erheblich verbessert werden.
    Buffering 1 - (Standard) Deaktiviert Zeilen- und Tabellenpufferung. Das Sperren von Datensätzen und das Schreiben von Daten ist identisch mit früheren FoxPro-Versionen.

    2 – Pessimistische Zeilenpufferung wird aktiviert

    3 – Optimistische Zeilenpufferung wird aktiviert.

    4 – Pessimistische Tabellenpufferung wird aktiviert.

    5 – Optimistische Tabellenpufferung wird aktiviert. Für alle Zwischenspeicherungsmodi (Pufferungsmodi), mit Ausnahme von 1 (OFF), muss SET MULTILOCKS auf ON gesetzt sein.

    CompareMemo .T. – Memofelder (Typ Memo, Objekt oder Bild) werden in der WHERE-Klausel für Aktualisierungen berücksichtigt. .F. – Memofelder werden nicht in der WHERE-Klausel für Aktualisierungen berücksichtigt.
    FetchAsNeeded .T. – Datensätze werden bei Bedarf abgerufen. .F. – Bei Remotesichten wird die Anzahl der abgerufenen Datensätze durch die MaxRecord-Eigenschaft bestimmt. Bei lokalen Sichten werden alle Datensätze abgerufen.
    FetchMemo* .T. – Memofelder werden mit den Ergebnissen der Sicht abgerufen. .F. – Memofelder mit den Ergebnissen der Sicht werden nicht abgerufen.
    FetchSize* Anzahl der Zeilen, die kontinuierlich aus dem Resultset der Remotetabelle abgerufen werden. Der Standardwert ist 100 Datensätze. Das gesamte Resultset (soweit durch MaxRecords zulässig) wird abgerufen, wenn FetchSize auf -1 gesetzt ist.
    KeyFieldList Durch Kommas getrennte Liste der Schlüsselfelder für den Cursor. Keine Standardeinstellung. Damit Aktualisierungen möglich sind, müssen Sie eine Liste mit Feldnamen angeben.
    MaxRecords* Die maximale Anzahl an Zeilen, die bei Rückgabe von Resultsets abgerufen werden. Der Standardwert ist -1 (alle Zeilen werden zurückgegeben). Ein Wert von 0 bewirkt, dass die Sicht zwar ausgeführt wird, aber keine Ergebnisse abgerufen werden.
    Prepared .T. – SQL-Anweisungen werden für folgende Aufrufe der REQUERY( )-Funktion vorbereitet. Mit REQUERY( ) können die Daten einer SQL-Sicht erneut abgerufen werden. Weitere Informationen zum Vorbereiten von SQL-Anweisungen finden Sie unter SQLPREPARE( ).
    SendUpdates .T. – Bei einer Aktualisierung durch die Sicht (Ansicht) wird eine SQL-Aktualisierungsabfrage zum Aktualisieren der Tabellen abgesetzt. .F. – Zum Aktualisieren von Tabellen wird keine SQL-Aktualisierungsabfrage abgesetzt.
    Tables Durch Kommas getrennte Liste der Namen der Remotetabellen. Keine Standardeinstellung. Damit Aktualisierungen möglich sind, müssen Sie eine Liste mit Tabellennamen angeben.
    UpdatableFieldList Durch Kommas getrennte Liste der Felder der Sicht. Diese Liste kann Felder aus lokalen und aus Remotetabellen enthalten. Damit Aktualisierungen möglich sind, müssen Sie eine Liste der Felder angeben.
    UpdateNameList Durch Kommas getrennte Liste der Remotefeldnamen und der dem Cursor zugewiesenen lokalen Feldnamen. Mit Hilfe dieser Option können Sie gültige Visual FoxPro-Feldnamen für Felder im Cursor angeben, die ungültige Visual FoxPro-Feldnamen tragen.
    UpdateType 1 – Bisherige Daten werden mit den neuen Daten aktualisiert (Standardeinstellung).

    2 – Beim Aktualisieren werden die alten Daten gelöscht und die neuen eingefügt.

    UseMemoSize* Mindestgröße (in Bytes), bei der Ergebnisspalten in Memofeldern zurückgegeben werden. Ist die Breite einer Ergebnisspalte größer als der Wert von UseMemoSize, so wird die Ergebnisspalte in ein Memofeld geschrieben. Der Wert von UseMemoSize kann zwischen 1 und 255 liegen, der Standardwert ist 255.
    WhereType Die WHERE-Klausel für Aktualisierungen in Remotetabellen. WhereType kann einen der folgenden Werte annehmen:

    1 oder DB_KEY (aus FOXPRO.H). Die WHERE-Klausel zum Aktualisieren von Remotetabellen besteht nur aus den mit der KeyFieldList-Eigenschaft angegebenen Schlüsselfeldern.

    2 oder DB_KEYANDUPDATABLE (aus FOXPRO.H). Die WHERE-Klausel zum Aktualisieren von Remotetabellen besteht aus den mit der KeyFieldList-Eigenschaft angegebenen Schlüsselfeldern und allen aktualisierbaren Feldern.

    3 oder DB_KEYANDMODIFIED (aus FOXPRO.H) (Standard). Die WHERE-Klausel zum Aktualisieren von Remotetabellen besteht aus den mit der KeyFieldList-Eigenschaft angegebenen Schlüsselfeldern und allen anderen Feldern, die aktualisiert werden.

    4 oder DB_KEYANDTIMESTAMP (aus FOXPRO.H). Die WHERE-Klausel zum Aktualisieren von Remotetabellen besteht aus den mit der KeyFieldList-Eigenschaft angegebenen Schlüsselfeldern und einem Vergleich der Zeitstempel.

    * Diese Eigenschaft ist nur für Remotesichten von Bedeutung; das Setzen dieser Eigenschaft hat für lokale Sichten keine Auswirkungen. Sie können diese Eigenschaft jedoch schon für lokale Sichten setzen, die auf einen Remoteserver exportiert werden sollen.

  • cTableAlias
    Gibt den Alias der Tabelle oder des Cursors an, deren oder dessen Eigenschafteneinstellung gesetzt wird.

  • nWorkArea
    Gibt den Arbeitsbereich der Tabelle oder des Cursors an, deren oder dessen Eigenschaft gesetzt wird. Wenn Sie für nWorkArea0 angeben, setzt CURSORSETPROP( ) die von allen folgenden Tabellen und Cursorn verwendete Umgebungseinstellung.

    Anmerkung   Das Puffern wird nicht auf Tabellen angewendet, die implizit geöffnet werden, z. B. unter Verwendung von SQL INSERT/UPDATE/DELETE-Befehlen.

Hinweise

CURSORSETPROP( ) gibt den Wert Wahr (.T.) zurück, wenn Visual FoxPro die angegebene Eigenschaft erfolgreich einstellt. Visual FoxPro erzeugt einen Fehler, wenn die angegebene Eigenschaft nicht eingestellt werden kann.

Die Einstellung der mit CURSORSETPROP( ) gesetzten Buffering-Eigenschaft legt fest, wie Visual FoxPro die Sperrung von Datensätzen und die Aktualisierungspufferung behandelt. Weitere Informationen zum Sperren von Datensätzen und zur Aktualisierungspufferung finden Sie unter Zwischenspeichern von Daten.

Die Einstellung der mit CURSORSETPROP( ) gesetzten WhereType-Eigenschaft legt fest, wie Aktualisierungen von Remotetabellen vorgenommen werden. Weitere Informationen zum Aktualisieren von Remotetabellen finden Sie unter Datenbankerstellung.

Die mittels SQLSETPROP( ) vorgenommene Einstellung der FetchSize-Eigenschaft eines Cursors kann mit CURSORSETPROP( ) außer Kraft gesetzt werden. Normalerweise wird diese Eigenschaft vom Verbindungshandle des Cursors geerbt.

Die aktuellen Eigenschafteneinstellungen einer Visual FoxPro-Tabelle oder eines für eine Tabelle erstellten Cursors können mit CURSORGETPROP( ) ermittelt werden.

Wenn CURSORSETPROP( ) ohne die optionalen Argumente cTableAlias oder nWorkArea eingegeben wird, werden die Eigenschaften der Tabelle oder des Cursors eingestellt, der im aktuellen Arbeitsbereich geöffnet ist.

Beispiel

Im folgenden Beispiel sehen Sie, wie Sie mittels CURSORSETPROP( ) die optimistische Tabellenpufferung aktivieren können. Als Notwendigkeit für die Tabellenpufferung wird MULTILOCKS auf ON gesetzt. Die Tabelle customer der Datenbank testdata wird geöffnet, und der Zwischenspeicherungsmodus wird durch CURSORSETPROP( ) auf "5 - Optimistische Tabellenpufferung" gesetzt. Der Ergebnis der Operation wird in einem Meldungsfeld angezeigt.

CLOSE DATABASES
CLEAR

SET MULTILOCKS ON
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table

* Set buffering mode and store logical result
lSuccess=CURSORSETPROP("Buffering", 5, "customer")
IF lSuccess = .T.
   =MESSAGEBOX("Operation successful!",0,"Operation Status")
ELSE
   =MESSAGEBOX("Operation NOT successful!",0,"Operation Status")
ENDIF

Siehe auch

CURSORGETPROP( ) | SET MULTILOCKS | SQLGETPROP( ) | SQLSETPROP( )