I got an answer from a Borland News Group...
In VB
Set rsTitle = rsPub!rsOldOrders.Value
in Delphi
rsOldOrders := IDispatch(rsPub.Fields['rsOldOrders'].Value) as Recordset;
Simple is you know how....
Chris
Christopher Crowe (Software Developer)
Microsoft MVP, MCP
Adrock Software
Byte Computer & Software LTD
P.O Box 13-155
Christchurch
New Zealand
Phone/Fax (NZ) 03-3651-112
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of Chris Crowe
> Sent: Thursday, 3 June 1999 20:27
> To: Multiple recipients of list delphi
> Subject: RE: [DUG]: ADO Hierarchial Record Sets
>
>
> The idea behind the ADO hierarchial record sets is this.
>
> Say you have customers
>
> and you have Current Orders
>
> and you have Old Orders
>
> You can run a query (odd as it may seem, but very powerful)
>
> SHAPE {SELECT * FROM customers}
> APPEND ({SELECT * From orders Where orderdate
> #1/1/1996# And customerid = ?}
> RELATE customerid TO PARAMETER 0) AS rsOldOrders,
> ({SELECT * From orders WHERE orderdate >= #1/1/1996#}
> RELATE customerid TO customerid) AS rsRecentOrders
>
> What you get back is a single record set, of all the customers
> like a normal Select * from Customers. But there is two extra
> fields RsOldorders, and rsRecentorders. They are a full record
> set in their own right. You can then (somehow in delphi) assign
> the record set to another recordset and use the normal
>
> while (X.EOF = FALSE) do
> ....
> Movenext
> end;
>
> So you might have Customers, and their orders, and each order has
> another sub record set, etc..
>
> The whole thing is handled via ADO. Puts things like the BDE to
> shame, well it is new technology.
>
> The part I can not get to work in Delphi is assigning the child
> record set back to a recordset object.
>
> in VB this is all you need.
>
> Set rsTitle = rsPub!rsOldOrders.Value
> Do While Not rsTitle.EOF
> List1.AddItem (" " & rsTitle!orderdate)
> rsTitle.MoveNext
> Loop
> rsTitle.Close
>
> here is some VB code which does exactly what I want in Delphi.
>
> Private Sub Command2_Click()
> Dim cn As ADODB.Connection, rsPub As ADODB.Recordset, _
> rsTitle As ADODB.Recordset, SQL As String, rsRecent As
> ADODB.Recordset
> Set cn = New ADODB.Connection
> Set rsPub = New ADODB.Recordset
> cn.Provider = "MSDataShape"
> cn.Open "dsn=OLE_access_NWIND"
>
> ' I have a edit field on a VB form which has this SQL code.
> '
> ' SHAPE {SELECT * FROM customers}
> ' APPEND ({SELECT *
> ' From orders
> ' Where orderdate < #1/1/1998# And customerid
> '= ?}
> ' RELATE customerid TO PARAMETER 0) AS
> 'rsOldOrders,
> ' ({SELECT *
> ' From orders
> ' WHERE orderdate >= #1/1/1998#}
> ' RELATE customerid TO customerid) AS
> 'rsRecentOrders
>
>
> List1.Clear
>
> rsPub.Open Me!Text1.Text, cn, adOpenStatic,
> adLockReadOnly, adCmdText
> Do While Not rsPub.EOF
>
> List1.AddItem ("cUSTOMER " & rsPub!CompanyName)
>
> List1.AddItem ("")
> List1.AddItem (" Old Orders")
> List1.AddItem (" ==========")
>
> Set rsTitle = rsPub!rsOldOrders.Value
> Do While Not rsTitle.EOF
> List1.AddItem (" " & rsTitle!orderdate)
> rsTitle.MoveNext
> Loop
> rsTitle.Close
>
> List1.AddItem (" ")
> List1.AddItem (" Recent Orders")
> List1.AddItem (" =============")
>
> Set rsRecent = rsPub!rsRecentOrders.Value
> Do While Not rsRecent.EOF
> List1.AddItem (" " & rsRecent!orderdate)
> rsRecent.MoveNext
> Loop
> rsRecent.Close
>
> rsPub.MoveNext
> List1.AddItem ("")
> Loop
> rsPub.Close
> cn.Close
> Set rsTitle = Nothing
> Set rsPub = Nothing
> Set cn = Nothing
> End Sub
>
> Chris
>
> ------------------------------------------------------------------
> ---------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
>
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz