加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi – 如何将blob字段的数据集的OldValue和NewValue作为流

发布时间:2020-12-15 09:15:02 所属栏目:大数据 来源:网络整理
导读:在Delphi XE上,我使用来自TpFIBDataSet的 OldValue和 NewValue(但它可以应用于任何TDataSet后代),以验证是否有不同的字段已更改.我的问题是如何将这两个blob字段的值检索为TMemoryStreams?我做了一些研究,但我一无所获. 解决方法 我使用例程来检测字段是否
在Delphi XE上,我使用来自TpFIBDataSet的 OldValue和 NewValue(但它可以应用于任何TDataSet后代),以验证是否有不同的字段已更改.我的问题是如何将这两个blob字段的值检索为TMemoryStreams?我做了一些研究,但我一无所获.

解决方法

我使用例程来检测字段是否已更改,因此我可以将发送到数据库的字段限制为仅更改的字段.我今天为该例程添加了代码以处理BLOB字段,因为它们无法返回.AsVariant,这是返回OldValue和NewValue的方式.我没有用我的所有用例测试过这个,但到目前为止它似乎非常可靠.

function FieldChanged(DataSet: TDataSet; FieldName: string): Boolean;
var
  fld: TField;
begin
  fld := DataSet.FieldByName(FieldName);

  if fld.IsBlob then
    Exit((fld as TBlobField).Modified);

  if (fld.OldValue = Null) and (fld.NewValue = Unassigned) then // This happens when a NULL field does not change
    Exit(False)
  else
    Exit(fld.OldValue <> fld.NewValue);
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读