关于使用BDE和ORACLE的若干问题

beerfroth 2004-10-16 01:59:46
各位高手,在这里有几个问题问问,比较急,希望大家能够助我一臂之力,帮我解开谜团。
我在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.难道是要有索引的才能够使用刷新么?很奇怪啊。
请大家助我一臂之力。谢谢。
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RaulWhite 2004-10-16
  • 打赏
  • 举报
回复
第一个和第二个我也碰到过,
第一个不明白,也耗了不少时间。
每二个可能是你修改了主键,(在保证只有一个用户的情况下)导致TDataProvider自动生成的SQL找不到在数据库中的主键,返回了这条错误.
swei56 2004-10-16
  • 打赏
  • 举报
回复
额现在不用bde,用ado,在ado 中设置querytable等数据集的Lock type为ltBatchOptimistic显示调用数据集的UpdateBatch(arall)方法提交,用CancelBatch()取消提交,用OnPostError()捕捉错误
beerfroth 2004-10-16
  • 打赏
  • 举报
回复
第一个问题准确地说是这样的,
如果dbgrid里面有了三个记录,使用dbnavigator再新增一个,按道理,应该有四个记录才对的,但是结果是dbgrid里面仍然只有三个记录,其中新增的一个存在了,但是以前的一个记录却消失了,好像是被替换掉了一样的。
如果我退出程序,重新登陆,进入页面,那么此时会发现有四条记录!

to swei56
你说的第二点,能说得更加明白一些么?
swei56 2004-10-16
  • 打赏
  • 举报
回复
一、额没有遇到过
二、是你操作的数据被其他人改动,没有做在提交错误失败时的判断导致数据库自动断开
beerfroth 2004-10-16
  • 打赏
  • 举报
回复
其他的两个问题呢?特别是那个新增了记录之后其他的就看不到了,但是在数据库里面还是存在的,并没有被删除,这是为什么啊?
swei56 2004-10-16
  • 打赏
  • 举报
回复
三、是得要建索引才能更新

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧