请问各位大侠:
我把一个SQDataSet放在一个DataModule(设为单元2)中,我想在另外一个单元(设为单元1)中访问DataModule中的SQDataSet,而且也在单元1中use了单元2,但是编译时系统提示出错。
例如以下完整程序:(以下程序是我调试用,并无其他用途)
单元1:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FMTBcd, DB, SqlExpr;type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  showmessage(booltostr(DataModule2.SQLDataSet1.Active));{编译时此处报错}
end;end.单元2:
unit Unit2;interfaceuses
  SysUtils, Classes, FMTBcd, DB, SqlExpr,Dialogs;type
  TDataModule2 = class(TDataModule)
    SQLDataSet1: TSQLDataSet;
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  DataModule2: TDataModule2;implementationuses Unit1;{$R *.dfm}end.

解决方案 »

  1.   

    你循环引用了。
    作如下改动单元2:
    unit Unit2;interfaceuses
      SysUtils, Classes, FMTBcd, DB, SqlExpr,Dialogs,Unit1;type
      TDataModule2 = class(TDataModule)
        SQLDataSet1: TSQLDataSet;
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      DataModule2: TDataModule2;implementation
    {$R *.dfm}end.
      

  2.   

    .
    .
    .
    procedure TForm1.FormCreate(Sender: TObject);
    var
      MData:TDataModule2;
    begin
      MData:=TDataModule2.create(nil);
      showmessage(booltostr(DataModule2.SQLDataSet1.Active));{编译时此处报错}
    end;end.
    .
    .
    .
      

  3.   

    因为你的MData是动态创建的那你在Form1要引用DataModule2呀。