デルタは、データベースに保存ClientDataSetのためにデルファイを使用する方法

[デルファイ] 
 無地コピーを表示
// ATableName-表名、AKeyField-主键、多个主键用;隔开、如; PID;回; From:ユニットHlsImplBase。
【デルファイ】図無地コピー
 機能 THlsImplBase.UpdateTableData(ATableName、AKeyField:AnsiStringの、VaRのAデータ:バリアント):ブール。  
VAR 
  LSql:文字列;  
  LDataSet:TDataSetに。  
  LProvider:TProvider。  
  LErrCount:整数;  
  I:整数;  
開始
  結果: = Falseにします。  
  もし ATableName = 「」 そして、終了。  
  もし AKeyField = 「」 そして、終了。  
  LSql:= ' SELECT * FROM ' + ATableName + ' 1 = 2 ' 
  LDataSet: = CreateDataSet(LSql)。  
  もし ない(LDataSet)が割り当てられ、その後、終了。  
  LProvider: = TProvider。作成ゼロ)。  
  LProvider.UpdateMode: = upWhereKeyOnly。  
  LProvider.DataSet: = LDataSet。  
  AKeyField: = 小文字(AKeyField)。  
   I:= 0   LDataSet.FieldCount - 1は ない
  始めます
    もし(小文字(LDataSet.Fields [I] .FieldName)= AKeyField)又は
        (順位(' ; ' +小文字(LDataSet.Fields [I] .FieldName)+ ' ; '、AKeyField)> 0、次いで
      LDataSet.Fields [ I] .ProviderFlags: = LDataSet.Fields [I] .ProviderFlags + [pfInKey]  
     
      LDataSet.Fields [I] .ProviderFlags: = [];  
  エンド;  
  しようと
    してみてください
      LProvider.ApplyUpdates(Aデータと、 - 1 、LErrCountを)。  
    除く
    エンド;  
    結果:= LErrCount = 0 最後に
    LDataSet.Free;  
    LProvider.Free;  
  エンド;  
エンド ;

 

おすすめ

転載: www.cnblogs.com/jijm123/p/11272037.html