When I did this experimentally I used the DirectAccess code unit from Opus,
which is true Delphi source code, rather than OLE. I think they now call it
DirectDAO. They used a Fields property of their Database object, something
like

       DbEngine:= CreateEngine();      // create our root DbEngine object
       Database:= DbEngine.OpenDatabase( 'C:\My Documents\Northwind.mdb',
False, False, _ );
      with Database.OpenRecordset( 'Categories', dbOpenDynaset, _ , _) do
try
        while not EOF do begin
          for i:= 0 to Fields.Count - 1 do with Fields[i] do try
            try
              ShowMessage( '  '+ Name+ ' = '+ VarAsType(Value,varString) );
            except
              ShowMessage( '  '+ Name+ ' = (excepted)' );  // if NULL or
other conv error
            end;
          finally Free end;
           MoveNext;
        end {while more};
       finally Free end {recordset};

Of course it is much faster than OLE, I assume you are trying something
better than latebound slow OLE calls :)

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of Chris Crowe
> Sent: Thursday, 3 June 1999 10:32
> To: Multiple recipients of list delphi
> Subject: [DUG]: ADO Hierarchial Record Sets
>
>
> Below is a simple ADO application which uses Hirarchial Record
> sets. I can not get it to work. In VB you use a syntax like the
> following to get access to the child record set.
>
> Set rsTitle = rsPub!rsOldOrders.Value
>
> So in Delphi I tried
>
> rsoldOrders := rsPub.Fields['rsOldOrders'].Value;
>
> But it will not compile with the error "Incompatible types
> OLEVariant and _Recordset"
>
> Does anyone have any ideas here?
>
> 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
>
> ==================================
> unit AdoSample;
>
> interface
>
> uses
>   Windows, Messages, SysUtils, Classes, Graphics, Controls,
> Forms, Dialogs,
>   adodb_tlb,
>   StdCtrls, Buttons, ExtCtrls;
>
> type
>   TForm1 = class(TForm)
>     ListBox1: TListBox;
>     Panel1: TPanel;
>     BitBtn1: TBitBtn;
>     procedure BitBtn1Click(Sender: TObject);
>   private
>     { Private declarations }
>   public
>     { Public declarations }
>   end;
>
> var
>   Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
> procedure TForm1.BitBtn1Click(Sender: TObject);
> Var
>   ADOSql   : String;
>   cn       : Connection;
>   rsOldOrders,
>   rsPub    : Recordset;
>   rsTitle  : Recordset;
>   rsRecent : Recordset;
>   SQL      : String;
> begin
>   Cn := CoConnection.Create;
>   cn.Provider := 'MSDataShape';
>   cn.Open ('dsn=OLE_access_NWIND','','',0);
>
>   rsPub := CoRecordset.Create;
>   rsOldOrders := CoRecordset.Create;
>
>   ADOSql := '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 ';
>
>   rsPub.Open(ADOSql, cn, adOpenStatic, adLockReadOnly, adCmdText);
>   ListBox1.items.Clear;
>   While (rsPub.EOF= FALSE) do
>     begin
>        ListBox1.items.Add('Customer =
> '+rsPub.Fields['CompanyName'].Value);
>
>        rsoldOrders := rsPub.Fields['rsOldOrders'].Value;
>        While (rsoldOrders.EOF= FALSE) do
>          begin
>             ListBox1.items.Add('
> '+rsOldOrders.Fields['OrderDate'].Value);
>             rsOldOrders.Movenext
>          end;
>        rsOldOrders.Close;
>        rsPub.moveNext;
>     end;
>   rsPub.Close;
>
> end;
>
> end.
>
>
> ------------------------------------------------------------------
> ---------
>     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

Reply via email to