不知道是什么原因,我写了一个SQL INSERT语句,能运行,可是运行之后 出现如下错误:Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004FB940 in module'Project1.exe' Read of address 00000000  Proccess stoped我也去查看了我代码里的所有的函数的内存地址  可是我居然没有发现 004FB940 这个地址   我点确定之后,光标停在了SQL.Clear   请教高手,这是什么问题?  改如何解决!部分代码如下:
procedure TForm1.TBjsbcClick(Sender: TObject);
var
   //i,j:integer;
   xtmh,wpid,wpmc,wpgg,sz,jsrq1,jsbz:string;
   //jsrq:TDateTime;
begin
  xtmh:=edit9.Text;
  wpid:=edit12.Text;
  wpmc:=edit14.Text;
  wpgg:=edit10.Text;
  sz:=edit11.Text;
  jsrq1:=DateToStr(jsrq.Date);
  jsbz:=edit15.Text;
  //i:=GetJSJLLastDjLsh();
  //j:=i+1;
  if (sz='') then
  begin
    showmessage('请输入酸重!');
  end
  else
  begin
  with JSJL_zj.JSJL do
    begin
    close;
    SQL.Clear;
    SQL.Add('insert JSJLH(XTMH,WPID,WPMC1,WPGG,SZ,JSRQ,JSBZ) values(:xtmhname,:wpidname,:wpmcname,:wpggname,:szname,:jsrqname,:jabzname)');
    //ParamByName('djlsh'):=j;
    Parameters.ParamByName('xtmhname').Value:=xtmh;
    Parameters.ParamByName('wpidname').Value:=wpid;
    Parameters.ParamByName('wpmcname').Value:=wpmc;
    Parameters.ParamByName('wpggname').Value:=wpgg;
    Parameters.ParamByName('szname').Value:=sz;
    Parameters.ParamByName('jsrqname').Value:=jsrq1;
    Parameters.ParamByName('jsbzname').Value:=jsbz;
    execsql;
    edit9.Text:='';
    edit10.Text:='';
    edit11.Text:='';
    edit12.Text:='';
    edit14.Text:='';
    edit15.Text:='';
    showmessage('保存成功!');
    end;
  end;
end;

解决方案 »

  1.   

     JSJL_zj.JSJL 没有创建或者已经销毁了?
      

  2.   

    JSJL_zj.JSJL  说明:JSJL_zj  这是另外创建的一个Form  JSJL:  是这个Form里面的一个ADOQueryprocedure TForm1.Edit9DblClick(Sender: TObject);
    begin
       Application.CreateForm(TJSJL_zj, JSJL_zj);
       JSJL_zj.JSJL.Active:=true;   JSJL_zj.ShowModal;
       //JSJL_zj.Free;
    end;上面的是这个Form 创建的代码  
      

  3.   

    调试,先确认JSJL_zj窗体是否建立,如果你没有执行Edit9DblClick而先执行了你贴出的代码,那就会出错