关于access更新的问题!在线等待。

magicsnake 2005-04-25 12:11:49
郁闷了几天了,找不到原因

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,重新执行上面的三步还是同样的错误信息.

谁能帮我解决!都快要疯了
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
编译失败 2005-04-25
  • 打赏
  • 举报
回复
幹嘛要Append后Post然後Edit?

這個錯誤很好理解,就是數據已經被改變了,你可以刷新一下數據或者重新定位要修改的數據!
chiengod 2005-04-25
  • 打赏
  • 举报
回复
将 ADOTable1->CursorLocation 的属性改为 clUseServer
或者在Post() ;后面加上ADOTable1->Refresh()
magicsnake 2005-04-25
  • 打赏
  • 举报
回复
问题解决了,谢谢

按chiengod(钱神爷)(程序打工仔 转型中...)
CursorLocation 的属性改为 clUseServer

或者在设计access表的时候,将所有的默认值去掉;
当CursorLocation 的属性是clUseClient时,因为数据库存在默认值,在第一次append的时候,数据库自动修改了部分列,所以客户端无法定位。
magicsnake 2005-04-25
  • 打赏
  • 举报
回复
to aniven(Compile Fail)
我是测试用才这样

to chiengod(钱神爷)(程序打工仔 转型中...)

ADOTable1->Refresh()
会影响界面效果

1,178

社区成员

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

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