两个窗体间传递数据,我传过去一个变量,然后在另一个窗体中利用adoquery ,DBgrid和这个变量查询数据,显示在该窗体的dbgrid 控件中,发生如下错误:
 "存取地址******** 违例发生在模块中,"什么原因呢?

解决方案 »

  1.   

    unit FileManage;(第一个窗体)procedure TfrmFile.dbgrd1DblClick(Sender: TObject);
    begin
      selectID :=DBGrd1.Fields[1].AsString;
      frmFileInfo .Show ();
      frmFileInfo .DataShow ();
    end;
    我想双击dbgrid 中某一行数据,在第二个窗体中显示unit FileInfo;(第二个窗体)
    窗体中有procedure DataShow();
    frmFileInfo .qryQ1 .Close ;
      frmFileInfo .qryQ1 .SQL .Clear ;
      frmFileInfo .qryQ1 .SQL .Add('select * from 人事档案 where 编号='+'''selectID''');  frmFileInfo .qryQ1 .Open ;
      frmFileInfo .Edt1.Text:=qryQ1 .fieldbyname('编号').AsString;
      .......end;
      

  2.   

    "selectID"在第二个窗体中定义为全局变量
      

  3.   

    unit FileManage;(第一个窗体)procedure TfrmFile.dbgrd1DblClick(Sender: TObject);
    begin
      selectID :=DBGrd1.Fields[1].AsString;
      frmFileInfo .Show ();
      frmFileInfo .DataShow (selectID );
    end;
    我想双击dbgrid 中某一行数据,在第二个窗体中显示unit FileInfo;(第二个窗体)
    窗体中有procedure DataShow( selectID:String );
    frmFileInfo .qryQ1 .Close ;
      frmFileInfo .qryQ1 .SQL .Clear ;
      frmFileInfo .qryQ1 .SQL .Add('select * from 人事档案 where 编号='+'''selectID''');  frmFileInfo .qryQ1 .Open ;
      frmFileInfo .Edt1.Text:=qryQ1 .fieldbyname('编号').AsString;
      .......end;
      

  4.   

    还是不行啊!
    运行会弹出"CPU 错误"对话框
      

  5.   

    frmFileInfo .DataShow (selectID );unit FileInfo;(第二个窗体)
    窗体中有procedure DataShow( selectID:String );
    *************************************************DataShow仅仅是写在FileInfo单元还是frmFileInfo 对象的一个方法。
      

  6.   

    frmFileInfo  窗体创建了吗?
      

  7.   

    DataShow是写在FileInfo单元中的一个方法.
    是不是要在单元中加入frmFileInfo.create(self);
    unit FileManage;(第一个窗体单元)procedure TfrmFile.dbgrd1DblClick(Sender: TObject);
    begin
      selectID :=DBGrd1.Fields[1].AsString;
      frmFileInfo.create(self);
      frmFileInfo .Show ();
      frmFileInfo .DataShow (selectID );
    end;
    这样还是不行,同样出现"CPU 错误"对话框