Isn't fields an array (ie 0..10) or somethinh like that, if you want to use
the field name use use ttable.fieldbyname('fieldame')
richard
"Chris Crowe" <[EMAIL PROTECTED]> on 03/06/99 08:32:17 am
Please respond to [EMAIL PROTECTED]
To: Multiple recipients of list delphi <[EMAIL PROTECTED]>
cc: (bcc: Richard R Huegill/NSO/CSDA)
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