AX 2009 でレポートを作成しています。ExpDate に基づいて InventSiteID のデータをフィルター処理したいと考えています。
レポートに添付されているクエリに 2 つのデータソースがあります。どちらのデータ ソースも同じ InventExpired です。ダイアログに 4 つのフィールド (SiteID、データソース 1 の有効期限、データソース 2 の有効期限) を表示してから、フィルターで除外する必要があります。
AX 2009 でレポートを作成しています。ExpDate に基づいて InventSiteID のデータをフィルター処理したいと考えています。
レポートに添付されているクエリに 2 つのデータソースがあります。どちらのデータ ソースも同じ InventExpired です。ダイアログに 4 つのフィールド (SiteID、データソース 1 の有効期限、データソース 2 の有効期限) を表示してから、フィルターで除外する必要があります。
レポートでは、次を使用できます
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()
私はこれをテストしていませんが、同様のことを何度も行っているので、これがうまくいくと確信しています. これに問題がある場合はお知らせください
ここで範囲を指定したい場合は、私がそれを達成した方法です。これが誰かに役立つことを願っています...
qbds3 = qry.dataSourceTable(tableNum(DMxVehicleTable));
SysQuery::findOrCreateRange(qbds, fieldNum(DMxVehicleTable,VehicleMSRPRetails)).value(strFmt('(VehicleMSRPRetails >= %1) && (VehicleMSRPRetails <= %2)', queryValue(VehicleMinPrice), queryValue(VehicleMaxPrice)));
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)));