2011-05-24 91 views
0

誤差的一個實例在InfoPath:C#對象引用不設置爲一個對象

對象引用不設置爲一個對象的一個​​實例。 在InfoPathFormTemplate5.FormCode.CTRL407_5_Clicked(對象發件人,ClickedEventArgs E) 在Microsoft.Office.InfoPath.Internal.ButtonEventHost.OnButtonClick(DocActionEvent pEvent) 在Microsoft.Office.Interop.InfoPath.SemiTrust._ButtonEventSink_SinkHelper.OnClick(DocActionEvent pEvent)

VB2005中的錯誤:未將對象引用設置爲對象的實例。 System.NullReferenceException未被用戶代碼處理 Message =「未將對象引用設置爲對象的實例。」 源= 「InfoPathFormTemplate5」 堆棧跟蹤: 在InfoPathFormTemplate5.FormCode.CTRL407_5_Clicked(對象發件人,ClickedEventArgs e)如C:\ Documents和Settings \ pebabczu \桌面\ IntakeForm複印\ InfoPathFormTemplate5 \ FormCode.cs:線206 在微軟。 Office.InfoPath.Internal.ButtonEventHost.OnButtonClick(DocActionEvent pEvent) 在Microsoft.Office.Interop.InfoPath.SemiTrust._ButtonEventSink_SinkHelper.OnClick(DocActionEvent pEvent)

代碼:

string TeamL = xnMyForm.SelectSingleNode("/my:myFields/my:field149", ns).Value; 
string ACC = xnMyForm.SelectSingleNode("/my:myFields/my:Bank", ns).Value; 
string remarkmain = xnMyForm.SelectSingleNode("/my:myFields/my:field104", ns).Value; 
string RemarkHR = xnMyForm.SelectSingleNode("/my:myFields/my:Remarks1", ns).Value; 
string RemarkTL = xnMyForm.SelectSingleNode("/my:myFields/my:field55", ns).Value; 
string RemarkIT = xnMyForm.SelectSingleNode("/my:myFields/my:RemarksICT", ns).Value; 
string Rmain = "Remarks: " + remarkmain; 
string RHR = "Remarks: " + RemarkHR; 
string RTL = "Remarks: " + RemarkTL; 
string RIT = "Remarks: " + RemarkIT; 

我沒有得到它......只是進入C#我做錯了什麼。?

+0

哪條線是#206? – 2011-05-24 14:16:41

+0

字符串RemarkIT = xnMyForm。SelectSingleNode(「/ my:myFields/my:RemarksICT」,ns).Value; – Euronymus 2011-05-24 15:11:08

+0

肯定是一個返回null不知道爲什麼......雖然檢查所有其他 – Euronymus 2011-05-24 15:11:48

回答

4

那麼,你正在取消引用結果爲空的東西。

很難確切地說出哪一行代碼有問題,但您應該查看第206行。我強烈懷疑SelectSingleNode返回的是您的某個XPath表達式的null - 然後您嘗試訪問導致異常的Value屬性。

所以,你需要:

  • 工作哪些訂單是造成問題
  • 找出是否是因爲數據是錯誤或您的XPath查詢
  • 考慮投入無效在訪問該值之前進行檢查(如果您真的應該確實總是找到一個節點,那麼異常可能是正確的方法)
+0

@forsvarir:修正,謝謝。 – 2011-05-24 14:20:38

+0

感謝您的答覆..將嘗試和檢查查詢線是def def的Remarkict線 – Euronymus 2011-05-24 15:19:56

0

在實例化之前正在使用某物,或者以其他方式null - 正在xnMyForm實例化?然後進一步,檢查所有其他代碼路徑以確定元素是否爲null或返回。

+0

感謝您的答覆,但我不明白你的意思是通過實例化... – Euronymus 2011-05-24 15:17:46

0

要麼xnMyFormnull,或者你嘗試選擇(使用SelectSingleNode)一個節點,它沒有在文檔中存在並且.Value被調用的返回null

+0

謝謝你的replyOded我這是一個文本域的infopath,我填補在...滾動的簡單文本自動更正,如果需要.. string RemarkIT = xnMyForm.SelectSingleNode(「/ my:myFields/my:RemarksICT」,ns).Value ;.絕對是返回null的行。不知道爲什麼,儘管它與其他具有相同屬性的其他人相同。 – Euronymus 2011-05-24 15:17:06

0

很可能你的一個SelectSingleNode()調用返回一個null值,所以你不能把一個.Value關掉。

+0

感謝您的回覆Roy字符串RemarkIT = xnMyForm.SelectSingleNode(「/ my:myFields/my:RemarksICT」,ns).Value ;.絕對是返回null的行。不知道爲什麼,儘管它與其他具有相同屬性的其他人相同。 – Euronymus 2011-05-24 15:13:11

+1

@ user767533:這不是線路返回null - 這是對SelectSingleNode的調用返回null。您然後嘗試訪問Value屬性。我的猜測是你在xpath epression中犯了一個錯字。 – 2011-05-24 16:57:30

+0

確實......喬恩表達了它的更好,並將它釘在了一起。 – 2011-05-25 03:46:19

相關問題