Esempio di data shaping
Il comando di data shaping seguente illustra come creare un recordset gerarchico dal Customers e Orders tabelle 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 Visual Basic Example of Data Shaping), crea un capitolo (chapOrders) per ogni record restituito dalla tabella Customers. Questo capitolo è costituito da un subset dell'recordset restituito dalla tabella orders di. Il capitolo chapOrders contiene tutte le informazioni richieste sugli ordini effettuati dal cliente specificato. In questo esempio il capitolo è costituito da tre colonne: OrderID, OrderDatee CustomerID.
Le prime due voci del recordset modellato risultante sono le seguenti:
ID Cliente | NomeContatto | OrderID | DataOrdine | ID Cliente |
---|---|---|---|---|
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, APPEND viene usato per creare un Recordset figlio correlato al Recordset padre (come restituito dal comando specifico del provider immediatamente dopo la parola chiave SHAPE illustrata in precedenza) dalla clausola RELATE. Il padre e figlio in genere hanno almeno una colonna in comune: il valore della colonna in una riga dell'elemento padre è uguale 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 nel recordset figlio vengono raggruppati, in genere utilizzando la clausola BY, e una riga viene aggiunta al recordset padre per ogni gruppo risultante nel recordset figlio. Se la clausola BY viene omessa, il recordset figlio formerà un singolo gruppo e l'recordset padre conterrà esattamente una riga. Ciò è utile per l'elaborazione di aggregazioni del "totale complessivo" sull'intero Recordset figlio .
Il costrutto di comando SHAPE consente inoltre di creare programmaticamente un Recordset sagomato . È quindi possibile accedere ai componenti dell'oggetto Recordset a livello di codice o tramite un controllo visivo appropriato. Un comando shape viene emesso allo stesso modo di qualsiasi altro testo di comando ADO. Per altre informazioni, vedere comandi shape in Generale.
Indipendentemente dal modo in cui si forma il recordset padre , conterrà una colonna di capitolo utilizzata per relazionarla a un recordset figlio . Se si desidera, il Recordset padre può includere anche colonne che contengono aggregazioni (SUM, MIN, MAX e così via) sulle righe figlio. Sia il recordset padre sia il recordset figlio possono avere colonne che includono un'espressione sulla riga nel recordset , nonché colonne nuove e inizialmente vuote.
Questa sezione continua con l'argomento seguente.