0

我正在处理 AX 2009 中的报告。我想根据 ExpDate 过滤 InventSiteID 的数据。

我在附加到报告的查询中有 2 个数据源。两个数据源都是相同的 InventExpired。我必须在对话框中显示 4 个字段,即数据源 1 的 SiteID、Exp Date 和数据源 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 回答