ADOQuery+DBGrid的问题:
  按增加按扭在DBGrid中增加一条记录,按保存按扭后,若某一字段值的内容与原始记录重复,则提示错误,那要如何检测到这条新增记录某一字段的值呢?

解决方案 »

  1.   

    麻烦的方法,插入前先按照该字段的内容用select按照字段检索一遍,如果ADOQuery.recordCount<>0,就说明有啦
      

  2.   

    不是很清楚你的意思,
    那你这样判断不行吗?
    select count(*) from TableName where FieldName = 数值
      

  3.   

    同意bloodfree的方法。
    我一直就是这么做的。
    哇~哈~~~~~哈~哈~!
      

  4.   

    你也可以用异常处理来做,就是出错则认为是重复!
    try
     //这里最好先判断不能为空......
     append;
     post;
     .
     .
     .
    except
      on e:exception do
      begin
         showmessage('记录重复!');
         edit1.setfocus();
      end;
    end;
    你这个也可以:
    select count(*) as aa from TableName where FieldName = 数值;
    再判断 aa 是否大于0,也是行的,但......
      

  5.   

    同意 Bloodfree的方法~!
    或者你用事务做做也可以
      

  6.   

    问题是如何得到DBGrid中新增的数据
      

  7.   

    异常的种类多,也没法一一判断
    所以说前面不是加了不能为空等判断,一般为说,除去相应错误,剩下的就认为是重复了。当然,这不是绝对正确的!
    问题是如何得到DBGrid中新增的数据
    ==============================
    如果有错,就添加不到数据库里去了!如何得到新增的数据?
      

  8.   

    在DBGrid的OnColExit事件中:
    例:procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
    if DBGrid1.SelectedField.DisplayLabel = 'a' then        //'a' 为你的不能这空的字段名;
       begin
       if DBGrid1.SelectedField.AsString = '' then
           showmessage('不能为空!');
       end;
    end;
      

  9.   

    我用DBGrid增加记录,在保存的时候判断数据有否重复,如果数据没有重复则保存到数据库,否则就提示错误! 那我怎么从DBGrid中得到这个新增的记录内容呢?
      

  10.   

    呵呵
    比你还先发
    测试过,没什么问题在DBGrid的OnColExit事件中:
    例:procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
    if DBGrid1.SelectedField.DisplayLabel = 'a' then        //'a' 为你的不能这空的字段名;
       begin
       if DBGrid1.SelectedField.AsString = '' then
           showmessage('不能为空!');
       end;
    end;