我想判断,DBEdit的Text(如工作部门)的新修改内容,是否在原数据库相应表项所有可能值之中。所以,我在DBEdit的OnChange事件中加入if,判断DataSet。Locate('工作部门',DBEdit.Text,[])是否为True,可恶的是DBEdit在OnChange时,先把DataSet内容修改了,然后再判断,这样我的if语句永为真了。我如果为了判断,重新去数据库查询一变,或者把当前DataSet值复制一个,都感觉代价太高了,有没有高手指点个高招啊?不胜感激。

解决方案 »

  1.   

    不用数据感知控件 如:tedit
      

  2.   

    我是想把数据查询和数据修改放在同一界面里的,所以要用到DBEdit啊
      

  3.   

    在BeforeEdit前把它的值记下来再比较就可以了!
      

  4.   

    我想到几种办法:
    1.你可以另外做一个数据集进行记录,比如先将值存入TStrings或另一TDataSet中等;
    2.你可以只查找除你现在所在行的数据集中的记录;
    3.你可以记下现在的值,然后再复原回以前的值,在进行查找。
      

  5.   

    如果你的字段是静态字段的话可以利用它有OnSetText这个事件啊:
    procedure TfmSFZOptionSet.Query1abcSetText(Sender: TField;
      const Text: String);
    begin
      Text//就是即将要给这个字段赋的内容
      
    end;
    剩下的程序你完全自己解决了
      

  6.   

    用borland的提供的第三方控件:ip 它带查询定位的控件。去找找下载地址。
      

  7.   

    在BeforeEdit前把它的值记下来再比较就可以了
      

  8.   

    可是我用了DBNavigator控件了,怎么BeforeEdit呢?