procedure TJCXXLR.BitBtn4Click(Sender: TObject); var aq:TADOQuery; begin aq:=TADOQuery.Create(self); if edit2.Text='' then begin messagebox(handle,pchar('系列代码不能为空,请输入!'),'提示',mb_ok); exit; end; if edit3.Text='' then begin messagebox(handle,pchar('系列名称不能为空,请输入!'),'提示',mb_ok); exit; end; with aq do begin Connection:=DataModule1.ADOConnection1; sql.Clear; sql.Add('select CXDM,CXMC from CX where CXDM='''+trim(edIT2.Text)+''''); open; end; if aq.RecordCount<>0 then begin messagebox(handle,pchar('车系代号重名或代码有重复,不能保存'),'提示',mb_ok); exit; end; aq.Close; aq.Free; if ADOQueryLRCXCX.Active=false then ADOQueryLRCXCX.Open; with ADOQueryLRCXCX do begin append; fieldbyname('CXDM').AsString:=edit2.Text; fieldbyname('CXMC').AsString:=edit3.Text; post; end; ADOQueryLRCXCX.SQL.Clear; ADOQueryLRCXCX.SQL.Add('select * from CX where CXDM='''+trim(edit2.Text)+''''); ADOQueryLRCXCX.Open; end;end.
按照这样的操作序列整理下程序代码 with adoquery do begin close; sql.clear; sql.add(); open/execsql; end感觉是 query 没close的原因,楼主跟踪调试看看。
var
aq:TADOQuery;
begin
aq:=TADOQuery.Create(self);
if edit2.Text='' then
begin
messagebox(handle,pchar('系列代码不能为空,请输入!'),'提示',mb_ok);
exit;
end;
if edit3.Text='' then
begin
messagebox(handle,pchar('系列名称不能为空,请输入!'),'提示',mb_ok);
exit;
end; with aq do
begin
Connection:=DataModule1.ADOConnection1;
sql.Clear;
sql.Add('select CXDM,CXMC from CX where CXDM='''+trim(edIT2.Text)+'''');
open;
end;
if aq.RecordCount<>0 then
begin
messagebox(handle,pchar('车系代号重名或代码有重复,不能保存'),'提示',mb_ok);
exit;
end;
aq.Close;
aq.Free;
if ADOQueryLRCXCX.Active=false then ADOQueryLRCXCX.Open;
with ADOQueryLRCXCX do
begin
append;
fieldbyname('CXDM').AsString:=edit2.Text;
fieldbyname('CXMC').AsString:=edit3.Text; post;
end;
ADOQueryLRCXCX.SQL.Clear;
ADOQueryLRCXCX.SQL.Add('select * from CX where CXDM='''+trim(edit2.Text)+'''');
ADOQueryLRCXCX.Open;
end;end.
with adoquery do
begin
close;
sql.clear;
sql.add();
open/execsql;
end感觉是 query 没close的原因,楼主跟踪调试看看。
估计这有问题
with ADOQueryLRCXCX do
begin
append;
fieldbyname( 'CXDM ').AsString:=edit2.Text;
fieldbyname( 'CXMC ').AsString:=edit3.Text; post;
end;
ADOQueryLRCXCX.SQL.Clear;
ADOQueryLRCXCX.SQL.Add( 'select * from CX where CXDM= ' ' '+trim(edit2.Text)+ ' ' ' ');
ADOQueryLRCXCX.Open;
你可以试试在post以后close ADOQueryLRCXCX ,然后再Add SQL语句