关于主从表,高手请进!分数另贴加200分。(1分)

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

eire

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在APPSERVER写一方法通过AS_APPLYUPDATE()更新主从表。
我从客户端传过来主表的DETAL,通过一个CDSTMP更新一字段。可无法保存。原因是这个DETAL中有一
DATASETFIELD即细表的数据未更新,如何修改一个DATASETFIELD中的数据。
=============
 
是这个问题太简单还是分太少阿,请各位大虾出出手
 
份太少了
呵呵
 
这个问题比较棘手。我也曾试图这样做,但没有实现。
关注
 
难道真的无法解决?
分数另贴加200分。解决马上加!
 
讲的不明白
能不能把服务器相关代码贴一贴
 
我也正在做这个,
你试试这样,先更新主表并且屏敝掉DATASETFIELD,再将DATASETFIELD字段值赋给一个
数据集的DATA,更新完成了,再更新刚才那个数据集的DATA,也就是从表.
不知道行不行,有空交流一下
 
好像不難
 
好像是多表更新的關鍵技術.....
.....還有點難以理解.......哈哈..
建議參考.....好像得 拆分字段
updatesql component......
ds.beforeupdaterecord.......
 
为什么不直接用clientdataset.applyupdates
 
看样子是没有人能回答上来。份数还是给自己。
 
这样应该没有问题的,我一直在用:
function Update(Delta: Olevariant;
out Errors: Olevariant): WideBool;
var
nErrorCount: Integer;
begin
try
......
ADODataSet1.Open;
// 主表
ADODataSet2.Open;
// 从表
DataSetProvider1.ApplyUpdates(Delta, 0, nErrorCount);
Result := nErrorCount = 0;
SetComplete;
except
Errors := ...
SetAbort;
end;
end;
在调用DataSetProvider的ApplyUpdates方法之前,一定要打开主从表的DataSet,同时
DataSetProvider的Options里的CasecadeDelete和CasecadeUpdate要设为True。
 
兄弟,这个问题我找一个简单的方法,利用了MIDAS本身的功能,我的服务器方法是这样的:
savedata(msql,dsql:bstr;data:olevariant;compress,errorcount:long;)
msql:为主表的SQL语句,如:select * from test1
dsql:为从表的SQL语句,如:select * from test2
compress:是否压压宿
errorcount:允许最大错误数
在这个方法里我先创建了两个巢状ADOQUERY及一个DATAPROVIDER,然后将MSQL,DSQL赋于这两
个ADOQUERY,再保存就OK了。
关于从表的过滤字段问题,我将从客户端传过来的DATA中的DATASET字段赋于一个DATASETPROVIDER
然后再进行过滤就可以了。
 
兄弟,这个问题我找一个简单的方法,利用了MIDAS本身的功能,我的服务器方法是这样的:
savedata(msql,dsql:bstr;data:olevariant;compress,errorcount:long;)
msql:为主表的SQL语句,如:select * from test1
dsql:为从表的SQL语句,如:select * from test2
compress:是否压压宿
errorcount:允许最大错误数
在这个方法里我先创建了两个巢状ADOQUERY及一个DATAPROVIDER,然后将MSQL,DSQL赋于这两
个ADOQUERY,再保存就OK了。
关于从表的过滤字段问题,我将从客户端传过来的DATA中的DATASET字段赋于一个DATASETPROVIDER
然后再进行过滤就可以了。
 
to ALL
由于最近项目太忙所以现在才回复.SORRY!
to SO
<DataSetProvider的Options里的CasecadeDelete和CasecadeUpdate要设为True。>这个开关是控制主从表在客户端的更新与删除.对服务端没有作用.
您的方法,我没试过,因为我用的是BDE+ORACLE
to 无忧鱼
  您的方法以前我也准备这样做,但这样主细表须重写一次SQL语句.如果主表有条件的.数据过滤会麻烦些.
由于项目时间较紧,暂时放在客户端更新.
谢谢各位的回答.请到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1322676
领分.:)
我的QQ:77687157有兴趣的朋友一起进步.
 
本贴结束请到上述地址取分。过12-12日不候。
 
多人接受答案了。
 

Similar threads

后退
顶部