如何使用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 分享