SHAPE COMPUTE-Klausel
Eine SHAPE COMPUTE-Klausel generiert ein übergeordnetes Recordset, dessen Spalten aus einem Verweis auf das untergeordnete Recordset bestehen, optionale Spalten mit Kapitel-, neuen oder berechneten Spalten oder das Ergebnis der Ausführung von Aggregatfunktion auf dem untergeordneten Recordset oder einem zuvor strukturierten Recordset, und alle Spalten aus dem untergeordneten Recordset, das in der optional BY-Klausel aufgeführt ist.
Syntax
SHAPE child-command [AS] child-alias
COMPUTE child-alias [[AS] name], [appended-column-list]
[BY grp-field-list]
BESCHREIBUNG
Die Teile dieser Klausel sind die folgenden:
child-command
Die Klausel besteht aus den folgenden Elementen:
Einem Abfragebefehl in geschweiften Klammern („{}“), der ein untergeordnetes Recordset-Objekt zurückgibt. Der Befehl wird an den zugrunde liegenden Datenanbieter ausgestellt, und die Syntax hängt von den Anforderungen dieses Anbieters ab. Dies ist in der Regel die SQL-Sprache, obwohl ADO keine bestimmte Abfragesprache erfordert.
Dem Namen eines vorhandenen strukturierten Recordset
Einem weiteren Shape-Befehl
Dem TABLE-Schlüsselwort, gefolgt vom Namen der Tabelle im Datenanbieter
child-alias
Ein Alias, der verwendet wird, um auf das von child-command zurückgegebene Recordset zu verweisen. Der child-alias ist in der Liste der Spalten in der COMPUTE-Klausel erforderlich und definiert die Beziehung zwischen den übergeordneten und untergeordneten Recordset-Objekten.
appended-column-list
Eine Liste, in der jedes Element eine Spalte in der generierten übergeordneten Spalte definiert. Jedes Element enthält entweder eine Kapitelspalte, eine neue Spalte, eine berechnete Spalte oder einen Wert, der aus einer Aggregatfunktion im untergeordneten Recordset berechnet wurde.
grp-field-list
Eine Liste der Spalten in den übergeordneten und untergeordneten Recordset-Objekten, in der angegeben wird, wie die Zeilen im untergeordneten Element gruppiert werden sollen.
Für jede Spalte in der grp-field-list gibt es eine entsprechende Spalte in den untergeordneten und übergeordneten Recordset-Objekten. Für jede Zeile im übergeordneten Recordset haben die grp-field-list-Spalten eindeutige Werte, und das untergeordnete Recordset, auf das von der übergeordneten Zeile verwiesen wird, besteht ausschließlich aus untergeordneten Zeilen, deren grp-field-list-Spalten die gleichen Werte wie die übergeordnete Zeile aufweisen.
Wenn die BY-Klausel enthalten ist, werden die Zeilen des untergeordneten Recordset basierend auf den Spalten in der COMPUTE-Klausel gruppiert. Das übergeordnete Recordset enthält eine Zeile für jede Gruppe von Zeilen im untergeordneten Recordset.
Wenn die BY-Klausel weggelassen wird, wird das gesamte untergeordnete Recordset als eine einzige Gruppe behandelt, und das übergeordnete Recordset enthält genau eine Zeile. Diese Zeile verweist auf das gesamte untergeordnete Recordset. Durch das Auslassen der BY-Klausel können Sie „Gesamtsummen“-Aggregate für das gesamte untergeordnete Recordset berechnen.
Beispiel:
SHAPE {select * from Orders} AS orders COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Unabhängig davon, wie das übergeordnete Recordset gebildet wird (mit COMPUTE oder APPEND), enthält es eine Kapitelspalte, die verwendet wird, um es mit einem untergeordneten Recordset zu verknüpfen. Wenn Sie möchten, kann das übergeordnete Recordset auch Spalten haben, die Aggregate (SUM, MIN, MAX usw.) für die untergeordneten Zeilen enthalten. Sowohl das übergeordnete als auch das untergeordnete Recordset können Spalten enthalten, die einen Ausdruck für die Zeile im Recordset enthalten, sowie Spalten, die neu und zunächst leer sind.
Vorgang
Der child-command wird an den Anbieter ausgegeben, der ein untergeordnetes Recordset zurückgibt.
Die COMPUTE-Klausel gibt die Spalten des übergeordneten Recordset an, die ein Verweis auf das untergeordnete Recordset, ein oder mehrere Aggregate, einen berechneten Ausdruck oder neue Spalten sein können. Wenn eine BY-Klausel vorhanden ist, werden die von ihr definierten Spalten auch an das übergeordnete Recordset angefügt. Die BY-Klausel gibt an, wie die Zeilen des untergeordneten Recordset gruppiert sind.
Angenommen, Sie verfügen über eine Tabelle mit dem Namen „Demographics“ (Demografische Daten), die aus den Feldern „State“ (Staat), „City“ (Stadt) und „Population“ (Bevölkerung) besteht. (Die Bevölkerungszahlen in der Tabelle dienen lediglich als Beispiel).
State | City | Auffüllung |
---|---|---|
WA | Seattle | 700.000 |
oder | Medford | 200.000 |
oder | Portland | 400.000 |
CA | Los Angeles | 800.000 |
CA | San Diego | 600.000 |
WA | Tacoma | 500.000 |
oder | Corvallis | 300.000 |
Geben Sie nun diesen Shape-Befehl aus:
rst.Open "SHAPE {select * from demographics} AS rs " & _
"COMPUTE rs, SUM(rs.population) BY state", _
objConnection
Dieser Befehl öffnet ein strukturiertes Recordset mit zwei Ebenen. Die übergeordnete Ebene ist ein generiertes Recordset mit einer aggregierten Spalte (SUM(rs.population)
), einer Spalte, die auf das untergeordnete Recordset (rs
) verweist, und einer Spalte zum Gruppieren des untergeordneten Recordset (state
). Die untergeordnete Ebene ist das Recordset, das vom Abfragebefehl (select * from demographics
) zurückgegeben wird.
Die Detailzeilen des untergeordneten Recordset werden nach Status gruppiert, aber ansonsten in keiner bestimmten Reihenfolge. Das heißt, dass die Gruppen nicht in alphabetischer oder numerischer Reihenfolge angeordnet sind. Wenn das übergeordnete Recordset geordnet werden soll, können Sie die Recordset Sort-Methode verwenden, um das übergeordnete Recordset zu ordnen.
Sie können nun in dem geöffneten übergeordneten Recordset navigieren und auf die untergeordneten Detailobjekte von Recordset zugreifen. Weitere Informationen finden Sie im Abschnitt zum Zugreifen auf Zeilen in einem hierarchischen Recordset.
Resultierende übergeordnete und untergeordnete Detail-Recordsets
Parent
SUM (Bevölkerungsrecordset) | rs | State |
---|---|---|
1.300.000 | Verweis auf child1 | CA |
1\.200.000 | Verweis auf child2 | WA |
1.100.000 | Verweis auf child3 | oder |
Child1
State | City | Auffüllung |
---|---|---|
CA | Los Angeles | 800.000 |
CA | San Diego | 600.000 |
Child2
State | City | Auffüllung |
---|---|---|
WA | Seattle | 700.000 |
WA | Tacoma | 500.000 |
Child3
State | City | Auffüllung |
---|---|---|
oder | Medford | 200.000 |
oder | Portland | 400.000 |
oder | Corvallis | 300.000 |
Weitere Informationen
Zugreifen auf Zeilen in einem hierarchischen Recordset
Datenstrukturierung – Übersicht
Field-Objekt
Formale Grammatik für Strukturen
Recordset-Objekt (ADO)
Erforderliche Anbieter für die Datenstrukturierung
SHAPE APPEND-Klausel
Shape-Befehle im Allgemeinen
Value-Eigenschaft (ADO)
Visual Basic for Applications-Funktionen