3

Axapta/Dynamics Ax (EmplTable) に 2 つのデータ ソース (EmplTable と HRMVirtualNetworkTable) を持つフォームがあり、2 番目のデータ ソース (HRMVirtualNetworkTable) は「遅延」リンク タイプで最初のデータ ソースにリンクされています。

リンク タイプを「InnerJoin」に変更せずに、2 番目のデータ ソースに基づいてレコードにフィルターを設定する方法はありますか?

4

2 に答える 2

5

「Delayed」の代わりに「Outer join」を使用し、HRMVirtualNetworkTable でフィールドを検索するときにプログラムで結合モードを変更できます。

このメソッドをクラス SysQuery に追加します。

static void updateJoinMode(QueryBuildDataSource qds)
{
    Counter r;
    if (qds)
    {
        qds.joinMode(JoinMode::OuterJoin);
        for (r = 1; r <= qds.rangeCount(); r++)
        {
            if (qds.range(r).value() && qds.range(r).status() == RangeStatus::Open)
            {
                qds.joinMode(JoinMode::InnerJoin);
                break;
            }
        }
    }
}

EmplTable データソースの executeQuery() で:

public void executeQuery()
{;
    SysQuery::updateJoinMode(this.queryRun() ? this.queryRun().query().dataSourceTable(tableNum(HRMVirtualNetworkTable)) : this.query().dataSourceTable(tableNum(HRMVirtualNetworkTable)));    
    super();
}

this.queryRun() が null を返す場合があるため、代わりに this.query() を使用してください。

アップデート:

上記は、外部結合でクエリ フィルターを使用できる AX 2012 以降には関係ないことに注意してください。外部結合で QueryFilter クラスを使用する方法 を参照してください。

于 2009-07-08T12:34:16.280 に答える
1

これは、QueryBuildDataSourceに参加するか、拡張フィルター(Alt + F3、datasorceを右クリック、1:n、sev \ condary DSを検索)によってプログラムで実行できます。

于 2008-12-28T09:03:17.910 に答える