无法为更新定位行。一些值可能已在最后一次读取后已更改。

导读:

  提示:在使用TADOTable 进行更新操作的时候也会出现类似的问题。

  原因:

  Access 2000 (9.0.2812)

  在access里做了一个测试表

  表名test1

  字段分别是

  myid 文本

  myname 文本

  sumtotal 货币

  remark 文本

  在BCB里用ado连接,连接字符串:

  Provider=Microsoft.Jet.OLEDB.4.0;Data Source=./data/bbg.mdb;Persist Security Info=False

  程序加入一个ADOQuery,写入SQL:select * from test1

  测试程序启动我做了以下几个工作:

  (1)

  ADOQuery1->Open();

  (2)

  ADOQuery1->Append();

  ADOQuery1->FieldByName("myid")->AsString = "001";

  ADOQuery1->Post();

  (3)

  ADOQuery1->Edit();

  ADOQuery1->FieldByName("sumtotal")->AsFloat = 12;

  ADOQuery1->Post();

  在步骤三的post提示错误: 无法为更新行集定位,一些值可能在最后读取后改变.

  然后使用fields editor将所有字段添加进来,设置

  myname,sumtotal,remark的ProviderFlags的pfInWhere,pfInKey,pfHidden,都是false,只有pfInUpdate为true;myid的pfInKey,pfHidden是false, pfInUpdate,pfInWhere为true,重新执行上面的三步还是同样的错误信息.

  ---------------------------------------------------------------

  答案一

  将 ADOTable1->CursorLocation 的属性改为 clUseServer

  答案二

  在设计access表的时候,将所有的默认值去掉;

  当CursorLocation 的属性是clUseClient时,因为数据库存在默认值,在第一次append的时候,数据库自动修改了部分列,所以客户端无法定位。



本文转自

http://blog.donews.com/jiji262/archive/2006/09/11/1034665.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值