2013-01-22 77 views
1

我試圖在SalesQuotationLine表的主數據源中構建一個包含AX 2009(SP1,當前彙總6)的報告。由於我們的庫存結構如何,我需要應用僅顯示某些類別的項目(在這種情況下,如InventTable中定義的非服務項目)的過濾器。但是,似乎在SalesQuotationLine和InventTable之間的鏈接中存在問題,因此只會顯示兩個特定項目。通過InventTable過濾行情

我們也根據銷售報價詳細信息屏幕測試了這一結果,結果相同。執行如下查詢:enter image description here

...將僅顯示具有前面提到的特定項目之一的報價。如果我們將項目類型更改爲其他項目(例如項目),則結果爲空集合。我們也在我們的一臺二級測試服務器上發現了這個問題,對於所有的意圖都是全新的安裝。

從一個表到另一個表的數據映射似乎沒有任何問題,並且我們沒有遇到任何其他表集的這個問題。這是一個真正的問題,還是我錯過了一些東西?

+1

您有多接近[報價單]和[報價行]之間的連接標準?查看該連接中正在使用的列的名稱,然後檢查表中的數據。您是否嘗試將查詢拆分爲兩個單獨的查詢[報價單] - [報價行]與[報價行] - [項目]?它可以幫助你隔離你的問題。 – tgolisch

+0

「報價 - >報價行關係」仍然是默認值:「SalesQuotationLine.QuotationId == SalesQuotationTable.QuotationId」。 SalesQuotationLine和InventTable之間沒有直接關係,但SalesQuotationLine.ItemId具有ItemIdSmall的ExtendedDataType,它擴展了ItemId(無變化),它具有「ItemId = InventTable.ItemId」的關係。對添加過濾器的表單數據源方法沒有任何修改。表格 - >線路濾波器工作正常,它似乎只是線路 - >項目之間的鏈接。 – kingofzeal

+0

是否將ItemType始終設置爲非空值(對於缺失的行)? – tgolisch

回答

2

在分析查詢執行期間運行的SQL配置文件的結果後,似乎問題在於系統錯誤。選擇表格加入SalesQuotationLines時,您有兩個選項:'項目'和'項目(項目編號)'。無論您選擇查詢執行哪個表,它都會使用關係「SalesQuotationLines.ProjTransCode = InventTable.ItemId」加入InventTable。 在系統中的表進行比較,以其他層後,我發現的從createLine方法除去以下代碼塊(在SYP層):

if (this.ProjTransType == QuotationProjTransType::Item) 
{ 
    this.ProjTransCode = this.ItemId; 
} 

由於不再被填充ProjTransCode中,加入不除了某些具有ProjTransCode填充的報價行外,不能工作。

此外,沒有與InventTable直接定義的關係 - 鏈接僅通過SalesQuotationLine.ItemId字段上使用的擴展數據類型來維護。手動添加這個關係解決了這個問題。

+0

我想知道他們爲什麼在系統補丁中刪除了 – SShaheen

+1

我的猜測是它被移到了initBy ...方法之一中,所以它只能在Project billings中分配(由字段名稱隱含)的每一個報價。更爲奇怪的是,關係沒有被定義,即使它被聲明爲MSDN文檔中的關係。這也可能在後續的彙總中得到修復。 – kingofzeal