2011-05-24 41 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

相关问题