2010-10-21 41 views
1

我只是努力通過以下情況 - 有一個數據源添加到axapta 2009中的網格,由querybuildrange過濾。標記篩選網格中的特定數據集

我想通過

datasource_DS.findrecord(specificRecord) 

標記由X ++特定的數據集以此爲意,取出過濾器,但不具有過濾器激活的作品! 解決方法刪除篩選器並將所有內容(篩選!)首先添加到臨時表不是我想要的。

我無法想象有沒有辦法完成這項任務?! 在此先感謝!

編輯:上形式

數據源: - ProdRouteJob(JoinSource:ProdTable,鏈接類型:InnerJoin) - ProdTable

含有特定ProdStatus僅數據集應顯示在網格中。 這是由提到的範圍內進行,例如:

prodStatusRange = prodTable_ds.query().dataSourceTable(tablenum(ProdTable)).addRange(fieldnum(ProdTable, ProdStatus)); 
prodStatusRange.value("((ProdStatus == 0) || (ProdStatus == 1))"); 

選擇一個特定數據所做,例如:

ProdRouteJob currentProdRouteJob; 
; 
currentProdRouteJob = ProdRouteJob::findJobId("JOB_12345"); 
info (currentProdRouteJob.JobId); 
prodRouteJob_DS.findRecord(currentProdRouteJob); 

的信息功能顯示正確的JobId。 如果我刪除過濾器,findRecord()選擇數據集,如果不是 - 沒有。 加入DS.research(true);不會更改此行爲。

+0

以下內容並不十分清楚:「此操作按預期工作,取下過濾器,但不啓用過濾器」。 陳述你的意圖。 – 2010-10-21 09:13:08

+0

'findRecord'不會「標記特定的數據集」,它會選擇一個特定的記錄作爲活動記錄。 – 2010-10-21 09:18:04

+0

對第一條語句的評論:如果我運行代碼,刪除篩選後 - 數據集_選擇_網格中的特定數據集。如果過濾器處於活動狀態,則不會發生指定數據集的選擇。 – Nico 2010-10-21 12:01:53

回答

0

您的目標是重繪網格並保留任何過濾。

2009年AX很容易:

datasource_DS.research(true); 

在AX 4.0和以前的你可以進行查詢,然後refind:

specificRecord = datasource.data(); 
datasource_DS.research(); 
datasource_DS.findRecord(specificRecord) 

有時這可能是緩慢的,如果有網格中的多條記錄。

+0

無論我是否使用您的建議代碼,行爲都是一樣的。指定的數據集未被選中。也許,我身邊有一個錯誤。我會發佈下面的代碼。 – Nico 2010-10-21 12:27:48

+0

嘗試簡化您的範圍表達式:'prodStatusRange.value(「0,1」);' 同樣在範圍更改之後,必須運行'ds.executeQuery()'。 ''ds.executeQuery()'或'ds.research()'必須放在'findRecord'之前才能生效。 – 2010-10-25 08:30:01