我修改了InventTable表單,因此用戶可以根據默認訂單設置設置窗體上的「已停止」狀態來過濾項目。他們根據兩個複選框的值獲得「可購買」商品,「可銷售」商品,所有商品或被封鎖商品的列表以供銷售或購買。Dynamics AX:能夠使用高級過濾器/排序選項從代碼中禁用數據源
我在代碼中添加了InventItemSalesSetup和InventItemPurchSetup數據源,並且在用戶選中或取消選中複選框時啓用或禁用它們。
除非其中一個數據源被禁用,否則一切正常。然後「高級過濾器/排序」選項停止工作。我收到錯誤:「數據源未啓用」。
錯誤來自SysQueryForm表單的「saveCueEnabled」方法。當它調用:
if (!CueRun::canSaveQueryAsCue(this.args().caller()))
return false;
的呼叫:
static boolean canSaveQueryAsCue(QueryRun qr)
{
int numOfDataSources, i;
QueryBuildDataSource ds;
Query q;
Common cursor;
;
if (!qr)
return false;
q = qr.query();
if (!q)
return false;
numOfDataSources = q.dataSourceCount();
for(i = 1; i <= numOfDataSources; i++)
{
ds = q.dataSourceNo(i);
if(ds.dynalinkCount() > 0)
return false;
// Check if it is temp
cursor = qr.getNo(i);
if (cursor.dataSource() && cursor.isTmp())
return false;
}
return true;
}
當它得到查詢的數據源的數量,「dataSourceCount」方法也返回與禁用的數據源的數量,而當它會在循環中獲取被禁用的數據源的QueryBuildDataSource,您將得到一個空的DS,並且在檢查它是否是臨時表時會崩潰。
我已經解決了在「saveCueEnabled」代碼中增加一個額外的問題,但我不知道是否有一種方法來啓用/禁用數據源而不會出現此錯誤。
我希望我已經解釋好自己了,謝謝!
我認爲這應該工作。謝謝,我會嘗試如果我再次遇到這個問題。 –