ADO的批更新的问题!各位帮帮我,没分了,对不起!(0分)

  • 主题发起人 主题发起人 木工
  • 开始时间 开始时间

木工

Unregistered / Unconfirmed
GUEST, unregistred user!
ADO数据集采用tBatchOptimistic,在添加多条记录后采用updatebatch,出错!
procedure TSelfStoreForm1.BitBtn4Click(Sender: TObject); //添加记录
begin
SelfDataModule1.ADOQuery2.Append;
SelfDataModule1.ADOQuery2.FieldValues['plan_name']:=dbedit1.Text;
end;

procedure TSelfStoreForm1.Bitbtn1Click(Sender: TObject); //提交修改计划
begin
if messagedlg('请确认修改无误?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
SelfDataModule1.ADOQuery2.UpdateBatch;
SelfDataModule1.ADOQuery2.Active:=false;
end
else
showmessage('ddd');
如果每次我只添加一条记录后提交,没错!但添加了两条以上的记录后再提交,就出错。
说什么“多步操作产生错误,请检查每一步的状态值”。这是怎么回事
新手不懂,请教各位!

 
“多步操作产生错误,请检查每一步的状态值”。
一般情况下是你上一次的连接没有断开
建议 断开后再连接
如下
ADOCONN.CLOSE;
ADOQUERY.CLOSE;
之后
ADOCONN.OPEN;
ADOQUERY.OPEN;
 
我这正好有一个:
http://www.wellknow.net/showthread.php?s=b4726676cc7889cd75e402ccf34a49fc&threadid=7
 
是不是每一次添加记录以前都要断开,再连接
 
呵呵~~ 是呀

 
UpdateBatch的参数呢?
 
谁说是呀,不负责任地乱说。
 
A!
难道不是吗?
一个连接多次动作 就会产生
“多步操作产生错误,请检查每一步的状态值”。
 
to wellknow:
加了还是不行?我的默认值是动态的,根据DBEdit.text生成。
还有就是,如果我连续添加了几条记录后,不马上提交,而是在DBGrid中移动指针,
然后提交就没有错误。怎么回事?
 
木工 2个办法你都试一试 解决问题是关键
 
如果是SQL Server,你可以通过事件探查器对你的数据库操作进行跟踪查看。
 
to AIHUA:
你的方法我不会啊,是在插入之前断开,还是插入后断开?
 
如下
ADOCONN.CLOSE;
ADOQUERY.CLOSE;
ADOCONN.OPEN;
ADOQUERY.OPEN;

....//你的操作
ADOCONN.CLOSE;
ADOQUERY.CLOSE;

//完毕



 
差生“多步操作产生错误,请检查每一步的状态值”。可能有多种原因,
不同原因解决的方法不同
 
那是因为TDBEdit.text的值在批处理的情况下,“有时”并没有真正赋值给Dataset中,
不信,你可以在updatebatch之前设断点或者Showmessage查看一下,你的TDBEdit.text
跟DataSet.FieldByName('可能出错的字段').Value是否一致,
但当你改变行记录时,这个TDBEdit.text已经被赋给DataSet的相应字段里了,所以不出错。
你一定要在运行时习惯用设断点这个方法,查看一个运行值,这样可以更准确地找出问题
所在。
 
to wellknow:
如果真是这样的话,该如何更改呢?
 
你可以在DataSet.OnBeforePost里进行赋值呀。
 
我刚完成一个系统的数据录入模块,我刚调试时的出错提示也跟提问者的提示一样的,可并不是象
上面有些人说的“不能一次连接多次操作”,我的是因为输入时给字段赋值不合法,比如说整数输入
时超出数据库中相应字段规定的最大值。
我个人认为这种错误还是得根据情况而定吧,一种提示有可能是多种不同错误引起的的。
 
差生“多步操作产生错误,请检查每一步的状态值”。可能有多种原因,
不同原因解决的方法不同

---------
可并不是象上面有些人说的“不能一次连接多次操作”
---------

直接指出来这个人是我 我不在意
 

Similar threads

后退
顶部