当前位置:主页>delphi7/进销存和数据库> 文章内容

不知是不是dbExpress的BUG,请高手指点。

发布时间:2010-02-02 | QQ免费站
1楼: 我现在用TSQLQuery + TDataSetProvider + TClientDate开发一个软件,因为数据记录多,有十来万,我将TClientDater的PacketRecords设为100,修改数据并提交(ApplyUpdates(0))时出错,不能完成所需的操作。但如果是将PacketRecords设为-1或完全将数据取过来时就不会出现这个情况,请教如何解决这个问题,因为我不可能将PacketRecords设为-1或将记录完全取过来后才修改记录。 谢谢!

字串5

2楼: 自己顶 字串3

3楼: 错误是什么?
字串8

4楼: “SQL Server Error“ 字串2

5楼: 两种可能: 1.如果PacketRecords设为100,说明应用服务器还要继续读表里的数据,这时候数据库是否已经把表锁定而不让修改,如果设为-1并取回纪录,说明这时表的读操作已经完成从而释放锁这是就可以修改纪录,这还是数据库锁的问题不是dbExpress的BUG.又或者TSQLQuery的属性要设置下,不知道TSQLQuery有没有TADOQuery.LockType相似的属性,你可以设置下看有没有用 2.第二种可能是纪录定位出了问题,因为TDataSetProvider不能根据修改的字段定位纪录从而不能修改,TDataSetProvider.UpdateMode:=upWhereAll设为最严格的定位方式试试看. 字串2

6楼: 曾遇到相同的问题,最后重写了ApplyUpdates事件,在ApplyUpdates中用另一TSQLQuery来进行更新。 你还可以不用ApplyUpdates,另外自行处理。 字串8

7楼: Good Idea,thanks!
字串4