Freigeben über


Datenstrukturierung – Beispiel

Der folgende Befehl zur Datenformung demonstriert, wie Sie ein hierarchisches Recordset aus den Tabellen Customers und Orders in der Northwind-Datenbank erstellen.

SHAPE {SELECT CustomerID, ContactName FROM Customers}   
APPEND ({SELECT OrderID, OrderDate, CustomerID FROM Orders} AS chapOrders   
RELATE customerID TO customerID)   

Wenn dieser Befehl zum Öffnen eines Recordset-Objekts verwendet wird (wie im Visual Basic-Beispiel für Data Shaping gezeigt), erstellt er ein Kapitel (chapOrders) für jeden Datensatz, der aus der Tabelle Customers zurückgegeben wird. Dieses Kapitel umfasst eine Teilmenge des Recordset, das aus der Tabelle Orders zurückgegeben wird. Das Kapitel chapOrders enthält alle gewünschten Informationen über die Bestellungen des jeweiligen Kunden. In diesem Beispiel besteht das Kapitel aus drei Spalten: OrderID, OrderDate, und CustomerID.

Die ersten zwei Einträge des resultierenden geformten Recordset lauten wie folgt:

CustomerID ContactName OrderID OrderDate CustomerID
ALFKI Maria Ander 10643

10692

10702

10835

10952

11011
1997-08-25

1997-10-03

1997-10-13

1998-01-15

1998-03-16

1998-04-09
ALFKI

ALFKI

ALFKI

ALFKI

ALFKI

ALFKI
ANATR Ana Trujillo 10308

10625

10759

10926
1996-09-18

1997-08-08

1997-11-28

1998-03-04
ANATR

ANATR

ANATR

ANATR

In einem SHAPE-Befehl wird APPEND dazu verwendet, ein untergeordnetes Recordset zu erstellen, das mit dem übergeordneten Recordset (wie es vom providerspezifischen Befehl unmittelbar nach dem SHAPE-Schlüsselwort zurückgegeben wurde) durch die RELATE-Klausel verbunden ist. Das übergeordnete Element und das untergeordnete Element haben in der Regel mindestens eine Spalte gemeinsam: Der Wert der Spalte in einer Zeile des übergeordneten Elements ist derselbe wie der Wert der Spalte in allen Zeilen des untergeordneten Elements.

Es gibt eine zweite Möglichkeit, SHAPE-Befehle zu verwenden: nämlich um ein übergeordnetes Recordset aus einem untergeordneten Recordset zu erzeugen. Die Datensätze im untergeordneten Recordset werden gruppiert, in der Regel mit der BY-Klausel, und für jede daraus resultierende Gruppe im untergeordneten Recordset wird eine Zeile zum übergeordneten Recordset hinzugefügt. Wenn die BY-Klausel weggelassen wird, bilden die untergeordneten Recordset eine einzige Gruppe und das übergeordnete Recordset enthält genau eine Zeile. Diese Funktion ist nützlich, um die Gesamtsumme über das gesamte untergeordnete Recordset zu berechnen.

Mit dem SHAPE-Befehlskonstrukt können Sie außerdem programmatisch ein geformtes Recordset erstellen. Sie können dann programmatisch oder über ein entsprechendes visuelles Steuerelement auf die Komponenten des Recordset zugreifen. Ein Shape-Befehl wird wie jeder andere ADO-Befehlstext ausgegeben. Weitere Informationen finden Sie unter Shape-Befehle im Allgemeinen.

Unabhängig davon, wie das übergeordnete Recordset gebildet wird, 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 (SUMME, MIN, MAX usw.) über 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.

Dieser Abschnitt führt Sie weiter zum folgenden Thema.