Blog信息 |
blog名称:注册会计师(注会)练习软件 日志总数:398 评论数量:116 留言数量:27 访问次数:3268256 建立时间:2005年6月6日 |

| |
[delpih编程]无法为更新定位行。一些值可能已在最后一次读取后已更改。(delphi错误解决) 软件技术
吕向阳 发表于 2009/9/9 13:51:42 |
无法为更新定位行。一些值可能已在最后一次读取后已更改。 导读: 提示:在使用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的时候,数据库自动修改了部分列,所以客户端无法定位。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/longma2006/archive/2008/09/09/2904413.aspx |
|
|