题目:急,急要交设计拉!想在查询结果上修改基表的数据(C/S结构,查询是用存储过程做的)(50分)

  • 主题发起人 主题发起人 风清云淡
  • 开始时间 开始时间

风清云淡

Unregistered / Unconfirmed
GUEST, unregistred user!
思路:在查询结果上指定一个记录,然后在基表上找到对应的记录修改,提交,
更新APPLYUPDATE(-1);

问题是:他根本没有更新到数据。

用ONRECONCILEERROE事件显示有错,证明是APPLUUPDATED的问题。

我的写法是:
with dataxy.xClientDataSet do
if locate('wjh',dbedit1.text,opt) then
begin
dataxy.xClientDataSet.Edit;
dataxy.xClientDataSet.fieldbyname('wjm').asstring:=dbedit3.text;
if dataxy.xClientDataSet.state=dsedit then
dataxy.xClientDataSet.post;
dataxy.xClientDataSet .ApplyUpdates(-1);
dataxy.xClientDataSet.cancel;
end;
dataxy.xClientDataSet为基表的ClientDataSet
我在另一个窗口dataxy.xClientDataSet与 datasourse/dbgrid,
关联处于显示状态。在这个窗口也可以对表直接修改。
没有问题,修改成功。

但若在查询结果修改失败后,基表录入修改中对应记录修改也失败。


是否因为他们共用一个ClientDataSet。data副本。
请高手指点应该怎么做?
 
dataxy.xClientDataSet .ApplyUpdates(-1);
dataxy.xClientDataSet.cancel;为何同时使用?
另外,在三层结构中,要提交的数据在取出到提交的过程中已经被其它用户修改的话,
会提交失败,应在服务端dataprovider的onupdateerror事件或客户端的clientdataset
的onreconcileerror中进行处理.
 
接受答案了.
 
后退
顶部