2012-03-21 61 views
2

我需要在Dynamics AX 2009中爲報表添加過濾器。Msdn告訴我使用獲取事件進行過濾。所以我將下面的代碼添加到獲取中。Dynamics AX:如何過濾報告?

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是否正確?

謝謝

回答

3

不,它不是。如果您的第一條記錄被排除,則fetch方法將返回false而不發送單個記錄,並且不會打印任何內容。

您可以在send方法中返回false。這是有效的,但由於性能原因,這是一個糟糕的選擇

正確的方法是添加日期範圍作爲查詢範圍:

SysQuery::findOrAddRange(element.queryrun().query().findDatasource(tableNum(VendInvoiceJour), fieldNum(VendInvoiceJour,InvoiceDate)).value(queryRange(DateFromDialog.value(), DateToDialog.value())); 

我沒有測試的代碼。

+0

你是解決方案永遠是正確的! – stighy 2012-03-21 16:48:03