dxMemData1.FieldByName(dxMemData1RetailCalendarPeriodID) := adoTreeWindow.FieldByName('RetailCalendarPeriodID').AsInteger
不应该编译。
它看起来像是dxMemData1RetailCalendarPeriodID
您在 dxMemData1 数据集上创建的持久字段对象。该FieldByName
方法用于通过名称查找字段,但您不需要这样做,因为您已经拥有该字段,dxMemData1RetailCalendarPeriodID
!
所以,你需要的只是
dxMemData1RetailCalendarPeriodID.AsInteger := adoTreeWindow.FieldByName('RetailCalendarPeriodID').AsInteger
编译器错误的原因是FieldByName
期望传递一个给出字段名称的字符串,而您试图传递字段本身,它是 TObject 后代而不是字符串。以下内容会起作用,但由于我已经展示了代码,因此没有必要:
dxMemData1.FieldByName(dxMemData1RetailCalendarPeriodID.FieldName) := adoTreeWindow.FieldByName('RetailCalendarPeriodID').AsInteger;
更新 您说您收到“无效的变体操作”错误。如果您使用此代码,您是否仍然得到它:
if not adoTreeWindow.FieldByName('RetailCalendarPeriodID').IsNull then
dxMemData1RetailCalendarPeriodID.AsInteger := adoTreeWindow.FieldByName('RetailCalendarPeriodID').AsInteger
?