gpt4 book ai didi

delphi - 如何通过 ZeosLib 找出 delphi 6 TZTable 中的哪个字段已更改

转载 作者:行者123 更新时间:2023-12-03 15:51:46 25 4
gpt4 key购买 nike

我有一个绑定(bind)到 DBGrid 的 TZTable (ZEOSlib),现在我需要知道用户更改了哪个特定的 TField。

我尝试过

if NOT (taPositionenArtNrGH.NewValue = taPositionenArtNrGH.OldValue) then
ShowMessage('ArticleNumber changed');

我把代码放在了

  • BeforePost、OnUpdateRecord、AfterPost

但在调试器中,OldValue 始终是 NewValue。如何检查哪个字段已更改?

最佳答案

您可以使用 UpdateStatus : TUpdateStatus 来实现此目的。例如:

  1. 将 ZTable.CachedUpdates 设置为 true;
  2. 创建名为“Status”的新计算字段。
  3. 要显示字段“FNAME”的旧值,请创建名为“FNameOldValue”的新计算字段
  4. 在 OnCalcFields 事件中使用:

    procedure TDM1.ZTable1CalcFields(DataSet: TDataSet);
    begin
    if ZTable1.UpdateStatus in [usModified] then
    begin
    ZTable1Status.value := 'Modified';
    ZTable1FNameOldValue.value := ZTable1FNAME.OldValue;
    end
    else
    ZTable1Status.value := 'UnModified'
    end;

结果:

enter image description here

编辑:

您可以检测字段级别的变化,例如:

if ZTable1.UpdateStatus in [usModified] then
begin
for I := 0 to ZTable1.Fields.Count - 1 do
begin
if ZTable1.Fields[i].OldValue <> ZTable1.Fields[i].NewValue then
-- do something with this field
end;
end;

关于delphi - 如何通过 ZeosLib 找出 delphi 6 TZTable 中的哪个字段已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com