现在插入成功了,但是插入前我想做一次查询,查到相同信息就不插入,这功能下面这段程序没实现,我该怎么改呢?procedure TForm2.suiButton1Click(Sender: TObject);
var
i : integer;
begin
if length(trim(suiedit1.text)) = 0 then
begin
form1.ShowM.Text := '请输入票据号码!';
form1.ShowM.ShowModal;
exit;
end;
i := globalfunc.checktextisnumeric(trim(suiedit1.Text),'票据号码');
if (i=2) or (i=3) then
begin
suiedit1.Text := '';
exit;
end;
if i=0 then
begin
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('select * from BenHang where GF_Notedata = #' + formatdatetime('yyyy/mm/dd',datetimepicker1.Date) + '# and GF_NoteNumber = ' + trim(suiedit1.Text) );
form3.ADOQuery1.ExecSQL;
if form3.ADOQuery1.FieldCount = 0 then
begin
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('insert into BenHang(GF_Notedata,GF_NoteNumber) values(#'+formatdatetime('yyyy/mm/dd',DateTimePicker1.Date)+'#,'+trim(suiedit1.Text)+')');
form3.ADOQuery1.ExecSQL;
suiedit1.Text := '';
suiedit1.SetFocus;
exit;
end else
begin
form1.ShowM.Text:='该票据信息已存在!';
form1.ShowM.ShowModal;
exit;
end;
end;
end;
var
i : integer;
begin
if length(trim(suiedit1.text)) = 0 then
begin
form1.ShowM.Text := '请输入票据号码!';
form1.ShowM.ShowModal;
exit;
end;
i := globalfunc.checktextisnumeric(trim(suiedit1.Text),'票据号码');
if (i=2) or (i=3) then
begin
suiedit1.Text := '';
exit;
end;
if i=0 then
begin
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('select * from BenHang where GF_Notedata = #' + formatdatetime('yyyy/mm/dd',datetimepicker1.Date) + '# and GF_NoteNumber = ' + trim(suiedit1.Text) );
form3.ADOQuery1.ExecSQL;
if form3.ADOQuery1.FieldCount = 0 then
begin
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('insert into BenHang(GF_Notedata,GF_NoteNumber) values(#'+formatdatetime('yyyy/mm/dd',DateTimePicker1.Date)+'#,'+trim(suiedit1.Text)+')');
form3.ADOQuery1.ExecSQL;
suiedit1.Text := '';
suiedit1.SetFocus;
exit;
end else
begin
form1.ShowM.Text:='该票据信息已存在!';
form1.ShowM.ShowModal;
exit;
end;
end;
end;
解决方案 »
- Delphi2007下有什么可用的远程监控 控件
- 诚聘Delphi程序员(上海)
- 新创窗体那个"关闭按钮"它的代码是?
- 回答问题送国际域名一个,加300分,ActiveForm超高手请进,绝世难题。回答正确后直接找QQ:82865领奖
- 如何判断一个变量所指向的内存空间是有效的(即没有被释放)?
- delphi如何对cookie进行读取操作!!
- 怎样给软件加序列号,用什么软件?
- fastreport保存为excel的问题,分不够可以再加!!
- 急!为什么RichEdit中的CFM_HIDDEN(隐藏)没有效果,象其他的CFM_STRIKEOUT(删除线)却有效果,我用的是RichEdit3.0版本。
- 谁有带CheckBox的文件列表控件
- 请各位谈谈Prepare和UnPrepare在Query中的作用和用法
- 往数据集中输入数据时,当移到下一条记录时,上一条记录自动清空?
if form3.adoquery1.recordcount=0 then试试,最好是写在beforeinsert中
不过简单的方法是在insert语句中直接加子查询判断该值是否存在该表中
语句较复杂,可是速度快多啦。
var
i : integer;
begin
if length(trim(suiedit1.text)) = 0 then
begin
form1.ShowM.Text := '请输入票据号码!';
form1.ShowM.ShowModal;
exit;
end;
i := globalfunc.checktextisnumeric(trim(suiedit1.Text),'票据号码');
if (i=2) or (i=3) then
begin
suiedit1.Text := '';
exit;
end;
if i=0 then
begin
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Text:='select Count(*) as ReCount from BenHang where GF_Notedata = #' + formatdatetime('yyyy/mm/dd',datetimepicker1.Date) + '# and GF_NoteNumber = ' + trim(suiedit1.Text);
form3.ADOQuery1.Open;
if form3.ADOQuery1['ReCount']= 0 then
begin
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('insert into BenHang(GF_Notedata,GF_NoteNumber) values(#'+formatdatetime('yyyy/mm/dd',DateTimePicker1.Date)+'#,'+trim(suiedit1.Text)+')');
form3.ADOQuery1.ExecSQL;
suiedit1.Text := '';
suiedit1.SetFocus;
exit;
end else
begin
form1.ShowM.Text:='该票据信息已存在!';
form1.ShowM.ShowModal;
exit;
end;
end;
end;