如何过滤报告?

时间:2012-12-17 07:01:43

标签: axapta dynamics-ax-2009 x++

我正在开发AX 2009中的报告。我想在ExpDate的基础上过滤InventSiteID的数据。

我在查询中有2个数据源附加到报告中。两个数据源都是相同的InventExpired。我必须在对话框中显示4个字段,即SiteID,datasource1的Exp Date和数据源2的相同,然后将其过滤掉。

2 个答案:

答案 0 :(得分: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()方法,并在对话框()方法中,在调用super()之后,你应该使用:

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

要从字段中获取值并在报告中使用它们,您应该使用

expDateField.value()

我没有对此进行过测试,但我在很多场合都做过类似的事情,所以我相信这会有效。如果您对此有任何问题,请告诉我

答案 1 :(得分:0)

如果你想在这里指定一个范围,我是如何完成它的。希望这有助于某人...

方法一:

 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)));