Freigeben über


Shape-COMPUTE-Klausel

Eine SHAPE COMPUTE-Klausel generiert ein übergeordnetes Recordset, dessen Spalten aus einem Verweis auf das untergeordnete Recordsetbestehen; optionale Spalten, deren Inhalt Kapitel, neue oder berechnete Spalten sind oder das Ergebnis der Ausführung von Aggregatfunktionen auf dem untergeordneten Recordset oder einem zuvor geformten Recordsetdarstellen; und alle Spalten aus dem untergeordneten Recordset, die in der optionalen BY-Klausel aufgeführt sind.

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 wie folgt:

Kinderbefehl
Besteht aus einem der folgenden Komponenten:

  • Ein Abfragebefehl in geschweiften Klammern ("{}"), der ein untergeordnetes Recordset -Objekt zurückgibt. Der Befehl wird an den zugrunde liegenden Datenanbieter ausgegeben, und seine Syntax hängt von den Anforderungen dieses Anbieters ab. Dies ist in der Regel die SQL-Sprache, obwohl ADO keine bestimmte Abfragesprache erfordert.

  • Der Name eines vorhandenen formigen Recordset-.

  • Ein anderer Shape-Befehl.

  • Das SCHLÜSSELwort TABLE, gefolgt vom Namen einer Tabelle im Datenanbieter.

Kinder-Alias
Ein Alias, der verwendet wird, um auf das Recordset zu verweisen, vom untergeordneten Befehl zurückgegeben wird. Die untergeordneten Alias ist in der Liste der Spalten in der COMPUTE-Klausel erforderlich und definiert die Beziehung zwischen dem übergeordneten und untergeordneten Recordset--Objekten.

anfügende Spaltenliste
Eine Liste, in der jedes Element eine Spalte im generierten übergeordneten Element definiert. Jedes Element enthält entweder eine Kapitelspalte, eine neue Spalte, eine berechnete Spalte oder einen Wert, der sich aus einer Aggregatfunktion für das untergeordnete Recordset-ergibt.

grp-field-list
Eine Liste der Spalten im übergeordneten und untergeordneten Recordset Objekt, die festlegt, wie die Zeilen im untergeordneten Recordset gruppiert werden sollen.

Für jede Spalte in der grp-field-list gibt es eine entsprechende Spalte im untergeordneten und übergeordneten Recordset-Objekt. Für jede Zeile im übergeordneten Recordset-haben die grp-field-list Spalten eindeutige Werte, und das untergeordnete Recordset, auf das der übergeordnete Datensatz verweist, besteht ausschließlich aus Kindzeilen, deren grp-field-list Spalten dieselben Werte wie der übergeordnete Datensatz aufweisen.

Wenn die BY-Klausel enthalten ist, werden die Zeilen des untergeordneten Recordsetauf Basis der Spalten in der COMPUTE-Klausel gruppiert. Das übergeordnete Recordset- wird eine Zeile für jede Gruppe von Zeilen im untergeordneten Recordset-enthalten.

Wenn die BY-Klausel ausgelassen wird, wird das gesamte untergeordnete Recordset- als einzelne Gruppe behandelt, und das übergeordnete Recordset- enthält genau eine Zeile. Diese Zeile verweist auf das gesamte untergeordnete Recordset . Wenn Sie die BY-Klausel weglassen, können Sie Gesamtergebnis-Aggregate über das gesamte untergeordnete Recordsetberechnen.

Zum Beispiel:

SHAPE {select * from Orders} AS orders             COMPUTE orders, SUM(orders.OrderAmount) as TotalSales         

Unabhängig davon, auf welche Weise 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 mit Aggregatfunktionen (SUMME, MIN, MAX usw.) über die Zeilen der untergeordneten Datensätze enthalten. Sowohl das Eltern- als auch das Kind--Recordset- können Spalten enthalten, die einen Ausdruck auf der Zeile im Recordsetenthalten, sowie Spalten, die neu und anfangs leer sind.

Operation

Das -Unterkommando wird an den Anbieter gesendet, der einen untergeordneten -Datensatz-zurückgibt.

Die COMPUTE-Klausel gibt die Spalten des übergeordneten Recordsetan, bei denen es sich um einen Verweis auf das untergeordnete Recordset, um ein oder mehrere Aggregate, um einen berechneten Ausdruck oder um neue Spalten handeln kann. Wenn eine BY-Klausel vorhanden ist, werden die definierten Spalten auch an das übergeordnete Recordsetangefügt. Die BY-Klausel gibt an, wie die Zeilen des untergeordneten Recordset gruppiert werden.

Angenommen, Sie haben eine Tabelle mit dem Namen "Demografische Daten", die aus den Feldern "Bundesland", "Stadt" und "Bevölkerung" besteht. (Die Bevölkerungszahlen in der Tabelle sind ausschließlich als Beispiel angegeben.

Zustand Stadt Bevölkerung
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

Führen Sie jetzt diesen Form-Befehl aus:

rst.Open  "SHAPE {select * from demographics} AS rs "  & _  
          "COMPUTE rs, SUM(rs.population) BY state", _  
           objConnection  

Dieser Befehl öffnet ein geformtes Recordset- mit zwei Ebenen. Die übergeordnete Ebene ist ein generiertes Recordset- mit einer Aggregatspalte (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 untergeordneten Recordset Detailzeilen werden nach Bundesland gruppiert, andernfalls jedoch in keiner bestimmten Reihenfolge. Das heißt, die Gruppen befinden sich nicht in alphabetischer oder numerischer Reihenfolge. Wenn das übergeordnete Recordset sortiert werden soll, können Sie die Recordset Sort-Methode verwenden, um das übergeordnete Recordsetzu sortieren.

Sie können jetzt im geöffneten übergeordneten Recordset navigieren und auf die untergeordneten Detail-Recordset--Objekte zugreifen. Weitere Informationen finden Sie unter Zugriff auf Zeilen in einem hierarchischen Recordset.

Resultierende Datensatzgruppen für Eltern- und Kinddetails

Elternteil

SUMME (rs. Bevölkerung) rs Zustand
1,300,000 Verweis auf Kind1 CA
1,200,000 Verweis auf untergeordnetes Kind 2 WA
1,100,000 Verweis auf Kind3 ODER

Kind1

Staat Stadt Bevölkerung
CA Los Angeles 800,000
CA San Diego 600,000

Kind 2

Staat Stadt Bevölkerung
WA Seattle 700,000
WA Tacoma 500,000

Kind3

Staat Stadt Bevölkerung
ODER Medford 200,000
ODER Portland 400,000
ODER Corvallis 300,000

Siehe auch

Zugreifen auf Zeilen in einem hierarchischen Recordset-
Übersicht über Datenformung
Field-Objekt
Formale Formgrammatik
Recordset-Objekt (ADO)
Erforderliche Anbieter für die Datenstrukturierung
Anfügungsanweisung Schablone
Shape-Befehle im Allgemeinen
Value-Eigenschaft (ADO)
Visual Basic for Applications-Funktionen