我正在开发AX 2009中的报告。我想在ExpDate的基础上过滤InventSiteID的数据。
我在查询中有2个数据源附加到报告中。两个数据源都是相同的InventExpired。我必须在对话框中显示4个字段,即SiteID,datasource1的Exp Date和数据源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)));
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)));