ClientDataSet1.ApplyUpdates(0);
我写了这句话,但是怎么没提交到数据库了啊?
ClientDataSet1的fetchondemond:=false;packetrect:=-1;
中间层的datasetprovider的resolvetodataset:=false;
就是一个很简单的COM+和客户段,怎么数据就是不提交啊?我哪天还提交了今天就没提交了。

解决方案 »

  1.   

    你的方法只是加了一个标示,并未真正的执行。
    不过我没用个delphi7
      

  2.   

    这个问题不难啊,就是ClientDataSet1.ApplyUpdates(0);
    为什么不起作用的问题!
      

  3.   

    用ClientDataSet1.ApplyUpdates(0)或ClientDataSet1.ApplyUpdates(-1);
    都可以修改或新增数据库信息
    在3层数据库,有时候会莫名奇妙的提交失败
    这个跟你指定中间层的datasetprovider有关系
    如果你的那个form的多个clientdataset指定2个以上,
    请确认需要数据提交的最先打开 clientdataset1.Active:=True;
    就没有问题(我遇到过)
    不过,最好是写成"insert into t"或"update tt set "语句是绝对没有问题的
      

  4.   

    中间件 DataSetProvider
    设置poallowcommandtext为True
      

  5.   

    unit UUpdata;
    {$WARN SYMBOL_PLATFORM OFF}interfaceuses
      ActiveX, Mtsobj, Mtx, ComObj, PUpData_TLB, StdVcl,PBaseData_TLB,Midas;type
      TUpDataEmp = class(TMtsAutoObject, IUpDataEmp)
      protected
        procedure UpDataE(var vData: OleVariant; iMaxCount: Integer;
          var iErrorCount: Integer; var ownerData: OleVariant); safecall;  end;implementationuses ComServ;procedure TUpDataEmp.UpDataE(var vData: OleVariant; iMaxCount: Integer;
      var iErrorCount: Integer; var OwnerData: OleVariant);
    var
      MyUpdata:IBaseData;
      MyAppSer:IAppServer;
    begin
      try
       OleCheck(ObjectContext.CreateInstance(CLASS_BaseData,IID_IBaseData,MyUpdata));
       MyAppSer:=MyUpdata as IAppServer;
       MyAppSer.AS_ApplyUpdates('DataSetProvider1',vData,iMaxCount,iErrorCount,OwnerData);
       SetComplete;
      except
       SetAbort;
      end;end;initialization
      TAutoObjectFactory.Create(ComServer, TUpDataEmp, Class_UpDataEmp,
        ciMultiInstance, tmApartment);
    end.