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里面未显示出来,不知道怎么回事!

解决方案 »

  1.   

    execsql; 可以返回影像的数据记录数,如果执行不成功会抛出异常,用Exception 捕获异常提示即可,至于“信息在EditBarCode输入进去后,信息已存入数据库但是在DBGridEh里面未显示出来,不知道怎么回事”没有看懂,execsql 方法本身并不返回数据集。
      

  2.   

    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;
      

  3.   

    看来你数据库没学好……呵呵。这么修改:
    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)');
    if execsql=0 then
    //已经存在,没插入成功
    else
    //插入成功。
      

  4.   

    1.判断重复,重新查询
    2.不显示,重新Open