REPLACE-Befehl

Aktualisiert Datensätze einer Tabelle.

REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
   [, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope]
   [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
   [NOOPTIMIZE]

Parameter

  • FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ... ]
    Gibt an, dass die Daten in FieldName1 von dem Wert im Ausdruck eExpression1 ersetzt werden; dass die Daten in FieldName2 vom Wert im Ausdruck eExpression2 ersetzt werden usw.

    Wenn der Wert des Ausdrucks länger ist als die Breite eines numerischen Felds, passt REPLACE den Wert durch folgende Schritte an:

    • Zuerst schneidet REPLACE Dezimalstellen ab und rundet den verbleibenden Dezimalteil des Feldes.
    • Passt der Wert noch nicht, wird der Feldinhalt in wissenschaftlicher Notation gespeichert.
    • Passt der Wert noch nicht, ersetzt REPLACE den Feldinhalt durch Sternchen.
  • ADDITIVE
    Fügt Ersetzungen für Memofelder am Ende der betreffenden Felder an. ADDITIVE gilt nur für Ersetzungen in Memofeldern. Wenn Sie ADDITIVE weglassen, wird das Memofeld mit dem Wert des Ausdrucks überschrieben.

  • Scope
    Gibt einen Bereich von Datensätzen an, die ersetzt werden sollen. Nur die Datensätze des Bereichs werden ersetzt. Die Bereichsklauseln sind: ALL, NEXT nRecords, RECORD nRecordNumber und REST. Weitere Informationen zu Bereichsklauseln finden Sie unter Bereichsklauseln und Überblick über die Sprache. Der Standardbereich für REPLACE ist der aktuelle Datensatz (NEXT 1).

  • FOR lExpression1
    Gibt an, dass die genannten Felder nur in Datensätzen ersetzt werden, für die lExpression1 gleich Wahr (.T.) ist. Mit FOR können Sie gezielt bestimmte Datensätze ersetzen und dabei diejenigen herausfiltern, die Sie nicht ersetzen möchten.

    Rushmore optimiert eine REPLACE FOR-Abfrage, wenn lExpression1 ein optimierbarer Ausdruck ist. Die beste Leistung erreichen Sie, indem Sie in der FOR-Klausel einen optimierbaren Ausdruck verwenden.

    Weitere Informationen finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

  • WHILE lExpression2
    Bezeichnet eine Bedingung, nach der so lange Felder ersetzt werden, wie die Auswertung des logischen Ausdrucks lExpression2 Wahr (.T.) ergibt.

  • IN nWorkArea
    Gibt den Arbeitsbereich der Tabelle an, in der die Datensätze aktualisiert werden.

  • IN cTableAlias
    Gibt den Alias der Tabelle an, in der die Datensätze aktualisiert werden.

    Wenn Sie nWorkArea und cTableAlias nicht angeben, werden die Datensätze in der Tabelle des derzeit ausgewählten Arbeitsbereichs aktualisiert.

  • NOOPTIMIZE
    Deaktiviert die Rushmore-Optimierung.

    Weitere Informationen finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

Hinweise

REPLACE ersetzt Daten in einem Feld durch den Wert eines Ausdrucks. Bei Feldern in nicht ausgewählten Arbeitsbereichen muss der Alias vorangestellt werden.

Anmerkung   Wird die IN-Klausel nicht angegeben, erfolgt keine Ersetzung, wenn der Datensatzzeiger auf das Ende der Datei in dem aktuellen Arbeitsbereich zeigt und Sie ein Feld in einem anderen Arbeitsbereich angeben.

Beispiel

Im folgenden Beispiel wird eine Tabelle mit 10 Datensätzen erstellt. Mit REPLACE werden Zufallswerte in ein Feld geschrieben. MIN( ) und MAX( ) zeigen die höchsten und niedrigsten Werte in der Tabelle an.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records,
   APPEND BLANK
   REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR

CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN 
   gnMinimum = MIN(gnMinimum, cValue)
   gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value

Siehe auch

GATHER | INSERT - SQL | SCATTER