Freigeben über


COPY TO ARRAY-Befehl

Kopiert Daten aus der aktuellen Tabelle in ein Array.

COPY TO ARRAY ArrayName   
[FIELDS FieldList   | FIELDS LIKE Skeleton   | FIELDS EXCEPT Skeleton]
   [Scope] [FOR lExpression1] [WHILE lExpression2]   [NOOPTIMIZE]

Parameter

  • ArrayName
    Der Name des Arrays, in das die Daten kopiert werden.

  • FIELDS FieldList
    Gibt an, dass nur die Felder, deren Namen in FieldList aufgeführt sind, in das Array kopiert werden. Wenn Sie die Klausel FIELDS FieldList nicht angeben, werden alle Felder in das Array kopiert, sofern es über genügend Spalten verfügt.

  • FIELDS LIKE Skeleton
    Legt fest, dass Felder, die mit dem Feldplatzhalter Skeleton übereinstimmen, in das Array kopiert werden.

  • FIELDS EXCEPT Skeleton
    Legt fest, dass alle Felder außer denen, die mit dem Feldplatzhalter Skeleton übereinstimmen, in das Array kopiert werden.

    Der Feldplatzhalter Skeleton akzeptiert Platzhalter. Um z. B. anzugeben, dass alle Felder beginnend mit den Buchstaben A und P in das Array kopiert werden, geben Sie folgendes ein:

    COPY TO ARRAY aMyArray FIELDS LIKE A*,P*
    

    Die LIKE-Klausel kann mit der EXCEPT-Klausel kombiniert werden:

    COPY TO ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*
    
  • Scope
    Der Datensatzbereich, der in das Array kopiert wird. Nur die Datensätze, die im angegebenen Bereich liegen, werden kopiert. Die Bereichsklauseln sind: ALL, NEXT nRecords, RECORD nRecordNumber und REST.

    Weitere Informationen zu Bereichsklauseln finden Sie unter Bereichsklauseln.

    Der Standardbereich für COPY TO ARRAY umfasst alle Sätze.

  • FOR lExpression1
    Gibt an, dass nur die Datensätze in das Array kopiert werden, die die logische Bedingung lExpression1 erfüllen. Mit FOR können Sie bestimmte Sätze in ein Array kopieren und nicht erwünschte Sätze herausfiltern.

    Mit Rushmore wird eine COPY TO ARRAY-Abfrage mit FOR lExpression1 optimiert, wenn lExpression1 ein optimierbarer Ausdruck ist. Die beste Leistung erreichen Sie, indem Sie in der FOR-Klausel einen optimierbaren Ausdruck verwenden.

    Weitere Informationen zu mit Hilfe von Rushmore optimierbaren Ausdrücken finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

  • WHILE lExpression2
    Datensätze werden in das Array kopiert, solange die Auswertung des logischen Ausdrucks lExpression2 Wahr (.T.) ergibt.

  • NOOPTIMIZE
    Die Rushmore-Optimierung von COPY TO ARRAY wird deaktiviert. Weitere Informationen finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

Hinweise

COPY TO ARRAY und SCATTER sind vergleichbar. COPY TO ARRAY kopiert mehrere Sätze in ein Array, während SCATTER jeweils nur einen Satz in ein Array oder eine Variablengruppe kopiert. Sowohl COPY TO ARRAY als auch SCATTER erstellen ein neues Array, wenn kein Array mit dem angegebenen Namen vorhanden ist.

Wenn Sie nur einen Datensatz in ein Array kopieren möchten, können Sie ein eindimensionales Array verwenden. Die Anzahl der Elemente des eindimensionalen Arrays muss der Anzahl der Tabellenfelder entsprechen, abzüglich der Anzahl der Memofelder. Memofelder werden bei COPY TO ARRAY ignoriert.

Wenn Sie ein eindimensionales Array angeben, wird das erste Feld eines Datensatzes im ersten Element des Arrays gespeichert, das zweite Feld wird im zweiten Element des Arrays gespeichert usw. Hat das eindimensionale Array mehr Elemente, als Felder in der Tabelle vorhanden sind, bleiben die restlichen Elemente unverändert. Umfasst die Tabelle mehr Felder, als das Array Elemente hat, werden die verbleibenden Felder ignoriert.

Wenn Sie mehrere Sätze oder eine ganze Tabelle in ein Array kopieren möchten, verwenden Sie ein zweidimensionales Array. Die Anzahl der Arrayzeilen entspricht der Anzahl der Datensätze, die das Array aufnehmen kann, und die Anzahl der Arrayspalten entspricht der Anzahl der Felder, die das Array aufnehmen kann.

Jeder Satz wird in einer Zeile des Arrays und jedes Feld in einer Spalte des Arrays gespeichert. Für jeden Datensatz wird das erste Feld in der ersten Spalte des Arrays gespeichert, das zweite Feld wird in der zweiten Spalte des Arrays gespeichert usw. Hat das Array mehr Spalten, als Felder in der Tabelle sind, werden die verbleibenden Spalten nicht geändert. Umfasst die Tabelle mehr Felder, als Spalten im Array sind, werden die verbleibenden Felder nicht im Array gespeichert.

Jede nachfolgende Zeile des Arrays wird mit dem Inhalt des nächsten Satzes gefüllt. Hat das Array mehr Zeilen, als Sätze in der Tabelle sind, werden die verbleibenden Zeilen nicht geändert. Umfasst das Array weniger Zeilen, als Sätze in der Tabelle sind, werden die verbleibenden Sätze nicht im Array gespeichert.

Mit dem Befehl APPEND FROM ARRAY können Daten aus Arrays in neue Datensätze kopiert werden. Daten können auch mit GATHER aus Arrays und Variablen in eine Tabelle kopiert werden.

Beispiel

Im folgenden Beispiel wird die Tabelle customer geöffnet. Anschließend wird ein zweidimensionales Array erstellt, und die ersten drei Datensätze von customer werden in dieses Array kopiert. Dann werden die im Array gespeicherten Werte mittels DISPLAY MEMORY angezeigt.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table

DIMENSION gaTemp(3,10)
COPY NEXT 3 TO ARRAY gaTemp
DISPLAY MEMORY LIKE gaTemp

Siehe auch

APPEND FROM ARRAY | DECLARE | DIMENSION | GATHER | PUBLIC | SCATTER | STORE