axapta:ルックアップフィールドは、IDの代わりに文字列値を表示しますか?

StackOverflow https://stackoverflow.com/questions/1716694

  •  19-09-2019
  •  | 
  •  

質問

AXがフォームとグリッドを生成すると、すべてのルックアップが適切に入力されますが、ルックアップアイテムのIDが形式で表示されます。意味のある価値を見る唯一の方法は、フィールドをクリックすることです。本当に理想的ではありません。その背後にあるID番号の代わりに、フォームにルックアップ値を表示する方法はありますか?

「TableB」フォームに、Tablea_idの代わりにTablea_Valueを表示したいと思います。

錠剤

  • tablea_id(int-ユニーク)
  • tablea_value(string-非unique)

TableB

  • tableb_id(int-ユニーク)
  • tablea_id(int-タブレアとの関係)
  • tableb_datafields(その他)

ありがとう

役に立ちましたか?

解決

ルックアップ自体の値を変更する方法を見つけることができなかったため、ルックアップが変更されるたびに更新する静的フィールドを隣に配置しました。これが私がそれをする方法です:

表Aの表示方法:

display [datatype] lookupName(tableA _tableA)
{
    ;
    return tableB::find(_tableA.[tableA id column]).[tableB string column];
}

表Bでメソッドを見つける:

static tableB find([datatype] [lookup variable], boolean _forUpdate = false,
 ConcurrencyModel _concurrencyModel = ConcurrencyModel::Auto)
{
[TableB] [tableB];

if ([lookup variable])
{
    if (_forUpdate)
    {
        tableB.selectForUpdate(_forUpdate);
        if (_concurrencyModel != ConcurrencyModel::Auto)
        {
            tableB.concurrencyModel(_concurrencyModel);
        }
    }

    select firstonly tableB
        where tableB.[lookup column] == [lookup variable];
}
return tableB;

}

フォームのデータソースとして表AとBの両方を追加しました。

フォームに文字列フィールドを追加しました。

テーブルAをフィールドのデータソースとして設定し、lookupnameはデータメトッドとしてルックアップネームに設定します。

ルックアップフィールドに変更されたメソッドを追加して、静的フィールドを更新します。

element.redraw();

これが誰かを助けることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top