我做了分布式程序,用ADO,就是数据库用的是本地数据库(ACCESS).添加时没有出错,但是当修改时用APPLYUPDATES刷新时有以下错误:请大家帮帮忙(非

  • 主题发起人 主题发起人 ansili
  • 开始时间 开始时间
A

ansili

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了分布式程序,用ADO,就是数据库用的是本地数据库(ACCESS).添加时没有出错,但是当修改时用APPLYUPDATES刷新时有以下错误:请大家帮帮忙(非常急)。在线等待! (50分)<br />我做了分布式程序,用ADO,就是数据库用的是本地数据库(ACCESS)在添加数据库时没有出错
但是当修改时用APPLYUPDATES刷新时有以下错误:
1. Key column information is insufficient or incorrect,
Too many rows were affected by update.
2. Record not found or changed by another user.
调试时只有一个用户,也没有使用ACCESS软件。我试了用MS SQL 2000 没有这个问题
(设置和ACCESS一样)。
修改语句很简单:
Clientdataset1.edit;
clientdataset1.fieldbyanme('name').asstring:=edit1.text;
...
clientdataset1.post;
clientdataset1.applyupdates(0);

请大家帮帮忙(非常急)。谢谢!
 
ADO更新数据是按键值、变化的字段值进行的。
检查你的键设置。
 
1、你的Delphi是6。0吗?如果是,
  检查你的ClientdataSet相连的DataSetProvider
  的提交规则属性。设成WhereKey。
2、Delphi 5.0
  ApplyUpdates(0)-》ApplyUpdates(-1)
  
 
我用的是DELPHI6+WIN98。装了COM的。
DataSetProvider是设成WhereKey的。
键值是;pfinKey还是其他的。我没有在中间层设置。调试只有我一个使用数据库。
 
access表里是否有空行?设置一个自动增加的字段。
 
有空行,也有自动增加的字段(有些字段有)。
有什么影响吗?谢谢。
 
如果有自动增加的字段,就不存在空行,也没有两行相同的记录存在。产生错误只有第二个原因了
2. Record not found or changed by another user.
 
我感觉说的不是很清楚。
一个用户修改也要出现第二种情况。MS SQL没有这种情况。
 
检查键设置。
 
将主键字段包含进来。
或者你可以将代码和数据库帖上来,好说一点
 
我的表还没有定义关键字。
这个是记费用的几分钟要修改一次。代码很简单。就是前面的
Clientdataset1.edit;
clientdataset1.fieldbyanme('name').asstring:=edit1.text;
...
clientdataset1.post;
clientdataset1.applyupdates(0);

就出现. Record not found or changed by another user.这个错误。不知道什么原因。
这个控件DataSetprovider的属性:UpdateMode是:UpWhereAll;
请大家帮帮忙。谢谢
 
不是其它原因,给你的表设置主键或索引就行了。
 
micro73:我已经设置了主键。
索引是每个要更新的字段都要定义吗?
索引:无,有(无重复),有(有重复)三个选那一个?
第一次用Access请指教。
 
接受答案了.
 
后退
顶部