Ado数据库记录添加和删除问题,200分求教!(200分)

  • 主题发起人 主题发起人 Easylee
  • 开始时间 开始时间
E

Easylee

Unregistered / Unconfirmed
GUEST, unregistred user!
问题1:
我在使用AdoQuery1时,使用AdoQuery1.Append;命令添加一个新记录,
然后在Grid中输入了数据,并post后,最后将当前的记录指针指
向最后刚添加记录,并使用AdoQuery1.Delete;结果产生错误。
错误提示:
The specified row could not be located for updating:Some
Values may have been changed since it was last read.
不知为何?

问题2:
同样,我写一个复制当前记录到新添加一个记录中,结果也出错。程序代码如下:
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
ar:array of variant;
begin
SetLength(ar,table.fieldcount);
//复制当前记录
for i:=0 to table.fieldcount-1 do
ar:=table.fields.Value;
table.append;
//将复制的记录粘贴到新记录中
for i:=0 to table.fieldcount-1 do
table.Fields.Value:=ar;
Table.Post;
end;

运行上面代码之后,程序正常,记录也复制了,结果在删除刚添加的记录时出错。
错误提示:
Insufficient or incorrect key column information: too many rows affected
by update.

真是不明白,为什么到了删除记录时就出错?

请高手指教!
 
将数据库 CLOSE 后再 OPRN 一次即可解决
 
不行,仍然提示错误
 
你是用acess库吧?这是acess的问题!
 
是不是没有设置主键呀?第二个错误好像是没有主键造成的!
第一个错误,我想如果不在grid中直接操作,应该没有那个问题。你试试
 
嘻嘻。这个问题我也遇到过(delphi5.0+sqlserver7.0),是因为当前数据库有重复记录。
 
我用的是ACCESS数据库,不知有什么好的解决方法?

请问:各位用AdoTable或AdoQuery来添加和删除记录时,都会遇到这样的情况吗?
如果没遇到,那是如何添加和删除记录的?有例子最好了。
 
问题1:
在新增记录后又将其删除出错,我在用.dbf时碰过但.mdb没有,换驱程试试别用ODBC
另ADO的补丁也得打上(DELPHI5下)
问题2:
最好别用这种方法复制记录。但出错原因应同上,只是记录被强行更新了:)
 
很奇怪的是,我的ADO已经打过补丁了,是不是打过了才有这样的问题?
请给些例子好吗?
 
我也碰到过这种问题。我的办法是:table 或query post后再requery一下即可。
 
这个问题我也遇到过,是去年了,我要去看看当时的文档了,看是怎么解决的!
 
拜托大家帮帮忙,先解决一下问题,我做的东西卡在这不能继续下去了。分好说
 
给表增加一个主键,最好是自增变量。
并修改原生ADO对象的一个属性(李维的书里有写)
 
绝对经典的解答:第一个问题无论VB6还是Delphi都会出现,说明问题不是Access的就是
Ado的,解决方案第一步是打完整Ado for Delphi的两个Bug包,然后最为关键的是将焦点
离开刚才添加新纪录的Grid控件,再将焦点移动回来即可。该问题我在VB下处理过,
Delphi下没遇到,但此方法的确好用。第二个错误和第一个错误本质上十分相近,核心都
是数据和显示刷新的问题,重新ReQure是最好的办法。再一个注意连接数据库游标的方式
,及时Update,保持和数据库的同步,最后注意数据表的主键是否在Select的选取中,如
果没有选取主键的修改、编辑也会出现这两个问题。
 
问题已基本得到解决,在我快绝望的时候,我用了Diamond Access2.0那个控件,
我想ADO不行,干脆用DAO好了,本来也没抱多大希望,结果上述代码运行一切
正常。没有出现任何错误的提示。唉,ADO的毛病也太多了,补丁打的越多,BUG
就越多。

to yinxuetao:
你说的将焦点离开刚才添加新纪录的Grid控件,再将焦点移动回来即可,这个方法,
实际在我的程序同样会出现问题。我估计这还是跟ADO的BUG有关。
 
通常情况是ADO没有设主键,及delphi5 的第二个补丁没有打造成的。

 
在AdoQuery中使用sql操作罢
 
我接下来的程序也要用到ADO,但愿别出现这样那样的错误
 
to easylee

diamond access2.0哪里有?

麻烦你告诉我。谢谢!

 
adoquery中也能数据添加吗?
用ADODATASET肯定没问题,与table一样的用法。
相同的数据能添加到同一个表中么?我没试过。
 
后退
顶部