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