Freigeben über


Shape Compute-Klausel

Gilt für: Access 2013, Office 2013

Durch eine COMPUTE-Klausel für Formen wird ein übergeordnetes Recordset-Objekt generiert, dessen Spalten aus Folgendem bestehen: aus einem Verweis auf das untergeordnete Recordset-Objekt; aus optionalen Spalten, deren Inhalt ein Kapitel, neue oder berechnete Spalten oder das Ergebnis der Ausführung von Aggregatfunktionen für das untergeordnete Recordset-Objekt oder ein vorher geformtes Recordset-Objekt sein kann; und aus allen Spalten des untergeordneten Recordset-Objekts, die in der optionalen BY-Klausel aufgelistet 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 lauten wie folgt:

  • child-command

    • Besteht aus einem der Folgenden:

      • Ein Abfragebefehl in geschweiften Klammern ("{}"), der ein untergeordnetes Recordset -Objekt zurückgibt. Der Befehl wird an den zugrunde liegenden Datenanbieter ausgegeben, und die Syntax des Befehls hängt von den Anforderungen dieses Anbieters ab. Normalerweise handelt es sich dabei um die SQL-Sprache, obwohl für ADO keine bestimmte Abfragesprache erforderlich ist.

      • Der Name eines vorhandenen geformten Recordset-Objekts.

      • Ein weiterer Shape-Befehl.

      • Das TABLE-Schlüsselwort, gefolgt vom Namen einer Tabelle im Datenprovider.

  • child-alias

    • Ein Alias, mit dem auf das Recordset-Objekt verwiesen wird, das von child-command zurückgegeben wird. 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 durch jedes Element eine Spalte im generierten übergeordneten Element definiert wird. Jedes Element enthält eine Kapitelspalte, eine neue Spalte, eine berechnete Spalte oder einen Wert, der das Ergebnis einer Aggregatfunktion für das untergeordnete Recordset-Objekt ist.
  • grp-field-list

    • Eine Liste der Spalten in den übergeordneten und untergeordneten Recordset-Objekten, durch die angegeben wird, wie die Zeilen im untergeordneten Objekt gruppiert werden sollen. Für jede Spalte in grp-field-list ist in den untergeordneten und übergeordneten Recordset-Objekten eine entsprechende Spalte vorhanden. Für jede Zeile im übergeordneten Recordset-Objekt enthalten die Spalten von grp-field-list eindeutige Werte, und das Recordset-Objekt, auf das von der übergeordneten Zeile verwiesen wird, besteht ausschließlich aus untergeordneten Zeilen, deren grp-field-list-Spalten die gleichen Werte enthalten wie die übergeordnete Zeile.

Wenn die BY-Klausel enthalten ist, werden die Zeilen des untergeordneten Recordset-Objekts basierend auf den Spalten in der COMPUTE-Klausel gruppiert. Das übergeordnete Recordset-Objekt enthält eine Zeile für jede Zeilengruppe im untergeordneten Recordset-Objekt.

Wenn die BY-Klausel weggelassen wird, wird das gesamte untergeordnete Recordset -Objekt als einzelne Gruppe behandelt, und das übergeordnete Recordset -Objekt enthält genau eine Zeile. Durch diese Zeile wird auf das gesamte untergeordnete Recordset-Objekt verwiesen. Durch Weglassen der BY-Klausel können Sie "Gesamtsummenaggregate" für das gesamte untergeordnete Recordset-Objekt berechnen.

Beispiel:

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

Unabhängig davon, auf welche Weise das übergeordnete Recordset -Objekt geformt wird (mithilfe von COMPUTE oder mithilfe von APPEND), enthält es eine Kapitelspalte, die verwendet wird, um es in Beziehung zu einem untergeordneten Recordset -Objekt zu setzen. Wenn Sie dies möchten, kann das übergeordnete Recordset -Objekt auch Spalten enthalten, die Aggregate (SUM, MIN, MAX usw.) für die untergeordneten Zeilen enthalten. Sowohl das übergeordnete als auch das untergeordnete Recordset -Objekt können Spalten enthalten, die einen Ausdruck für die Zeile im Recordset -Objekt enthalten, sowie Spalten, die neu und anfangs leer sind.

Vorgang

child-command wird an den Anbieter ausgegeben, von dem ein untergeordnetes Recordset-Objekt zurückgegeben wird.

Durch die COMPUTE-Klausel werden die Spalten des übergeordneten Recordset-Objekts angegeben, bei dem es sich um einen Verweis auf das untergeordnete Recordset-Objekt, auf eines oder mehrere Aggregate, auf einen berechneten Ausdruck oder auf neue Spalten handeln kann. Wenn eine BY-Klausel vorhanden ist, werden die dadurch definierten Spalten ebenfalls dem übergeordneten Recordset-Objekt angefügt. Durch die BY-Klausel wird angegeben, wie die Zeilen des untergeordneten Recordset-Objekts gruppiert werden.

Nehmen wir z. B. an, Sie haben eine Tabelle namens Demografische Daten, die aus den Feldern Bundesland, Ort und Bevölkerung besteht (die Bevölkerungszahlen dienen ausschließlich der Veranschaulichung).

State

Stadt

Bevölkerung

WA

Seattle

700.000

ODER

Medford

200.000

ODER

Portland

400,000

CA

München

800,000

CA

Nürnberg

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 

Durch diesen Befehl wird ein geformtes Recordset -Objekt mit zwei Ebenen geöffnet. Die übergeordnete Ebene ist ein generiertes Recordset mit einer Aggregatspalte (SUMME(rs.population), einer Spalte, die auf das untergeordnete Recordset (rs ) verweist, und einer Spalte zum Gruppieren des untergeordneten Recordset -Objekts (Status ). Die untergeordnete Ebene ist das Recordset, das vom Abfragebefehl (), eine Spalte, die auf das untergeordnete Recordset (rs ) verweist, und eine Spalte zum Gruppieren des untergeordneten Recordset -Objekts (Status ). Die untergeordnete Ebene ist das Recordset, das vom Abfragebefehl zurückgegeben wird (wählen Sie * aus demografischen Daten aus).

Die Detailzeilen des untergeordneten Recordset -Objekts werden nach Bundesland, aber ansonsten ohne besondere Reihenfolge gruppiert. Das heißt, die Gruppen befinden sich nicht in einer alphabetischen oder numerischen Reihenfolge. Wenn das übergeordnete Recordset sortiert werden soll, können Sie die RecordsetSort-Methode verwenden, um das übergeordnete Recordset-Objekt zu sortieren.

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

Übergeordnete und untergeordnete Detailergebnisdatensätze

Parent

SUMME (rs. Bevölkerung)

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

Stadt

Bevölkerung

CA

München

800,000

CA

Nürnberg

600.000

Child2

State

Stadt

Bevölkerung

WA

Seattle

700.000

WA

Tacoma

500.000

Child3

State

Stadt

Bevölkerung

ODER

Medford

200.000

ODER

Portland

400,000

ODER

Corvallis

300,000