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.