zoukankan      html  css  js  c++  java
  • 如何使用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;
  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    C语言基础知识【作用域规则】
  • 原文地址:https://www.cnblogs.com/jijm123/p/11272037.html
Copyright © 2011-2022 走看看