Report Generation 不知名的錯誤

我在用Report Generation 去寫入Table 時,只要有一個 Cell 中的文字大於一定的數量就會有一個奇怪的錯誤,我也到NI 去下載過UPDATE的檔案了,還是一樣,先問有其他先進朋友有遇到過同樣的問題嗎.

ReportOut.vi

BomTemplate.xls

以下有個範例你參考看看

Generate Report From Template (Excel)_modified.vi

Excel Template.xls

ancle38538.956724537

我的程式也是可以執行,但只要遇到一個Cell 內的字多到一定的量就會發生錯誤,ancle 您給的範例也會出現這樣的錯誤訊息.我試過了只要將哪個會發生錯誤的Cell 的字刪掉約50個就不會發生這種錯誤.請問有哪位先進知道這個問題的.

![](upload://tHHJbl2CCYH3zSuL2KgnORy0Ca5.jpeg)

KENLIN38539.3901967593

可以請 KENLIN 將會出錯的控制元值 設定為預設值傳上來,
並說明一下,大致會在哪個 VI 出現什麼錯誤情形嗎?

目前大概有看到幾個可能需要修正的地方。

其中除了 紅框 1 之外,其它都是小問題,不影響程式運作。

 

圖 1:

![](upload://5wr0QeFpo3XFaw9UcoxjlcDawPF.jpeg)

圖 1 說明:

紅框 1 :如果該迴圈的 N 值為 0 的話,會使 Report RefNum 傳送出空的
              refnum 這會讓後面的處理 report 的 程式碼全部出錯。

建議:將 Report RefNum 及 Error I/O 使用 Shift Register 來傳遞各個迴圈數
             所處理的資料。

紅框 2 :在 sequence 共有 4 個 frame ,建議將 Error I/O 傳遞下去,
             可能是 用 Local Variable 或是 將 sequence 去除,直接將原程式碼
             展開。

             這樣在 debug 會較易追蹤,且有效運用 Error I/O ,不漏掉任何
             可能的 error。

             基本上,NI 的 VI 設計有個概念,就是一但前面程式碼,
             有任何 error 後面的程式碼一律不執行。 (參考 註1)

 

圖 2:

![](upload://mW1FyZ2RUxKsgR53FuRXVwkz0fO.jpeg)

圖 2 說明:

紅框 3:(同紅框 2)

 

 

註1:在 NI 的程式碼設計通常會有下面的形式,個人覺得是滿棒的方式。

 

![](upload://owc9ci4ZYykpXkvoVm2HSugaAu.jpeg)

 

在 前面程式碼 發現錯誤時,一律用 Case Structure 來將整段 程式碼 skip 掉,
如果沒錯誤出現時,則常照執行該段 程式碼。

這樣做的用意是,當前面的 程式碼 出錯時,後面大半也會是錯的結果,
那麼沒有必要讓 錯誤的結果 再花去時間來執行之。

而 debug 一般來說,也是要從 程式碼源頭 做起,常常是 源頭 的錯誤排解後,
後面的錯誤 常會跟著解決了。

原來我傳錯檔了,我有把他轉成常數,結果卻傳錯.

其是主要是出在這個VI上

![](upload://qTz0HLTjrXtfRBGenDG9eNqqptb.jpeg)

我輸入的表格有被填入Excel 中,但只填到最多字的哪一格就會出現錯誤,只是刪除約50個字就一切OK了.不知道是不是這個VI或Excel 本身的限制.

test.vi

剛剛追縱的結果,的確在這一個 VI 上出了問題。

我試著將該 array 擁有很多資料量的其中一筆,
用「Append Report Text.vi」寫到 excel 的任一個 cell
但是卻不會發生錯誤。

這一點滿讓人困惑的。