You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi Alexandria中含fkInternalCalc字段时创建数据集报名称不唯一错误

问题分析与结论

这是Delphi Alexandria版本的已知bug,并非你对fkInternalCalc字段的理解有误。

关于fkInternalCalc与fkCalculated的核心差异

  • fkInternalCalc:属于数据集内部维护的计算字段,无需绑定OnCalcFields事件,计算逻辑由数据集在dsInternalCalc状态下自动触发,字段值仅在内存数据集内部生效,不会关联底层存储(你的场景本身无Provider,完全是内存数据集)。
  • fkCalculated:需要开发者手动编写OnCalcFields事件逻辑,计算时机在dsCalcFields状态,字段值完全依赖用户代码生成。

问题触发的原因

在Delphi Alexandria 28.0.44500.8973版本中,对无Provider的TClientDataSet执行以下操作时:

  1. 设置Active=false
  2. 添加新字段(如整数类型的TT_APIVERSION)
  3. 右键执行Create dataset

IDE会错误地将fkInternalCalc类型字段识别为重复命名的物理字段,进而抛出“Name not unique in this context”错误。而fkCalculated字段因需要用户手动处理计算逻辑,不会触发这个误判。

临时解决方案

  1. 临时切换字段类型:先将所有fkInternalCalc字段改为fkCalculated,完成新字段添加和Create dataset操作后,再改回fkInternalCalc类型。若这些字段原本绑定了OnCalcFields,需确保代码兼容dsInternalCalc状态(注:fkInternalCalc本身不需要OnCalcFields,建议移除不必要的事件绑定)。
  2. 先移除再重建:先删除所有fkInternalCalc字段,完成新字段添加和Create dataset后,重新添加这些字段并设置为fkInternalCalc类型。

内容的提问来源于stack exchange,提问作者Jan Doggen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:45:30