delphi7中往数据库表中插入数据时,若重复则提示,代码如上
delphi7中往数据库表中插入数据时,若重复则提示,代码如下
procedure TQABarCodeCount.EditBarCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
EditBarCode.SetFocus;
begin
if trim(EditBarCode.Text) <> '' then
begin
BarCodeInfo := sys.AnalysisBarCode(EditBarCode.Text);
begin
with jsquery do
begin
close;
sql.clear;
sql.add('insert into jit_QACount(fbatchno,scph,fqty,fdate,state)');
sql.add('values ('''+trim(EditBarCode.Text)+''','''+BarCodeInfo[6]+''',');
sql.add(''''+BarCodeInfo[4]+''',');
sql.add(''''+datetimetostr(GetServerDateTime)+''',0)');
execsql;
end;
end;
end;
end;
end;
要怎么加代码,若fbatchno重复则提示已录入。并且此段代码运行后,信息在EditBarCode输入进去后,信息已存入数据库但是在DBGridEh里面未显示出来,不知道怎么回事!
------解决方案--------------------
execsql; 可以返回影像的数据记录数,如果执行不成功会抛出异常,用Exception 捕获异常提示即可,至于“信息在EditBarCode输入进去后,信息已存入数据库但是在DBGridEh里面未显示出来,不知道怎么回事”没有看懂,execsql 方法本身并不返回数据集。
------解决方案--------------------
------解决方案--------------------
看来你数据库没学好……呵呵。
这么修改:
sql.add('if not exists (select fbatchno from jit_QACount where fbatchno='''+trim(EditBarCode.Text)+''') '
sql.add('insert into jit_QACount(fbatchno,scph,fqty,fdate,state)');
sql.add('values ('''+trim(EditBarCode.Text)+''','''+BarCodeInfo[6]+''',');
sql.add(''''+BarCodeInfo[4]+''',');
sql.add(''''+datetimetostr(GetServerDateTime)+''',0)');
procedure TQABarCodeCount.EditBarCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
EditBarCode.SetFocus;
begin
if trim(EditBarCode.Text) <> '' then
begin
BarCodeInfo := sys.AnalysisBarCode(EditBarCode.Text);
begin
with jsquery do
begin
close;
sql.clear;
sql.add('insert into jit_QACount(fbatchno,scph,fqty,fdate,state)');
sql.add('values ('''+trim(EditBarCode.Text)+''','''+BarCodeInfo[6]+''',');
sql.add(''''+BarCodeInfo[4]+''',');
sql.add(''''+datetimetostr(GetServerDateTime)+''',0)');
execsql;
end;
end;
end;
end;
end;
要怎么加代码,若fbatchno重复则提示已录入。并且此段代码运行后,信息在EditBarCode输入进去后,信息已存入数据库但是在DBGridEh里面未显示出来,不知道怎么回事!
------解决方案--------------------
execsql; 可以返回影像的数据记录数,如果执行不成功会抛出异常,用Exception 捕获异常提示即可,至于“信息在EditBarCode输入进去后,信息已存入数据库但是在DBGridEh里面未显示出来,不知道怎么回事”没有看懂,execsql 方法本身并不返回数据集。
------解决方案--------------------
procedure TQABarCodeCount.EditBarCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key <> VK_RETURN then exit;
EditBarCode.SetFocus;
if trim(EditBarCode.Text) = '' then exit;
BarCodeInfo := sys.AnalysisBarCode(EditBarCode.Text);
with jsquery do
begin
close;
sql.text:='select 1 from jit_QACount where fbatchno = '+QuotedStr(trim(EditBarCode.Text));
Open;
if RecordCount>0 then
begin
showmessage('数据已录入');
exit;//如果已录入都还再次提交,将本行语句删除或注释即可
end;
close;
sql.clear;
sql.add('insert into jit_QACount(fbatchno,scph,fqty,fdate,state)');
sql.add('values ('+QuotedStr(trim(EditBarCode.Text))+','+QuotedStr(BarCodeInfo[6])+',');
sql.add(QuotedStr(BarCodeInfo[4])+',');
sql.add(QuotedStr(datetimetostr(GetServerDateTime))+',0)');
execsql;
end;
end;
------解决方案--------------------
看来你数据库没学好……呵呵。
这么修改:
sql.add('if not exists (select fbatchno from jit_QACount where fbatchno='''+trim(EditBarCode.Text)+''') '
sql.add('insert into jit_QACount(fbatchno,scph,fqty,fdate,state)');
sql.add('values ('''+trim(EditBarCode.Text)+''','''+BarCodeInfo[6]+''',');
sql.add(''''+BarCodeInfo[4]+''',');
sql.add(''''+datetimetostr(GetServerDateTime)+''',0)');