powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / не добавляются записи в таблицу
5 сообщений из 5, страница 1 из 1
не добавляются записи в таблицу
    #39833643
novichok94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток! Есть задача редактировать записи в XML файле. Для начала нужно распарсить XML в таблицу.
КОД:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim DNs, dn
Dim MyPath$
Dim strSQL

MyPath = Me.txtSelectedName

strSQL = "DELETE * FROM backup"
    CurrentDb.Execute (strSQL)
     
     With CreateObject("MSXML2.DOMDocument")
        .async = False: .validateOnParse = False
        .Load MyPath

        Set DNs = .SelectNodes("//managedObject[@class='BTS']")
        For Each dn In DNs
        Debug.Print dn.getAttribute("distName")
        Next dn
                  ' При такой конфигурации вижу в immediate, все нужные записи из файла.    
        
    End With
' Если делаю импорт в таблицу то в ней, поле DN пустое
'strSQL = "Insert into backup (dn_bts) values ('" & dn & "')"
'CurrentDb.Execute (strSQL)


результат Debug.print в окне immediate:
[img src=" https://i.ibb.co/ByGCJLR/image.png" alt="image" border="0"]

Если добавляю в таблицу вижу следующее:
[img src=" https://ibb.co/WDNKCPt/image.png" alt="image" border="0"]

Вопрос:
Почему в таблицу не попадают найденные записи?
Пробовал перенести strSQL в конструкцию With, результат тот же.
Помогите пожалуйста разобраться.
...
Рейтинг: 0 / 0
не добавляются записи в таблицу
    #39833658
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novichok94, переносить нужно текст
Код: vbnet
1.
2.
3.
4.
For Each dn In DNs
strSQL = "Insert into backup (dn_bts) values ('" & dn.getAttribute("distName") & "')"
CurrentDb.Execute (strSQL)
Next 
...
Рейтинг: 0 / 0
не добавляются записи в таблицу
    #39833664
novichok94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,
Спасибо большое, помогло.
Если не сложно можете пожалуйста объяснить разницу в моём варианте и вашем.
...
Рейтинг: 0 / 0
не добавляются записи в таблицу
    #39833677
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novichok94,
вы пытались в таблицу закинуть ноду, нода - это элемент дерева (объект), имеющий свойства различные.
бывают разные типы нод (корневые узлы, элементы, узлы команд и пр.)
вы находите ноду у которой есть определенный признак
потом текстовое свойство найденной ноды и заносите в таблицу
...
Рейтинг: 0 / 0
не добавляются записи в таблицу
    #39834393
novichok94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здрасте.
Помогите пожалуйста ещё раз, сколько не пробовал у самого не получается.
Есть Вот такая структура XML:
Код: xml
1.
2.
3.
4.
5.
6.
<cmData type="plan" id="PlanConfiguration">
    <managedObject class="BTS" version="BSC17" distName="PLMN-PLMN/BSC-45/BCF-260/BTS-260" >
        <p name="name">DON1994</p>
        <p name="segmentName">DON1994</p>
    </managedObject>
</cmData>



Нужно распарсить в таблицу этот атрибут distName <- с этим разобрался
также в эту же талицу нужно распарсить значение дочерних элементов name,segmentName возможно в будущем что то ещё из дочерних элементов, у всех дочерних тег P.

В одном XML таких родительских и дочерних элементов много, поэтому нужно сделать циклом.

Получилось парсить только в разные таблицы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  With CreateObject("MSXML2.DOMDocument")
        .async = False: .validateOnParse = False
        .Load MyPath

        Set bsname = .SelectNodes("//managedObject[@class='BTS']/p[@name='name']")
        Set nameBts = .SelectSingleNode("//managedObject[@class='BTS']/p[@name='name']")
            For Each nameBts In bsname
                SQLvalue = "Insert into names (bts_name ) values ('" & nameBts.Text & "')"
                CurrentDb.Execute (SQLvalue)
            Next
                
        Set DNs = .SelectNodes("//managedObject[@class='BTS']")
            For Each dn In DNs
                bcf_full = Split(dn.getAttribute("distName"), "/")(2)
                bcf = Split(bcf_full, "-")(1)
                bts_full = Split(dn.getAttribute("distName"), "/")(3)
                bts = Split(bts_full, "-")(1)
                strSQL = "Insert into backup (DN_BTS,BCF,BTS ) values ('" & dn.getAttribute("distName") & "' , '" & bcf & "', '" & bts & "')"
                CurrentDb.Execute (strSQL)
             Next
      
    End With



Я как чую можно сделать это как то так:
Код: vbnet
1.
2.
3.
.SelectNodes //managedObject[@class='BTS']
' здесь берем distName из родительского элемента
'потом значения дочерних нодов которые имеют определенный аттрибут 



Заранее всем спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / не добавляются записи в таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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