0

AX 2009 でレポートを作成しています。ExpDate に基づいて InventSiteID のデータをフィルター処理したいと考えています。

レポートに添付されているクエリに 2 つのデータソースがあります。どちらのデータ ソースも同じ InventExpired です。ダイアログに 4 つのフィールド (SiteID、データソース 1 の有効期限、データソース 2 の有効期限) を表示してから、フィルターで除外する必要があります。

4

2 に答える 2

1

レポートでは、次を使用できます

SysQuery::findOrCreateRange(this.queryRun().query().dataSourceNo(1),
                            fieldNum(InventExpired, ExpDate)
                           ).value(SysQuery::value(yourFilterDate));

これにより、入力された日付で最初のデータソースがフィルタリングされます。フィルター日付より前または後の日付でフィルターする必要がある場合は、次を使用できます。

SysQuery::findOrCreateRange(...).value('>' + SysQuery::value(yourFilterDate));

また

SysQuery::findOrCreateRange(...).value('<' + SysQuery::value(yourFilterDate));

フィールドをダイアログに追加する方法を知っていますか?

そうでない場合は、dialog() メソッドをオーバーライドする必要があります。また、dialog() メソッドでは、super() への呼び出しの後に、次を使用する必要があります。

Dialog d = ret;
expDateField = d.addField(typeid(yourDateEDT), "Expiry Date");

フィールドから値を取得してレポートで使用するには、次を使用する必要があります。

expDateField.value()

私はこれをテストしていませんが、同様のことを何度も行っているので、これがうまくいくと確信しています. これに問題がある場合はお知らせください

于 2012-12-17T17:34:49.937 に答える
0

ここで範囲を指定したい場合は、私がそれを達成した方法です。これが誰かに役立つことを願っています...

方法1:

 qbds3 = qry.dataSourceTable(tableNum(DMxVehicleTable));
 SysQuery::findOrCreateRange(qbds, fieldNum(DMxVehicleTable,VehicleMSRPRetails)).value(strFmt('(VehicleMSRPRetails >= %1) && (VehicleMSRPRetails <= %2)', queryValue(VehicleMinPrice), queryValue(VehicleMaxPrice)));

方法 2:

qbds4 = qry.dataSourceTable(tableNum(DMxSysYearTable));
SysQuery::findOrCreateRange(qbds4, fieldNum(DMxSysYearTable,Year), 1, 1).value('>' + SysQuery::value(VehicleModelYearStart));
qbds4.addRange(fieldNum(DMxSysYearTable, Year)).value(strFmt('< %1', queryValue(VehicleModelYearEnd)));
于 2013-03-08T11:08:22.377 に答える