一个好麻烦的问题大家帮忙我看一下,在我添加下列程序:
if editID_CQ.Text=adoqueryCQ.FieldByName('cqkhid').AsString then showmessage('该卡已注册')
else if editCKH_CQ.Text=adoqueryCQ.FieldByName('cqckh').AsString then begin
if MessageDlg('确定要覆盖?',mtConfirmation,[mbYes,mbNO],1)=mrYes then begin
adoqueryCQ.SQL.Clear;
adoqueryCQ.SQL.Add('Update 长期客户管理 set cqkhid=:a,cqkhxm=:b,cqcph=:c,cqckh=:d,cqckqx=:e,cqkhzz=:f,cqtel=:g,cqvalue=:h,cqtype=:i,cqbkh=:j,cqrktime=:k,cqcktime=:l');
adoqueryCQ.Parameters.ParamByName('a').Value:=editID_CQ.Text;
adoqueryCQ.Parameters.ParamByName('b').Value:=editNAME_CQ.Text;
adoqueryCQ.Parameters.ParamByName('c').Value:=editCPH_CQ.Text;
adoqueryCQ.Parameters.ParamByName('d').Value:=editCKH_CQ.Text;
adoqueryCQ.Parameters.ParamByName('e').Value:=editCKQX_CQ.Text;
adoqueryCQ.Parameters.ParamByName('f').Value:=editADDRESS_CQ.Text;
adoqueryCQ.Parameters.ParamByName('g').Value:=editTEL_CQ.Text;
adoqueryCQ.Parameters.ParamByName('h').Value:=editVALUE_CQ.Text;
adoqueryCQ.Parameters.ParamByName('i').Value:=comboboxCQ.Text;
adoqueryCQ.Parameters.ParamByName('j').Value:=editBKH_CQ.Text;
adoqueryCQ.Parameters.ParamByName('k').Value:=DateTimePicker1.DateTime;
adoqueryCQ.Parameters.ParamByName('l').Value:=editCKTIME_CQ.Text ;
adoqueryCQ.ExecSQL;
end;
end
之前程序可以顺利运行,但是当我添加了这两个判断之后,只要是输入和数据库中ID号或CKH车库号相同的信息,就会出现以下这个adoquery的错误,而且错误信息的提示行是表示在ADOQueryCQAfterScroll的第一句EditID_CQ.Text:=adoqueryCQ.FieldByName('ID').AsString;有错误,为什么啊??
知道这段代码比较长,所以很谢谢可以帮助我看看的朋友们
procedure TMessageDesignForm.ADOQueryCQAfterScroll(DataSet: TDataSet);
begin
EditID_CQ.Text:=adoqueryCQ.FieldByName('ID').AsString;
EditNAME_CQ.Text:=adoqueryCQ.FieldByName('姓名').AsString;
EditADDRESS_CQ.Text:=adoqueryCQ.FieldByName('住址').AsString;
EditTEL_CQ.Text:=adoqueryCQ.FieldByName('电话').AsString;
EditCKH_CQ.Text:=adoqueryCQ.FieldByName('车库号').AsString;
EditCPH_CQ.Text:=adoqueryCQ.FieldByName('车牌号').AsString;
EditBKH_CQ.Text:=adoqueryCQ.FieldByName('补卡号').AsString;
EditCKQX_CQ.Text:=adoqueryCQ.FieldByName('持卡期限').AsString;
EditVALUE_CQ.Text:=adoqueryCQ.FieldByName('费用').AsString;
DateTimePicker1.Date:=strtodate(adoqueryCQ.FieldByName('入库时间').AsString);
EditCKTIME_CQ.Text:=adoqueryCQ.FieldByName('出库时间').AsString;
end;
procedure TMessageDesignForm.ButtonSAVE_CQClick(Sender: TObject);
begin
if…… then showmessage('请将信息填写完整')
else begin
adoqueryCQ.SQL.Clear;
adoqueryCQ.SQL.Add('select * from 长期客户管理');
adoqueryCQ.Open;
if editID_CQ.Text=adoqueryCQ.FieldByName('cqkhid').AsString then showmessage('该卡已注册')
else if editCKH_CQ.Text=adoqueryCQ.FieldByName('cqckh').AsString then begin
if MessageDlg('确定要覆盖?',mtConfirmation,[mbYes,mbNO],1)=mrYes then begin
adoqueryCQ.SQL.Clear;
adoqueryCQ.SQL.Add('Update 长期客户管理 set cqkhid=:a,cqkhxm=:b,cqcph=:c,cqckh=:d,cqckqx=:e,cqkhzz=:f,cqtel=:g,cqvalue=:h,cqtype=:i,cqbkh=:j,cqrktime=:k,cqcktime=:l');
adoqueryCQ.Parameters.ParamByName('a').Value:=editID_CQ.Text;
adoqueryCQ.Parameters.ParamByName('b').Value:=editNAME_CQ.Text;
adoqueryCQ.Parameters.ParamByName('c').Value:=editCPH_CQ.Text;
adoqueryCQ.Parameters.ParamByName('d').Value:=editCKH_CQ.Text;
adoqueryCQ.Parameters.ParamByName('e').Value:=editCKQX_CQ.Text;
adoqueryCQ.Parameters.ParamByName('f').Value:=editADDRESS_CQ.Text;
adoqueryCQ.Parameters.ParamByName('g').Value:=editTEL_CQ.Text;
adoqueryCQ.Parameters.ParamByName('h').Value:=editVALUE_CQ.Text;
adoqueryCQ.Parameters.ParamByName('i').Value:=comboboxCQ.Text;
adoqueryCQ.Parameters.ParamByName('j').Value:=editBKH_CQ.Text;
adoqueryCQ.Parameters.ParamByName('k').Value:=DateTimePicker1.DateTime;
adoqueryCQ.Parameters.ParamByName('l').Value:=editCKTIME_CQ.Text ;
adoqueryCQ.ExecSQL;
end;
end
else begin
adoqueryCQ.SQL.Clear;
adoqueryCQ.SQL.Text:='Insert into 长期客户管理(cqkhid,cqkhxm,cqcph,cqckh,cqckqx,cqkhzz,cqtel,cqvalue,cqtype,cqbkh,cqrktime,cqcktime) values('''+editID_CQ.Text+''','''+editNAME_CQ.Text+''','''+editCPH_CQ.Text+''','''+editCKH_CQ.Text+''','''+editCKQX_CQ.Text+''','''+editADDRESS_CQ.Text+''','''+editTEL_CQ.Text+''','''+editVALUE_CQ.Text+''','''+ComboboxCQ.Text+''','''+editBKH_CQ.Text+''','''+datetostr(DateTimePicker1.Date)+''','''+EditCKTIME_CQ.Text+''')';
try
adoqueryCQ.ExecSQL;
except
showmessage('保存失败,请检查数据库!');
exit;
end;
showmessage('保存成功');
ShowDataForCQ;
SetState(vShow);
end;
end;
end;