STRS:=FrmBrowsShow('select CONVERT(VARCHAR(12),地址号) AS 地址号,描述1,详细描述 from v_F0101 WITH(NOLOCK) where 搜索类型=''H'' ORDER BY 地址号',0);
   if Trim(Strs)<>'' then
   begin
     adoquery1.FieldByName('雇员号').AsString:=TRIM(strS);//运行这一句时出下面的错误.
   end;
程序运行时出现如下错误:
---------------------------
Debugger Exception Notification
---------------------------
Project zyjxc.exe raised exception class EAccessViolation with message 'Access violation at address 4032CECC in module 'dbrtl60.bpl'. Read of address 00000030'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
是什么原因?
急~~~~~

解决方案 »

  1.   

    如果adoquery和所访问的字段都存在且正确的话,就重启delphi试试吧
      

  2.   

    TFrmP0852中:
      with FrmP0852A.QryP0851A do
      begin
        Connection:=ADOConn;
        if Active then Close;
        sql.Clear;
        sql.Add('select * from v_F0851 WHERE 1=2');
        Open;
        Append;
      end;
      FrmP0852A.EdtEoco.Text:= IntToStr(GetNewDocNo(Trim(edtCTO.Text)));
      FrmP0852A.edtType.Text:=edtCTO.Text;
      FrmP0852A.EdtCO.Text:=Edtkco.Text;
      FrmP0852A.DatEftj.Date:=Date;
      FrmP0852A.DatTSDJ.Date:=Date;
      FrmP0852A.Datcret.Date:=Date;
      FrmP0852A.ShowModal;
      FreeAndNil(FrmP0852A);TFrmP0852A中:
    procedure TFrmP0852A.DBGridEh1Columns0EditButtonClick(Sender: TObject; var Handled: Boolean);
    var
      STRS:STRING;
    begin
      if QryP0851A.State in [dsedit] then Exit;
      STRS:=FrmBrowsShow('select CONVERT(VARCHAR(12),地址号) AS 地址号,描述1,详细描述 from v_F0101 WITH(NOLOCK) where 搜索类型=''H'' ORDER BY 地址号',0);
      IF Trim(STRS)<>'' then
      begin
     //   QryP0851A.Edit;
        QryP0851A.Fieldbyname('雇员号').AsString:=TRIM(strS);
      END;
      

  3.   

    检查QryP0851A.Fieldbyname('雇员号').AsString:=TRIM(strS); 
    QryP0851A状态如何,'雇员号'字段存在吗
      

  4.   

    像是Delphi的bug,重启Delphi就好了
      

  5.   

    TFrmP0852A中: 
    procedure TFrmP0852A.DBGridEh1Columns0EditButtonClick(Sender: TObject; var Handled: Boolean); 
    var 
      STRS:STRING; 
    begin 
      if QryP0851A.State in [dsedit] then Exit; 
      STRS:=FrmBrowsShow('select CONVERT(VARCHAR(12),地址号) AS 地址号,描述1,详细描述 from v_F0101 WITH(NOLOCK) where 搜索类型=''H'' ORDER BY 地址号',0); 
      IF Trim(STRS) <>'' then 
      begin 
    //  QryP0851A.Edit; 
        QryP0851A.Fieldbyname('雇员号').AsString:=TRIM(strS); 
      END;
    這個只是用來插入??如果是的話,應該是沒有問題的
    QryP0851A  是動態建立的?Create  了吧??有沒有提前釋放了??
    其它就沒有什麼再出的問題了。
      

  6.   

    请问dbrtl60.bpl文件是DELPHI自带的文件吗?
    在什么路径中?
      

  7.   

    单步时,QryP0851A.FieldByName('雇员号').AsString:=TRIM(strS); QryP0851A为空
    procedure TFrmP0852A.DBGridEh1Columns0EditButtonClick(Sender: TObject; var Handled: Boolean); 
    var 
      STRS:STRING; 
    begin 
      if QryP0851A.State in [dsedit] then Exit; 
      STRS:=FrmBrowsShow('select CONVERT(VARCHAR(12),地址号) AS 地址号,描述1,详细描述 from v_F0101 WITH(NOLOCK) where 搜索类型=''H'' ORDER BY 地址号',0); 
      IF Trim(STRS) <>'' then 
      begin 
    //  QryP0851A.Edit; 
        QryP0851A.Fieldbyname('雇员号').AsString:=TRIM(strS); 
      END;
      

  8.   

    步时,QryP0851A.FieldByName('雇员号').AsString:=TRIM(strS); QryP0851A为空 
    那就是釋放了或者沒有建立成功
      

  9.   


    一般情况下,是由于访问了非法的地址而引起的无效地址错误。
    这种错误多半是由于对象被销毁了然后访问,或者是重复销毁引起。
    从代码上看,FrmBrowsShow出错的可能性很大。