如何使用delphi將Clientdataset的Delta保存到數據庫中

[delphi]  ?view?plain?copy  //ATableName-表名,?AKeyField-主鍵,多個主鍵用;隔開,如?;pid;times;??from:unit?HlsImplBase;  [delphi]?view?plain?copy  function?THlsImplBase.UpdateTableData(ATableName,?AKeyField:?AnsiString;?var?AData:?Variant):?Boolean;??  var  ??LSql:?string;??  ??LDataSet:?TDataSet;??  ??LProvider:??TProvider;??  ??LErrCount:?Integer;??  ??I:?Integer;??  begin  ??Result?:=?False;??  ??if?ATableName?=?''?then?Exit;??  ??if?AKeyField?=?''?then?Exit;??  ??LSql?:=?'select?*?from?'?+?ATableName?+?'?where?1?=?2';??  ??LDataSet?:=?CreateDataSet(LSql);??  ??if?not?Assigned(LDataSet)?then?Exit;??  ??LProvider?:=?TProvider.Create(nil);??  ??LProvider.UpdateMode?:=?upWhereKeyOnly;??  ??LProvider.DataSet?:=?LDataSet;??  ??AKeyField?:=?LowerCase(AKeyField);??  ??for?I?:=?0?to?LDataSet.FieldCount?-?1?do  ??begin  ????if?(LowerCase(LDataSet.Fields[I].FieldName)?=?AKeyField)?or  ????????(Pos(';'?+?LowerCase(LDataSet.Fields[I].FieldName)?+?';',?AKeyField)?>?0)?then  ??????LDataSet.Fields[I].ProviderFlags?:=?LDataSet.Fields[I].ProviderFlags?+?[pfInKey]??  ????else  ??????LDataSet.Fields[I].ProviderFlags?:=?[];??  ??end;??  ??try  ????try  ??????LProvider.ApplyUpdates(AData,?-1,?LErrCount);??  ????except  ????end;??  ????Result?:=?LErrCount?=?0;??  ??finally  ????LDataSet.Free;??  ????LProvider.Free;??  ??end;??  end;

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享