Esempio di data shaping

Il comando di data shaping seguente illustra come creare un Recordset gerarchico dalle tabelle Customers e Orders nel database Northwind.

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

Quando questo comando viene usato per aprire un oggetto Recordset,come illustrato in Esempio di data shaping di Visual Basic, viene creato un capitolo (chapOrders) per ogni record restituito dalla tabella Customers. Questo capitolo è costituito da un subset dell'oggetto Recordset restituito dalla tabella Orders. Il capitolo chapOrders contiene tutte le informazioni richieste sugli ordini effettuati dal cliente specificato. In questo esempio il capitolo è costituito da tre colonne: OrderID, OrderDate e CustomerID.

Le prime due voci dell'oggetto Recordset con forma risultante sono le seguenti:

CustomerID ContactName OrderID DataOrdine 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 un comando SHAPE, si usa APPEND per creare un oggetto Recordset figlio correlato all'oggetto Recordset padre, restituito dal comando specifico del provider immediatamente dopo la parola chiave SHAPE descritta in precedenza, dalla clausola RELATE. L'elemento padre e figlio hanno in genere almeno una colonna in comune: il valore della colonna in una riga dell'elemento padre corrisponde al valore della colonna in tutte le righe dell'elemento figlio.

Esiste un secondo modo per usare i comandi SHAPE, ovvero per generare un oggetto Recordset padre da un oggetto Recordset figlio. I record nell'oggetto Recordset figlio vengono raggruppati, in genere usando la clausola BY, e viene aggiunta una riga all'oggetto Recordset padre per ogni gruppo risultante nell'elemento figlio. Se la clausola BY viene omessa, l'oggetto Recordset figlio formerà un singolo gruppo e l'oggetto Recordset padre conterrà esattamente una riga. Ciò è utile per il calcolo del "totale complessivo" delle aggregazioni sull'intero Recordset figlio.

Il costrutto di comando SHAPE consente inoltre di creare a livello di codice un oggetto Recordset con forma. È quindi possibile accedere ai componenti dell'oggetto Recordset a livello di codice o tramite un controllo visivo appropriato. Un comando SHAPE viene generato come qualsiasi altro testo del comando ADO. Per altre informazioni, vedere Comandi SHAPE in generale.

Indipendentemente dal modo in cui viene formato, l'oggetto Recordset padre conterrà una colonna del capitolo usata per correlarla a un oggetto Recordset figlio. Se si vuole, l'oggetto Recordset padre può includere anche colonne che contengono aggregazioni (SUM, MIN, MAX e così via) sulle righe figlio. Sia l'oggetto padre che l'oggetto Recordset figlio possono contenere colonne che contengono un'espressione nella riga dell'oggetto Recordset, nonché colonne nuove e inizialmente vuote.

Questa sezione continua con l'argomento seguente.