本文說明如何針對所羅門常見的水晶報告®錯誤進行疑難解答。
適用於: Microsoft Dynamics SL
原始 KB 編號: 844751
Microsoft Dynamics SL 支援安裝 Crystal Reports®、其標準報告的內容、其標準報表的效能,以及回應有關 Crystal 內基本功能的一般操作問題。 Microsoft Dynamics SL 不一定要提供已修改或新開發報表的偵錯支援,但會遵循一般技術支援疑難解答技術(如下所述),以確認沒有Microsoft Dynamics SL 錯誤存在。
報告疑難解答程式的主要目標是識別報告錯誤的原因。 若要這樣做,應該要求下列問題來協助了解問題的詳細數據:
- 正在列印什麼報告?
- 正在列印該報表的格式為何?
- 報表是自定義的嗎?
- 是否使用範本、排序和/或選擇?
- 這份報告是否曾經有效? 變更的項目為何?
- 報表是否在其他資料庫中運作(例如示範資料庫)?
下一個步驟是嘗試重新建立錯誤,以判斷問題是否與資料庫或應用程式有關。 如果其他資料庫中可以重新建立相同的錯誤(示範資料庫),Dynamics SL 技術支援就會記錄並提交測試步驟給 Dynamics SL 開發群組,以便提供更正。 不過,如果錯誤似乎僅適用於該資料庫,則可能表示實際數據發生問題,而不是應用程式錯誤。
如需針對水晶報表®進行疑難解答的完整指示,請參閱下列步驟。
注意
如果在疑難解答程式期間發生任何問題,請在嘗試建議的動作之前,連絡技術支援以取得釐清。
檢閱顯示在 ROI (投資報酬率) 畫面標題列中的報表名稱和螢幕號碼,以判斷要列印的報表。
決定列印報表時選取的報表格式。 例如,如果針對一般總賬詳細報表進行疑難解答,則確定當前使用的是兩種報表格式中的哪一種:標準或多貨幣。
使用查詢分析器,判斷對應至報表格式的報表檔名,如步驟 2 中所述。 若要這樣做,請存取適當的系統資料庫,並執行下列語句:
SELECT * from RPTCONTROL where ReportNbr = '01620'
注意
其中ReportNbr = 報表畫面的前 5 位數。 值應該以引號和不含小數點來輸入。 在此範例中,01620 代表 GL 明細總賬報告(01.620.00)。
檢閱儲存在 ReportFormat00 - ReportFormat07 欄位中的資訊。 找出所需的 [報表格式] 名稱,並記下其所在的 ReportFormatXX 欄位。 對應的報表檔名會在相符的 ReportNameXX 欄位中找到,也就是 *。列印報表時,Dynamics SL 所使用的 RPT 檔名。 根據範例,總帳明細報告的標準格式儲存在 ReportFormat00 中,而相應的 *.RPT 報表檔名 - 01620 則可在 ReportName00 中找到。
注意
所有資訊都很重要,因為後續步驟會需要此資訊。
判斷報表是否為標準 Dynamics SL 報表。
使用檔案總管,查看
DYNAMICSSL\USR_RPTS
目錄的內容,並判斷是否找到步驟 3 中指出的 *.RPT 檔案。 如果是,則可能表示自定義報表。 重新命名檔案。使用檔案總管,找出並記下 *。RPT 檔案位於模組的子目錄中(也就是
\SOLOMONIV\GL\01620.RPT
)。 如果日期與 Dynamics SL CD 上與目前安裝產品相關的日期不同,則可能表示報表自訂或安裝故障。 將這個檔案重新命名並取代為適當的產品CD或Service Pack中的檔案。 如果使用 CD,請移除唯讀屬性。 重新測試報表。
拿掉任何範本、排序或選取,然後重新測試報表。 如果報表列印成功,請使用示範資料庫重新建立排序選取,並比較結果。 如果兩者都收到錯誤,則問題可能與可用性或潛在瑕疵有關。 如果使用示範資料庫時未收到錯誤,請繼續進行步驟 6。
使用查詢分析器中的下列語句,從 RPTRUNTIME 和 RPTCOMPANY 刪除任何孤立的暫存記錄。 所有使用者都必須在執行指令之前退出 Dynamics SL。
注意
RPTRUNTIME 位於 Dynamics SL 的 System 和 Application 資料庫中。 RPTCOMPANY 只能在所羅門IV 4.x版應用程式資料庫中找到。 這些數據表可用來識別列印報表的使用者和工作站,讓多個用戶同時列印相同的報表。
存取適當的系統資料庫,並執行下列語句:
DELETE from RPTRUNTIME
選取適當的應用程式資料庫,然後執行下列語句:
DELETE from RPTRUNTIME DELETE from RPTCOMPANY
執行語法之後,如果仍然出現錯誤,但無法在示範資料庫中重現,請繼續進行下列步驟來檢查真實數據。
檢閱報表所使用的 SQL 查詢。
存取 Crystal Reports® Designer 中的報表。
選取 [ 資料庫],顯示 [SQL 查詢]。
從 [機器數據源] 列表中選取 [資料庫來源名稱]。 選擇 確定。
再次選取 [SQL Server 登入畫面] 中的 [ 確定 ],以 sa 身分登入。
下列範例是詳細總賬報表所使用的 SQL 查詢。 此語句會針對資料庫執行,而 Query 所使用的 FROM 子句包含用來列印報表的資料庫數據表或檢視表。 依賴於工作數據表的報表中,會在FROM子句中顯示以
WRK
開頭或結尾的物件名稱。 依賴檢視的報表會顯示以vr
開頭的物件名稱。SELECT vr_01620."Acct", vr_01620."Sub", ..... FROM "DemoApp0060"."dbo"."vr_01620"
vr_01620
記錄 Query 語句之 FROM 區段中所列的任何數據表或檢視表。 如果列出工作數據表,請繼續進行步驟 8。 如果顯示出檢視畫面,請繼續進行第 9 步。 如果未列出工作數據表或檢視表,請繼續執行步驟 10。
使用查詢分析器中的下列語句,刪除工作數據表中剩餘的任何孤立記錄。 所有使用者都必須在執行指令之前退出 Dynamics SL。
注意
工作數據表是空的數據表,只有當報表正在列印或正在執行進程時,才會使用。 工作表應保持空白,除非有報表依賴於特定的工作表,並且目前正在 Dynamics SL 中生成。 例如,AR 客戶對帳單 08.600.00 會使用名為 AR08600_wrk 的工作數據表。 AR08600_wrk會出現在步驟 7 所參考的 FROM 子句中。
存取適當的應用程式資料庫,並執行下列語句:
DELETE from AR08600_WRK
繼續進行步驟 9。
重建 System 和 Application 資料庫的檢視、預存程式和索引。 重新測試報表。
如果從工作數據表刪除孤立的記錄、重新建立視圖,或者在查詢語句中既不使用工作數據表也不使用視圖後,仍然持續發生錯誤,則有必要檢查視圖、預存程序或查詢所傳回的實際數據。 執行在查詢分析器的步驟 7 中檢閱的 Crystal SQL Query 語句。
存取適當的應用程式資料庫,並將步驟 7 中檢閱的 SQL 查詢語句複製並貼到查詢視窗中。
使用編輯移除引號,在尋找內容中輸入:",然後選擇全部取代。 這會移除所有引號。 [ 取代為] 保留空白。
從查詢中移除限定的資料庫名稱、擁有者、物件名稱。
使用步驟 7 中提供的範例,刪除DemoApp0060.dbo.vr_01620,只留下vr_01620
在 Dynamics SL 中,從 ROI 畫面預覽列印報表。 保持任何錯誤訊息在畫面上,不要選取 [ 確定]。 這會在 RPTCOMPANY 中插入必要的暫存記錄。
在查詢分析器中執行 SQL 查詢語句,並檢閱無效或遺漏數據的數據。
如果在檢閱數據之後,判斷報表問題的原因遺失或損毀數據,請使用對應的模組完整性檢查(僅限驗證選項)來確認支持的記錄存在。 如需執行完整性檢查的詳細資訊,請參閱 Dynamics SL 在線說明或使用者指南。
如果需要進一步的協助,請連絡 Dynamics SL 技術支援。