SCATTER-Befehl
Kopiert Daten aus dem aktuellen Datensatz in eine Gruppe von Variablen oder in ein Array.
SCATTER [FIELDS FieldNameList | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton] [MEMO]
TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK
| NAME ObjectName [BLANK]
Parameter
FIELDS FieldNameList
Gibt die Felder an, die in die Variablen oder in das Array übertragen werden sollen. Ohne Angabe von FIELDS FieldNameList werden alle Felder übertragen. Die Feldliste kann auch Memofelder enthalten, wenn Sie nach der Liste das Schlüsselwort MEMO angeben. SCATTER ignoriert Felder vom Typ "Objekt" und "Bild" generell, auch wenn Sie MEMO angeben.FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton
Sie haben die Möglichkeit, mit der LIKE- und/oder der EXCEPT-Klausel Felder selektiv in Variablen oder in ein Array zu übertragen. Wenn Sie LIKE Skeleton angeben, werden die Felder in die Variablen oder das Array übertragen, die mit Skeleton übereinstimmen. Wenn Sie EXCEPT Skeleton angeben, werden alle Felder in die Variablen oder das Array übertragen, außer denen, die mit Skeleton übereinstimmen.Skeleton unterstützt Platzhalterzeichen. Gehen Sie etwa folgendermaßen vor, wenn Sie alle Felder, die mit den Buchstaben A und P beginnen, in die Variablen oder das Memofeld übertragen möchten:
SCATTER FIELDS LIKE A*,P* TO myarray
Die LIKE-Klausel kann mit der EXCEPT-Klausel kombiniert werden:
SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray
MEMO
Gibt an, dass die Feldliste ein oder mehrere Memofelder enthält. Standardmäßig werden Memofelder in SCATTER ignoriert.Sie müssen über genügend Arbeitsspeicher verfügen, um große Memofelder in Variablen oder ein Array zu kopieren. Visual FoxPro generiert eine Fehlermeldung, wenn es Ihnen an Arbeitsspeicher mangelt. Wenn ein Memofeld nicht in den Arbeitsspeicher passt, weil es zu groß ist, wird weder dieses noch ein anderes Memofeld der Feldliste kopiert. Wird der Kopiervorgang für ein Memofeld nicht durchgeführt, wird die entsprechende Variable oder das Arrayelement auf Falsch (.F.) gesetzt.
TO ArrayName
Gibt das Array an, in das der Inhalt des Datensatzes kopiert wird. SCATTER kopiert die Feldinhalte, beginnend mit dem ersten Feld, in sequenzieller Reihenfolge in die einzelnen Arrayelemente.Wenn das von Ihnen angegebene Array mehr Elemente als die Feldanzahl enthält, werden weitere Arrayelemente nicht geändert. Wenn das Array nicht bereits vorhanden ist oder wenn es weniger Elemente als die Feldanzahl enthält, wird automatisch ein neues Array erstellt. Die Arrayelemente besitzen dieselbe Größe und haben denselben Datentyp wie das zugehörige Feld.
TO ArrayName BLANK
Erstellt ein Array mit leeren Elementen, deren Größe und Typ den Feldern in der Tabelle entsprechen.MEMVAR
Kopiert die Daten in eine Gruppe von Variablen statt in ein Array. SCATTER erstellt für jedes Feld der Tabelle eine Variable und füllt diese jeweils mit Daten aus dem entsprechenden Feld im aktuellen Datensatz. Dabei werden der Variablen derselbe Name, dieselbe Größe und derselbe Typ zugeordnet wie ihrem Feld.Bei Angabe einer Feldliste wird für jedes Feld der Feldliste eine Variable erstellt.
Um auf eine Variable zu verweisen, die denselben Namen wie ein Feld der aktuellen Tabelle besitzt, stellen Sie dem Variablennamen das Präfix "M." voran.
Vorsicht Geben Sie TO nicht mit MEMVAR an. Wenn Sie TO angeben, erstellt Visual FoxPro ein Array, das den Namen MEMVAR hat.
MEMVAR BLANK
Erstellt eine Gruppe leerer Variablen. Jeder Variablen wird derselbe Name, derselbe Datentyp und dieselbe Größe wie dem zugehörigen Feld zugewiesen. Bei Angabe einer Feldliste wird für jedes Feld der Feldliste eine Variable erstellt.NAME ObjectName [BLANK]
Erstellt ein Objekt, dessen Eigenschaften dieselben Namen haben wie Felder der jeweiligen Tabelle. Wird das Schlüsselwort BLANK nicht angegeben, stellen die Werte der einzelnen Objekteigenschaften die Inhalte der Tabellenfelder dar. Wird das Schlüsselwort BLANK angegeben, bleiben die Eigenschaftswerte leer. Eine Beschreibung des Inhalts leerer Eigenschaftswerte in Abhängigkeit vom jeweiligen Feldtyp finden Sie unter EMPTY( )-Funktion. Für Objektfelder in der Tabelle können keine Eigenschaften angegeben werden.Um auf eine Eigenschaft eines Objekts zu verweisen, die denselben Namen wie eine geöffnete Tabelle hat, stellen Sie dem Eigenschaftsnamen das Präfix "M." voran, z. B.:
USE customer SCATTER NAME customer ? customer.company && Returns the table value ? M.customer.company && Returns the object property value
Hinweise
SCATTER und COPY TO ARRAY sind ähnliche Befehle. COPY TO ARRAY kopiert mehrere Datensätze in ein Array, während SCATTER nur einen Datensatz in ein Array oder eine Gruppe von Variablen kopiert. SCATTER erstellt das Array oder die Variablen automatisch, wenn sie noch nicht vorhanden sind.
Mit GATHER können Sie Variablen oder Arrayelemente in Tabellendatensätze kopieren.
Beispiele
Beispiel 1
In diesem Beispiel wird mit SCATTER eine Gruppe von Variablen erstellt, die auf den Feldern der Tabelle "Test" basieren. Den Feldern wird anschließend jeweils ein Wert zugewiesen, und zur Tabelle wird ein neuer, leerer Datensatz hinzugefügt. Die Daten werden mit dem GATHER-Befehl in die Tabelle kopiert.
CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE
Beispiel 2
In diesem Beispiel wird mit dem SCATTER-Befehl und der NAME-Klausel ein Objekt erstellt, dessen Eigenschaften auf den Tabellenfeldern basieren. Den Eigenschaften des Objekts werden anschließend Werte zugewiesen, und zur Tabelle wird ein neuer, leerer Datensatz hinzugefügt. Die Daten werden mit GATHER und der NAME-Klausel in den neuen Datensatz kopiert.
CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE
Siehe auch
ALINES( )-Funktion | APPEND FROM ARRAY-Befehl | COPY TO ARRAY-Befehl | DECLARE-Befehl | DIMENSION-Befehl | GATHER-Befehl