Exemplo de data shaping
O comando de formatação de dados a seguir demonstra como criar um Recordset hierárquico com base nas tabelas Customers e Orders no banco de dados Northwind.
SHAPE {SELECT CustomerID, ContactName FROM Customers}
APPEND ({SELECT OrderID, OrderDate, CustomerID FROM Orders} AS chapOrders
RELATE customerID TO customerID)
Quando esse comando é usado para abrir um objeto Recordset (conforme mostrado no Exemplo de modelagem de dados do Visual Basic), ele cria um capítulo (chapOrders) para cada registro retornado da tabela Customers. Esse capítulo consiste em um subconjunto do Recordset retornado da tabela Orders. O capítulo chapOrders contém todas as informações solicitadas sobre os pedidos feitos pelo cliente especificado. Neste exemplo, o capítulo consiste em três colunas: OrderID, OrderDate e CustomerID.
As duas primeiras entradas do Recordset formatado resultante são as seguintes:
CustomerID | ContactName | OrderID | OrderDate | CustomerID |
---|---|---|---|---|
ALFKI | Mila Moraes | 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 | Sara Melo | 10308 10625 10759 10926 |
1996-09-18 1997-08-08 1997-11-28 1998-03-04 |
ANATR ANATR ANATR ANATR |
Em um comando SHAPE, APPEND é usado para criar um Recordset filho relacionado ao Recordset pai (conforme retornado do comando específico do provedor imediatamente após a palavra-chave SHAPE que foi discutida anteriormente) pela cláusula RELATE. Normalmente, o pai e o filho têm, pelo menos, uma coluna em comum: o valor da coluna em uma linha do pai é o mesmo que o valor da coluna em todas as linhas do filho.
Há uma segunda maneira de usar comandos SHAPE: ou seja, para gerar um Recordset pai de um Recordset filho. Os registros no Recordset filho são agrupados, normalmente com a cláusula BY, e uma linha é adicionada ao Recordset pai para cada grupo resultante no filho. Se a cláusula BY for omitida, o Recordset filho formará um só grupo e o Recordset pai conterá exatamente uma linha. Isso é útil para calcular agregações de "total geral" em todo o Recordset filho.
A construção do comando SHAPE também permite que você crie um Recordset formatado por meio de programação. Em seguida, você pode acessar os componentes do Recordset por meio de programação ou por meio de um controle visual apropriado. Um comando de forma é emitido como qualquer outro texto de comando do ADO. Para obter mais informações, confira Comandos de forma em geral.
Independentemente da forma como o Recordset pai é formado, ele conterá uma coluna de capítulo que é usada para relacioná-lo a um Recordset filho. Se você desejar, o Recordset pai também pode ter colunas que contêm agregações (SUM, MIN, MAX etc.) sobre as linhas filho. O Recordset pai e filho podem ter colunas que contêm uma expressão na linha no Recordset, bem como colunas que são novas e inicialmente vazias.
Esta seção continua com o tópico a seguir.