InfoPath 2007 Dataconnection не выполняется (работает в C #, а не в VB.NET) - PullRequest
1 голос
/ 20 августа 2009

Привет,

У меня есть форма 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'. Затем эта переменная передается в источник данных «Расхождения», который является хранимой процедурой.

Если я вызываю несоответствия SP через мой WebMethod (также преобразованный в VB), он на самом деле возвращает информацию, которую должен. Это все хорошо. Я получаю информацию, которую ожидаю.

Но версия VB не выполняет запрос. Делая простой тест на количество узлов, я получаю «0». В то время как конкретный элемент, который я тестирую, должен возвращать количество узлов в младших 40-х годах. Есть данные, которые нужно получить, но я не могу заставить запрос выполнить. И это сводит меня с ума.

Некоторые имена переменных отличаются от c # до vb, а также некоторые infoPath xPath, которые я упростил до xpath для удобства чтения. Некоторые из этих xPaths становятся довольно длинными. Но я уверен, что любые изменения имени переменной являются последовательными.

Любая помощь приветствуется.

Спасибо.

...