因为触发器比较繁杂,因此经常出现诸如:
1.Key column information is insufficient or incorrect.Too many rows were affected by update.
2.Row cannot be located for updating.Some values may have been changed since it was last read.
3.Parameter object is improperly defined.Inconsistent or incomplete information was provided.
在delphi程序中,我是先点击查询按钮然后更改查询出来的数据,每改完一条数据后会出现如上中的一种提示,我必须重新再点击一次查询按钮才可以进行第二次更改(前面虽然出现提示,但数据是正常插入和修改了的)。
请问各位高手,有什么办法能让这些提示不出现,并且不用第二次点查询按钮而可以直接对查询结果进行修改和插入等。
谢谢!

解决方案 »

  1.   

    try
      yourfucntions
    exception
     on e:eexception do
       showmessage(e.messagestring)
       if e.erroce =XXX then
       begin
         dosomefunctions
       end;
    end
      

  2.   

    yourfucntions?
    我不是用函数执行的
    是直接在查询结果(dbgrid)中修改数据,然后改了一条之后会出现上面的那些提示。
    我是想可以在dbgrid中一直修改而不用每改一条都要查询一次(相当于刷新了)。
      

  3.   

    有主键的,不过是一个timestamp类型。
    而且没有主键的话,数据也就没办法修改了。
      

  4.   

    你查出来的有相同数据吧?DBGRID是自动提交功能的,可以直接修改
      

  5.   

    TO  xiaozoujia(云游四海) :是的,有相同数据。
    那么,怎么不要那些提示呢?
      

  6.   

    这个我也没有太好的办法,因为程序在更改数据时会把相同的记录都改掉。
    就算不改掉,也会出现提示。你试一下在DBGRID中的ONCELLCLICK的触发器中把你的数据源DISCONTROL,定位你改的记录位置,在ONEXIT触发器中提交并激活他试试,我没有试过。
      

  7.   

    TO xiaozoujia(云游四海) :
    我将触发器中的条件加了timestamp进去就不提示了:)
    主要是不知道怎么按照你的意思来改,就自己找办法了,呵呵。