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