各位高手,在这里有几个问题问问,比较急,希望大家能够助我一臂之力,帮我解开谜团。
我在DELPHI中,使用了BDE和Oracle数据库,同时,设置了一个DATABASE,Table,还有一个Datasource,另外,使用了数据库控制控件DBGrid以及DBNavigator
发现了几个问题,一、在DBGrid之中,如果我增加了一个纪录,那么会很奇怪地发现,以前显示在DBGrid之中的记录都没有了,只剩下新增加的这个记录,还有,Navigator的几个控制键都变灰了,比如没有办法向前向后移动记录,这是为什么?二、在DBGrid中删除一个记录,有时候可以成功,有时候却提示说:Couldn't perform the edit because another user changed the record ,问题是,除了我当前程序之外,再也没有任何的连接到数据库了。为什么会提示这样的错误呢?三、在dbnavigator里面,我使用那个刷新的按钮的时候,提示错误,说:table does not support this operation because it's not unique indexed.难道是要有索引的才能够使用刷新么?很奇怪啊。
请大家助我一臂之力。谢谢。

解决方案 »

  1.   

    第一个问题准确地说是这样的,
    如果dbgrid里面有了三个记录,使用dbnavigator再新增一个,按道理,应该有四个记录才对的,但是结果是dbgrid里面仍然只有三个记录,其中新增的一个存在了,但是以前的一个记录却消失了,好像是被替换掉了一样的。
    如果我退出程序,重新登陆,进入页面,那么此时会发现有四条记录!to swei56
    你说的第二点,能说得更加明白一些么?
      

  2.   

    额现在不用bde,用ado,在ado 中设置querytable等数据集的Lock type为ltBatchOptimistic显示调用数据集的UpdateBatch(arall)方法提交,用CancelBatch()取消提交,用OnPostError()捕捉错误
      

  3.   

    第一个和第二个我也碰到过,
    第一个不明白,也耗了不少时间。
    每二个可能是你修改了主键,(在保证只有一个用户的情况下)导致TDataProvider自动生成的SQL找不到在数据库中的主键,返回了这条错误.