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的时候出的内存错
//肯定是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 + '''');
不是的,sql语句我已经打印出来运行过没问题的,有问题的话应该是会报sql出错的,就不是内存错误了
确认一下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语句的问题
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的时候出的内存错
//肯定是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 + '''');
确认一下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语句的问题