我需要在Dynamics AX 2009中为报表添加一个筛选器。Msdn告诉我使用Fetch事件进行筛选。因此,我在fetch中添加了以下代码。
DateFromDialog和DateToDialog是在ClassDeclaration中声明的变量。
qrun = new QueryRun(element);
_vendInvoiceJour = qrun.get(TableNum(VendInvoiceJour));
if( _vendInvoiceJour.InvoiceDate <= DateFromDialog.value() || _vendInvoiceJour.InvoiceDate >=DateToDialog.value() ) {
// Exclude record, don't print it
return false;
}
如果记录必须不打印,返回false正确吗?
感谢
不,不是。如果要排除您的第一条记录,fetch
方法将返回false而不发送任何记录,并且不会打印任何内容。
您可以在send
方法中返回false。这是有效的,但由于性能原因,这是一个糟糕的选择。
正确的方法是将日期范围添加为查询范围:
SysQuery::findOrAddRange(element.queryrun().query().findDatasource(tableNum(VendInvoiceJour), fieldNum(VendInvoiceJour,InvoiceDate)).value(queryRange(DateFromDialog.value(), DateToDialog.value()));
我还没有测试代码。