设一程序主窗体为FormMain,在它的OnCreat事件中编写代码启动登陆窗体FormLoginprocedure TFormMain.FormCreate(Sender: TObject);
begin
  Application.CreateForm(UnitLogin.TFormLogin, FormLogin);
  FormLogin.ShowModal;
  FormLogin.Free;
end;设有一数据模块DataModule1,放置ADOConnection1和ADOQuery1,前者的ConnectionString和后者的Connection属性设置正确。登陆窗体FormLogin中有两个Edit控件,分别为EditID和EditPW,用于输入用户名和密码;还有一个Button控件BtnLogin,用于进行验证。有如下代码出现问题procedure TFormLogin.BtnLoginClick(Sender: TObject);
begin
  DataModule1.ADOQuery1.Close;
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Add('select * from 登陆信息 where 用户名 = :a and 密码 = :b');
  DataModule1.ADOQuery1.Parameters.ParamByName('a').Value := Trim(EditID.Text);
  DataModule1.ADOQuery1.Parameters.ParamByName('b').Value := Trim(EditPW.Text);
  DataModule1.ADOQuery1.Open;
  if DataModule1.ADOQuery1.RecordCount > 0 then 登陆成功的代码 else 登陆失败的代码;
end;错误提示如下图,求高人指点。

解决方案 »

  1.   

    错误提示停留在第一行DataModule1.ADOQuery1.Close;
      

  2.   

    请问DataModule1模块,创建了吗.
    你必须在FormLogin前将DataModule1创建好.可以在auto-create forms中设置DataModule1为第一个
      

  3.   

    DataModule1此模块没有创建,此模块要在TFormMain前创建,不然会出现无效的引用
      

  4.   

    原代码如下,我终于发现是哪里出现了错误!
    跪谢wyd531和flychenjun,我特佩服你们!加分,你俩一人一半!再次跪谢!
    program MyRD;uses
      Forms,
      UnitMain in 'UnitMain.pas' {FormMain},
      UnitDataModule in 'UnitDataModule.pas' {DataModule1: TDataModule1},
      UnitLogin in 'UnitLogin.pas' {FormLogin};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TFormMain, FormMain);
      Application.CreateForm(TDataModule1, DataModule1); // 这里出现了错误
      Application.Run;
    end.