[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