如图

解决方案 »

  1.   


    procedure TfrmEmployeeInfo.qryEmployeeAfterScroll(DataSet: TDataSet);
    var
      sIdType,sIdNo,sName,sCustType:string;
    begin
      With QryAccoinfo do
      try
        DataBaseName := GDataBAse.DatabaseName;
        if Active then Close;
        sIdType := qryEmployee.FieldByName('C_IDENTITYTYPE').AsString;
        sIdNo := qryEmployee.FieldByName('VC_IDENTITYNO').AsString;
        sName := qryEmployee.FieldByName('VC_CUSTOMNAME').AsString;
        sCustType := qryEmployee.FieldByName('C_CUSTTYPE').AsString;
        SQL.Clear;
        SQL.Add('Select a.*,b.c_identitytype,b.vc_identityno,b.c_custtype from taccoinfo a,tcustinfo b ');
        SQL.Add('WHERE a.vc_custno = b.vc_custno and b.c_identitytype = '''+sIdType+'''');
        SQL.Add(' AND b.vc_identityno = ''' + sIdNo + '''');
        SQL.Add(' AND a.c_custtype = ''' + sCustType + '''');
        open;
      EXCEPT ON E:Exception DO
         AppMessageBox(E.Message,3);
      end;
    end;经分析是open的时候出的内存错
      

  2.   


    //肯定是sql语句有问题, 打印出来看一下, 那儿不对纠正一下.sIdType := qryEmployee.FieldByName('C_IDENTITYTYPE').AsString;
        sIdNo := qryEmployee.FieldByName('VC_IDENTITYNO').AsString;
        sName := qryEmployee.FieldByName('VC_CUSTOMNAME').AsString;
        sCustType := qryEmployee.FieldByName('C_CUSTTYPE').AsString;showmessage('Select a.*,b.c_identitytype,b.vc_identityno,b.c_custtype from taccoinfo a,tcustinfo b ');
        SQL.Add('WHERE a.vc_custno = b.vc_custno and b.c_identitytype = '''+sIdType+'''');
        SQL.Add(' AND b.vc_identityno = ''' + sIdNo + '''');
        SQL.Add(' AND a.c_custtype = ''' + sCustType + '''');
      

  3.   

    不是的,sql语句我已经打印出来运行过没问题的,有问题的话应该是会报sql出错的,就不是内存错误了
      

  4.   


    确认一下Tquery可用吧With QryAccoinfo do
      try
        DataBaseName := GDataBAse.DatabaseName;
        Close;
        SQL.Add('Select * from taccoinfo a,tcustinfo b ');
        open;
      EXCEPT ON E:Exception DO
         AppMessageBox(E.Message,3);
      end;
    如果可用, 那就找sql语句的问题