服务器写方法处理?不够分再给!(200分)

  • 主题发起人 主题发起人 wildhorseli
  • 开始时间 开始时间
W

wildhorseli

Unregistered / Unconfirmed
GUEST, unregistred user!
本人做了个系统,不打算在服务器端写放太多的控件,打算写方法处理,主要是更新的问题,可能是一个表的数据,也可能是多个表的数据。比如现在就是一个表的数据吧,我把客户端的ClientDataset.delta的数据传过来,然后我如何写一个通用的方法处理类似于这种单个表的delta更新呢?参数应该是(表名,delta)对吧?那么对于多个表的处理情况呢?ado是否能自动更新多个表的数据呢?不是的,自己写有何通用的好的方法?谢谢!分不够的话可以多送的。再谢!
 
要表名干什么?update(const MaxErrors:integer;conse Delta Olevariant;var Errors:integer);
ADO是自动更新的,只要注意把DatasetProvider的ResolvetoDateSet改成True就可以多表更新
但MIDAS中你要自己激活事务,或者用COM+中的事务模块。
 
能不能给个例子,比如说增加某一条记录,服务器端如何写个方法阿,客户端给了一个(delta,和
tablename,)也就是客户端并没有直接连着DataSetProvider,谢谢!
 
客户端:
procedure TForm1.btn1Click(Sender: TObject);
var
......
begin
......
(DCOMConnection1.Getserver as IXXX).UpdateDatas(vDelta,iMaxErrors,iErrorCount);
......
end;

服务端:
procedure Txxx.UpdateDatas(const vDatas: OleVariant;
const iMaxErrors: Integer;
var iErrorCount: Integer);
begin
......
dspPublishers.ApplyUpdates(vDatas, iMaxErrors, iErrorCount);
......
end;
 
同意樓上
 
大家可能还没有理解我的意思,要是按照xiaasp的说法,那我不如直接用 clientdataset.apply(-1),
那样的话,还有必要写多余的方法吗,我的意思是,服务器公用一个adotable和dataprovder
来实现单个数据表的更新!谢谢!
 
公用一个ADOQuery和DataSetProvider来更新单个数据表的更新:
1.DataSetProvider的Exported设为True,ResolvetoDateSet设为True;
增加DataSetProvider的OnApplyUpdates事件处理:
procedure TMyRDM.DataSetProvider1BeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
with ADOQuery1do

begin
Close;
SQL.Clear;
SQL.Add(VarToStr(OwnerData));
Open;
end;
end;

客户端更新代码:
var
ErrorCount:Integer;
OwnerData:OleVariant;
begin
OwnerData:='SELECT TOP 0 * FROM Table1';
ClientDataSet1.AppServer.AS_ApplyUpdates('DataSetProvider1',ClientDataSet1.Delta,0,ErrorCount,OwnerData);
OwnerData:='SELECT TOP 0 * FROM Table2';
ClientDataSet2.AppServer.AS_ApplyUpdates('DataSetProvider1',ClientDataSet2.Delta,0,ErrorCount,OwnerData);
end;
 
谢谢各位!
 
我强烈建议不用ResolvetoDateSet=True
不要相信李维书上的,如果你的SQL不是Join还好,是Join的,ADO的多表新增和删除
都是对多表的,虽然可以用Unique Table这个动态属性解决,但仍然有缺陷,麻烦
以及危险
设定ResolvetoDateSet=False
如果只是单表跟新在datasetProvide的OnGetTableName事件用更新的表名指定TableName
如果多表更新在BeforeUpdateRecord分离数据
如果你是Delphi6利用一下UpdateSQL
具体你可以看delphi6开发人员指南以及Midas宗师Dan Miser的解决方案
 
谢谢
shiningplus 不知道,对于多个表的更新解决方案是如何的,想得到你的帮助,我的信箱
wildhorselei@tom.com 望能发个例子(关于多表的连接数据更新)给我或是技术文档。现在
不知道如何再加分了,谢谢!我会再给你加分的。
 
这篇文章对Midas技术有全面的介绍,不过是英文的
http://community.borland.com/article/0,1410,22571,00.html
注意Single table update,Join updates两个小节,不过有些要移植到ADO可能要
一些小技巧
 
后退
顶部