powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / MSXML.DOM
7 сообщений из 7, страница 1 из 1
MSXML.DOM
    #39042495
rusus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеем xml файл из него необходимо перенести инфомацию в таблицу базы данных

Код: vbnet
1.
2.
3.
xml_path = "/1/2/3/4/5
        s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text
        rs.Fields("1") = IIf(s = "", Null, s)



i работает как счетчик

ТЕГ 5 ЕСТЬ не во всех файлах.
Вопрос в том как проигнорировать значение счетчика, если тег 5 отсутствует ,и перейти к следующей записи (тегу).
...
Рейтинг: 0 / 0
MSXML.DOM
    #39042663
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rususТЕГ 5 ЕСТЬ не во всех файлах.Тогда он не попадет в выборку selectNodes. В чем проблема?
...
Рейтинг: 0 / 0
MSXML.DOM
    #39042722
rusus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_rususТЕГ 5 ЕСТЬ не во всех файлах.Тогда он не попадет в выборку selectNodes. В чем проблема?


не совсем верно написал не проигнорировать, а поставить 0 где нет тегов "сумма"

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Sub LOADXML(ByVal filename As String)
Dim xmlDoc As Object 'MSXML2.DOMDocument
    Dim xmlNode As Object 'MSXML2.IXMLDOMNode
    Dim xmlNodeList As Object 'MSXML2.IXMLDOMNodeList
    Dim xml_path As String
    Dim i&, j&, s$
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("IMPORT")
    '
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    xmlDoc.async = False
    If Not xmlDoc.load(filename) Then
    Exit Sub
    End If
    '
    xml_path = "/1/2/3"
    j = xmlDoc.documentElement.selectNodes(xml_path).length - 1
 
        rs.AddNew
    

    xml_path = "/1/2/3/Ф/Фам"
    s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text
    rs.Fields("Фя") = IIf(s = "", Null, s)
     s = 0
         xml_path = "/1/2/3/Сумма"
        s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text
         rs.Fields("СУММА") = IIf(s = "", 0, s)
        
     
        rs.Update
    Next i
    rs.Close
    Set rs = Nothing
   
    
   
   End Sub



xml_path = "/1/2/3/Сумма"
s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text тут по счетчику 141 запись,следовательно при запуске ошибка,
тег Сумма может отсутствовать совсем

xml_path = "/1/2/3/Ф/Фам"
s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text тут 200 по счетчику, теги постоянные.
rs.Fields("Фам") = IIf(s = "", Null, s)

Проблема чтобы из 200 записей проставить информация из тега сумма тем у кого тег сумма присутствует ,а тем у кого тег сумма отсутствует ставить 0. Мысли кончились , посоветуйте что нибудь спасибо
...
Рейтинг: 0 / 0
MSXML.DOM
    #39042869
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rusus,
Сломал глаза, пока пытался разобраться в Вашем коде. Особенно доставило
rusus
Код: vbnet
1.
 Next i

при отсутствии For
rususПроблема чтобы из 200 записей проставить информация из тега сумма тем у кого тег сумма присутствует ,а тем у кого тег сумма отсутствует ставить 0Выбирайте коллекцию нод по пути "/1/2/3/" а потом пробегайтесь по этой коллекции и для каждого элемента коллекции выдергивайте фамилию и, если есть, сумму
...
Рейтинг: 0 / 0
MSXML.DOM
    #39042897
rusus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините забыл скопировать for

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
xml_path = "/1/2/3"
    j = xmlDoc.documentElement.selectNodes(xml_path).length - 1

For i = 0 To j
    
 
            rs.AddNew
    
   xml_path = "/1/2/3/Ф"
    s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text  
    rs.Fields("ф") = IIf(s = "", Null, s)

    xml_path = "/1/2/3/Сумма"
        s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text
         rs.Fields("СУММА") = IIf(s = "", 0, s)
        
  



s = xmlDoc.documentElement.selectNodes(xml_path)(i).Text тут ошибка при поиске тегов сумм ,из-за счетчика я так понимаю.
Вопрос был с этим. Vba знаю неделю ,так что не кидайте тапками.
...
Рейтинг: 0 / 0
MSXML.DOM
    #39042911
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rususs = xmlDoc.documentElement.selectNodes(xml_path)(i).Text тут ошибка при поиске тегов сумм ,из-за счетчика я так понимаю._Vasilisk_Выбирайте коллекцию нод по пути "/1/2/3/" а потом пробегайтесь по этой коллекции и для каждого элемента коллекции выдергивайте фамилию и, если есть, сумму
...
Рейтинг: 0 / 0
MSXML.DOM
    #39043250
rusus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно если не сложно пример VBA кода.
Спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / MSXML.DOM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]