delphi把Clientdataset的Delta保存到数据库

 //ATableName-表名, AKeyField-主键,多个主键用;隔开,如 ;pid;times;  from:unit HlsImplBase;
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;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi中,DBGridEh是一个非常常用的数据表格控件,它可以用于显示和编辑数据库中的数据。而LookupDisplay是DBGridEh中的一个属性,用于提供表格中关联表字段的显示值。 通常情况下,DBGridEh的LookupDisplay属性用于显示关联字段的显示值,该值将从关联表中获取。在使用DBGridEh时,需要使用ClientDataSet组件来提供数据。ClientDataSet是一种内存数据集,可以在客户端应用程序中存储和处理数据。 要在DBGridEh中使用LookupDisplay属性,首先需要在ClientDataSet中定义关联字段。关联字段是指与主表的某个字段关联的从表的字段。在ClientDataSet的字段编辑器中,可以通过设置LookupDataset、LookupKeyFields和LookupResultField属性来定义关联字段。 LookupDataset属性用于指定从表所在的ClientDataSet组件,LookupKeyFields属性是用来指定主表与从表关联的字段名,LookupResultField属性则是用来指定从表中要显示的字段名。 然后,在DBGridEh的Columns属性中找到需要显示关联字段的列,将这些列的LookupDisplay属性设置为True。这样,DBGridEh将会自动从关联表中获取相应的显示值,并在表格中显示出来。 总的来说,使用Delphi中的DBGridEh和ClientDataSet组件,可以很方便地实现表格中两列的LookupDisplay功能,即从关联表中获取显示值并显示在表格中,提供更友好的用户界面和数据交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值