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
?