我在redhat8.0里用WebService开发了数据库服务程序,用DBExpress连远端的PostgreSQL数据库.
在Win下用Delphi7编写客户端,现在用HTTPRIO组件加ClientDataSet能够查询到数据
用的是AS_GetRecords函数.
现想用AS_ApplyUpdates来更新数据回数据库
这是此函数
function  AS_ApplyUpdates(const ProviderName: WideString; const Delta: Variant; const MaxErrors: Integer; var OwnerData: Variant; out ErrorCount: Integer): Variant; stdcall;
谁能帮我解释一下此函数中各种参数的意思,以及用法.
最好是实际用过的
我参考的是李维的<< D6&K2 SOAP/WebService程序设计>>

解决方案 »

  1.   

    尤其是 var  OwnerData:  Variant; 参数!
      

  2.   

    一般OwnerData是空值,
    它主要用于嵌套数据集更新的时候.
    可以不必去管它.其它参数没有什么需要解释的吧.
      

  3.   

    为什么每次用此函数都会报错!
    “Invalid variant type”
    我是这样写的,能指出不对的地方吗?为什么更新不了啊?
    procedure TForm1.Button2Click(Sender: TObject);
    var
     aIntf : IAppServer;
     vOwnerData : Variant;
     ErrorCount : Integer;
     vResult : Variant;
    begin
      aIntf := HTTPRIO1 as IAppServer ;
      try
        vResult := aIntf.AS_ApplyUpdates('DataSetProvider1', ClientDataSet2.Delta, 0, vOwnerData, ErrorCount) ;
      finally
        aIntf:=nil;
      end;
    end;
      

  4.   

    你的最后两个参数弄反了...  IAppServer = interface(IDispatch)
        ['{1AEFCC20-7A24-11D2-98B0-C69BEB4B5B6D}']    function  AS_ApplyUpdates(const ProviderName: WideString; Delta: OleVariant;
                                  MaxErrors: Integer; out ErrorCount: Integer; var OwnerData: OleVariant): OleVariant; safecall;
      

  5.   

    我在服务端找到此函数,确实如楼上所说
    但为什么我用WSDL向导自动生成的服务端提供的函数,会自动改变函数中参数的次序?
    我把参数的次序改为与服务端的一致后,执行程序时依然会报和原来一样的错
    请问这是不是D7和K3在兼容性方面的一个BUG?