Article ID: 194516
Article Last Modified on 7/13/2004
SHAPE {SELECT * FROM PUBLISHERS} ;
APPEND DETAIL {SELECT * FROM Titles} ;
RELATE pub_id to pub_id AS oRSPUBTITLES
* Demonstrate the use of Hierarchical recordsets
* Uses the MSDataShape provider to create a hierarchical
* recordset from the Northwind database's
* Customers, Orders and Order Details tables
*
* It displays on the desktop the CustomerID and Company Name,
* for each customer, the order ids, indented, and for
* each order id, the product id from the order details table
oConnection = CREATEOBJECT("ADODB.Connection")
oRecordSet = CREATEOBJECT("ADODB.Recordset")
WITH oConnection
.Provider="MSDataShape"
.OPEN("DSN=NORTHWIND")
ENDWITH
oRecordSet.ActiveConnection = oConnection
oRecordSet.OPEN ("SHAPE {SELECT * FROM Customers} AS Customers " + ;
"APPEND ((SHAPE {SELECT * FROM Orders} AS Orders " + ;
"APPEND ({SELECT * FROM [Order details]} AS Orderdetails " + ;
"RELATE OrderID TO OrderID) As OrderDetails) " + ;
"RELATE CustomerID TO CustomerID)")
* Loop through the CUSTOMERS table
DO WHILE NOT oRecordSet.EOF
* List the customer ID and Company Name
? oRecordSet.FIELDS("CustomerID").VALUE, ;
oRecordSet.FIELDS("CompanyName").VALUE
* For each customer record, a field called Orders
* is added. This Orders field is a Recordset
oOrders=oRecordSet.FIELDS("Orders").VALUE
DO WHILE NOT oOrders.EOF
* For each Orders record, an OrderID field is
* added, which is a Recordset
? " ", oOrders.FIELDS("OrderID").VALUE
* OrderDetails is a Recordset object
oOrderDetails = oOrders.FIELDS("OrderDetails").VALUE
DO WHILE NOT oOrderDetails.EOF
? " ", oOrderDetails.FIELDS("productid").VALUE
oOrderDetails.MoveNext
ENDDO
oOrders.MoveNext
ENDDO
oRecordSet.MoveNext
ENDDO
189657 How To Use the ADO SHAPE Command
Keywords: kbhowto kbdatabase KB194516