Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
InfoPath 2007 Dataconnection未执行(适用于C#,而不是VB.NET)_.net_Infopath - Fatal编程技术网

InfoPath 2007 Dataconnection未执行(适用于C#,而不是VB.NET)

InfoPath 2007 Dataconnection未执行(适用于C#,而不是VB.NET),.net,infopath,.net,Infopath,您好 我有一个InfoPath 2007表单,表单的某些部分(主要是更改的事件)的编程是用C#完成的。我正在尝试将这些转换为VB,但是,我在DataConnection.Execute()方面遇到了问题 原始C#代码如下所示: XPathNavigator main = MainDataSource.CreateNavigator(); XPathNavigator mainStart = main.SelectSingleNode("*xPath*", NamespaceManager); s

您好

我有一个InfoPath 2007表单,表单的某些部分(主要是更改的事件)的编程是用C#完成的。我正在尝试将这些转换为VB,但是,我在DataConnection.Execute()方面遇到了问题

原始C#代码如下所示:

XPathNavigator main = MainDataSource.CreateNavigator();
XPathNavigator mainStart = main.SelectSingleNode("*xPath*", NamespaceManager);
string strWO = mainStart.Value.ToString();

DataSource ds = DataSources["Discrepancies"];
XPathNavigator xnds = ds.CreateNavigator();
xnds.SelectSingleNode("*xPath*", NamespaceManager).SetValue(strWO);

DataConnection dc = ds.QueryConnection;
dc.Execute();

XPathNavigator nvgFaults = DataSources["Discrepancies"].CreateNavigator();
XPathNodeIterator faultNodes = nvgFaults.Select("*xpath*", NamespaceManager);

while (faultNodes.MoveNext())
      {
      string nodeSequence = faultNodes.Current.SelectSingleNode("ACTION_SEQUENCE", NamespaceManager).Value;
      string nodeFault = faultNodes.Current.SelectSingleNode("FAULT_NOTES", NamespaceManager).Value;
      string nodeAction = faultNodes.Current.SelectSingleNode("ACTION_NOTES", NamespaceManager).Value;

      writer.WriteStartElement("group4", myNameSpace);
      writer.WriteElementString("txtSequence", myNameSpace, nodeSequence);
      writer.WriteElementString("txtFault", myNameSpace, nodeFault);
      writer.WriteElementString("txtAction", myNameSpace, nodeAction);
      writer.WriteEndElement();
      }
正确执行,按预期填写表单,但下面显示的VB代码没有:

Dim main As XPathNavigator = MainDataSource.CreateNavigator()
Dim mainStart As XPathNavigator = main.SelectSingleNode("*xPath*", NamespaceManager)
Dim strWO As String = mainStart.Value.ToString

Dim dsresult As DataSource = DataSources("Discrepancies")
Dim xNav As XPathNavigator = dsresult.CreateNavigator()
xNav.SelectSingleNode("*xPath*", NamespaceManager).SetValue(strWO)

Dim dataConn As DataConnection = dsresult.QueryConnection()
dataConn.Execute()

Dim navFaults As XPathNavigator = DataSources("Discrepancies").CreateNavigator()
Dim faultNodes As XPathNodeIterator = navFaults.Select("*xPath*", NamespaceManager)

Dim myNameSpace As String = NamespaceManager.LookupNamespace("my")

While faultNodes.MoveNext()
       Dim nodeSequence As String = faultNodes.Current.SelectSingleNode("ACTION_SEQUENCE", NamespaceManager).Value
       Dim nodeFault As String = faultNodes.Current.SelectSingleNode("FAULT_NOTES", NamespaceManager).Value
       Dim nodeAction As String = faultNodes.Current.SelectSingleNode("ACTION_NOTES", NamespaceManager).Value

       Using writer As XmlWriter = MainDataSource.CreateNavigator(). _
       SelectSingleNode("/my:myFields/my:group1", NamespaceManager).AppendChild()

              writer.WriteStartElement("group2", myNameSpace)
              writer.WriteElementString("txtSequence", myNameSpace, nodeSequence)
              writer.WriteElementString("txtFault", myNameSpace, nodeFault)
              writer.WriteElementString("txtAction", myNameSpace, nodeAction)
              writer.WriteEndElement()
              writer.Close()
        End Using
End While
我已经运行了几个测试(示例中没有说明),以证明我实际上得到了正确的变量,例如“strWO”。然后将此变量传递给数据源“差异”,这是一个存储过程

如果我通过WebMethod(也转换为VB)调用SP差异,它实际上会返回它应该返回的信息。这一切都很好。我得到了我所期望的信息

但是,VB版本不执行查询。对节点计数进行简单测试时,我得到“0”。而我正在测试的特定项应返回低40的节点计数。有数据要处理,但我无法执行查询。这让我快发疯了

有些变量名不同于c#到vb,还有一些infoPath xpath,为了便于阅读,我将其简化为xpath。有些XPath很长。但是,我确信任何变量名的更改都是一致的

感谢您的帮助


谢谢。

很抱歉这么说,我想你已经设置了数据源离散度来接收数据了?Nathan,是的,它设置为接收数据,但是,在确保我告诉你的是正确的之后;我注意到在两个“版本”之间的模式中有一个小的差异(不要与数据源名称的差异混淆),这就是我的错误发生的地方以及它没有执行的原因。一旦修好了,一切都很好。