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 方法本身并不返回数据集。
------解决方案--------------------
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)');