使用delphi6+visibroker4.1,如何将客户端delta更新到服务器数据库中(100分)

  • 主题发起人 主题发起人 littleCORBA
  • 开始时间 开始时间
L

littleCORBA

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在用delphi6+visibroker4.1,使用先编写idl文件,通过编译产生idl_i.idl_c.idl_s
,idl_impl这几个文件的方式, 我在interface中定义了function any getdata(in data any)
我想通过这个方法将客户端中的变更数据delta包在服务器端更新到数据库:
问题一:OleVariant类型是否与idl语言的any相对应?
问题二:我在服务器端应该用哪个控件来更新delta包到数据库?(datasetprovide?table?query?
一位不能使用corbaconnection,所以clientdataset.applyupdates没法使用)
 
delta数据包是加过密的!除非你用相同属性的CLIENTDATASET去SAVE 和 LOAD
其他的方法好象我没有听说过!
如果有也通知我一下!
 
在应用层使用普通数据模块,并放置DataSetProvider。利用接口方法将Delta包传到
应用层,再使用DataSetProvider.Update(Delta,.....)方法。
 
这还不简单:
procedure TForm1.MyApplyUpdates(AppSvr: OleVariant;
MaxErrors: Integer);
var
RootDataset: TCustomClientDataset;
begin
with ClientDataSet1do
begin
if ChangeCount <> 0 then
Reconcile(AppSvr.Getdata(Delta));
end;
end;
 
>>OleVariant类型是否与idl语言的any相对应?
我认为是的。
>>我在服务器端应该用哪个控件来更新delta包到数据库?
当然是datasetprovider,大约可能是这样:
function TAppSvr.GetData(Delta: OleVariant): OleVariant;
var
ErrorCount: Integer;
begin
ErrorCount := 0;
Result := DataSetProvider1.ApplyUpdates(Delta, -1, ErrorCount);
end;
 
这两个问题我自己也解决了,可是一定给huzzz,p_jz分。
现在还有一个问题:
Delphi不是能够使用全部的VisiBroker的功能,比如以服务方式运行的OAD和GateKeeper
那么用delphi能使用Corba的Ots(Object Transcation Server)?如果能用的话请举例说明,
分数可以再加!
 
多人接受答案了。
 
后退
顶部