Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/50: Рейтинг темы: голосов - 50, средняя оценка - 4.80
 Аватар для nat_zz
0 / 0 / 1
Регистрация: 07.05.2013
Сообщений: 39

VB6 и XML от начинающей

07.05.2013, 20:11. Показов 10508. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый всем!
Жизнь заставляет сейчас писать на VB6 создание XML-файла по моим данным.
Не зная ни того, ни другого, где-то просто отрыла какой-то учебный пример и стала его переделывать. Почти идет, но проблема: у меня (упрощая суть) надо на выходе иметь что-то типа:
<T1RXXXXG02 ROWNUM="1">1335204566</T1RXXXXG02>
<T1RXXXXG02 ROWNUM="2">1335207800</T1RXXXXG02>
<T1RXXXXG02 ROWNUM="3">4445201806</T1RXXXXG02>
А получается то же самое, но нач.тэг – без ROWNUM="1”
У меня программа (если выхолостить лишнее) имеет примерный вид:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim objDoc As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMNode
 
Set objDoc = New DOMDocument
objDoc.resolveExternals = True
Set objNode = objDoc.createProcessingInstruction( _
    "xml", "version='1.0' encoding='windows-1251'")
Set objNode = objDoc.insertBefore(objNode, objDoc.childNodes.Item(0))
Set objRoot = objDoc.createElement("DECLAR")
Set objDoc.documentElement = objRoot
     
objRoot.setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
objRoot.setAttribute "xsi:noNamespaceSchemaLocation", "E04T00F.XSD"
 
Do While Not RsStat.EOF
     Set objNode = objDoc.createElement("T1RXXXXG02")
     objDoc.documentElement.setAttribute "ROWNUM", "'" + Trim(Str(RsStat.Fields.Item("np"))) + "'"
    objNode.Text = Trim(RsStat.Fields.Item("tin"))
    objdeclb.appendChild objNode
    RsStat.MoveNext
Loop
objRoot.setAttribute "xmlns:xsi"… - проходит, дозаписывает в нач.тэг,
а objDoc.documentElement.setAttribute "ROWNUM", "'" + Trim(Str(RsStat.Fields.Item("np"))) + "'" – нет.
Кто поможет???? ((((
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2013, 20:11
Ответы с готовыми решениями:

Книги для начинающей
Privetik VSEM!!!!! Skojite pojalusta samaya lutshey kniga izucheniya c# dlya NOCHENAYUSHIY!!! Zoraniya Sposiba!!!!

Windows 2000 Rus VB6, VB6 Resource Editor отсутствует
В Windows 2000 Rus + SP3 проинсталлировал Visual Studio 6 + MSDN Full (вся студия на 6 CD-R). В VB6 “Add-In Manager” всего три компонента,...

Контроль длины Label. А также VB6 Portable vs VB6 Installed.
Исходя из заголовка темы, вопроса 2: 1.) Как определить, что в Label уже не хватает места для Caption? Длина букв разная. Например,...

26
 Аватар для nat_zz
0 / 0 / 1
Регистрация: 07.05.2013
Сообщений: 39
14.05.2013, 16:37  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Alex77755 Посмотреть сообщение
Примеры из моего архива
Пасибки! Будем посмотреть!!!! )))) А что-то из документации VB6-->XML имеете или знаете ссылки??

Добавлено через 3 часа 39 минут
Цитата Сообщение от Catstail Посмотреть сообщение
Маленькое исправление:
Пасибки, вроде задышало как надо!!! ))))
Правда, тут само задание и структура выхода поменялась, но это уже мое доп.горе! ((((
Но остался еще непонятный вопрос - в вых.файле закрывающий тэг
XML
1
<DECLARBODY/>
так и не пишется, хотя вых.файл вроде открывается!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
14.05.2013, 20:46
1) не <DECLARBODY/>, а </DECLARBODY>
2) в моем архиве результат выполнения моей программы:

<?xml version="1.0" encoding="windows-1251"?>
<DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="E04T00F.X SD">
<T1RXXXXG1 ROWNUM="1">Ля-ля-ля</T1RXXXXG1>
<T1RXXXXG2 ROWNUM="2">Ля-ля-ля</T1RXXXXG2>
<T1RXXXXG3 ROWNUM="3">Ля-ля-ля</T1RXXXXG3>
<T1RXXXXG4 ROWNUM="4">Ля-ля-ля</T1RXXXXG4>
<T1RXXXXG5 ROWNUM="5">Ля-ля-ля</T1RXXXXG5>
<T1RXXXXG6 ROWNUM="6">Ля-ля-ля</T1RXXXXG6>
<T1RXXXXG7 ROWNUM="7">Ля-ля-ля</T1RXXXXG7>
<T1RXXXXG8 ROWNUM="8">Ля-ля-ля</T1RXXXXG8>
<T1RXXXXG9 ROWNUM="9">Ля-ля-ля</T1RXXXXG9>
<T1RXXXXG10 ROWNUM="10">Ля-ля-ля</T1RXXXXG10>
</DECLAR> <--- Это что???
0
 Аватар для nat_zz
0 / 0 / 1
Регистрация: 07.05.2013
Сообщений: 39
14.05.2013, 22:24  [ТС]
Нееееетттт!!!! У меня как бы 2 уровня на выходе должно быть, вот так:
<?xml version="1.0" encoding="windows-1251"?>
<DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSch
<DECLARHEAD>
<TIN>32016210</TIN>
<C_DOC>J05</C_DOC>
.разная лабуда здесь
</DECLARHEAD>
<DECLARBODY>
<HTIN>32016210</HTIN>
..разн общ фразы, а ниже - как раз вот эти о чем и говорили все это время:
<T1RXXXXG02 ROWNUM="1">2082330114</T1RXXXXG02>
<T1RXXXXG03A ROWNUM="1">4380.00</T1RXXXXG03A>
<T1RXXXXG03 ROWNUM="1">4380.00</T1RXXXXG03>
<T1RXXXXG04A ROWNUM="1">633.34</T1RXXXXG04A>
.....................ну а здесь некоторые концовки
</DECLARBODY>
</DECLAR>
И у меня в конце выходн файла получается DECLAR закрывающий есть, а DECLARBODY - нет!!!!
А по сортировке входн файла dbf есть мудрые мысли?

Добавлено через 16 минут
Вот так примерно недоработанное все у меня на тек момент выглядит:
PureBasic
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
Dim objDoc As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMNode
Dim currNode As MSXML2.IXMLDOMNode
Dim objAttr As MSXML2.IXMLDOMAttribute
'Dim objRoot As MSXML2.IXMLDOMElement
'Dim objdecl As MSXML2.IXMLDOMElement
'.........................
Private Sub OK_Click()
Set CnStat = New ADODB.Connection
CnStat.ConnectionString = "DRIVER={Microsoft dBase driver (*.dbf)}"
CnStat.Open
sqlStat = "select * from DA103401"  '' order by tin"
Set RsStat = New ADODB.Recordset   ' NewRecordset
Set RsStat = CnStat.Execute(sqlStat)
'CnStat.Recordset.Sort = RsStat.Fields.Item("tin")
''RsStat.Recordset.Sort = RsStat.Fields.Item("tin")
'' ïîäñ÷åò èòîãîâ:
RsStat.MoveFirst
xtin = ""    ' RsStat.Fields.Item("tin")
kolp% = 0
kols% = 0
koll% = 0
RsStat.MoveFirst
Set objDoc = New DOMDocument
objDoc.resolveExternals = True
Set objNode = objDoc.createProcessingInstruction( _
    "xml", "version='1.0' encoding='windows-1251'")
Set objNode = objDoc.insertBefore(objNode, objDoc.childNodes.Item(0))
    
Set objroot = objDoc.createElement("DECLAR")
Set objDoc.documentElement = objroot
     
objroot.setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
objroot.setAttribute "xsi:noNamespaceSchemaLocation", "E04T00F.XSD"
 
Set objdecl = objDoc.createElement("DECLARHEAD")
objroot.appendChild objdecl
Set objNode = objDoc.createElement("TIN")
objNode.Text = Format(GBmenu.Xokpo, "00000000") ''   Trim(GBmenu.Xokpo)
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_DOC")
objNode.Text = "J05"
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_DOC_SUB")
objNode.Text = "001"
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_DOC_VER")
objNode.Text = "3"
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_DOC_TYPE")
objNode.Text = "0"
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_DOC_CNT")
objNode.Text = "1"
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_REG")
objNode.Text = Mid(xkod_pn, 1, 2)
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_RAJ")
objNode.Text = Mid(xkod_pn, 3, 4)
objdecl.appendChild objNode
Set objNode = objDoc.createElement("PERIOD_MONTH")
objNode.Text = Str(RsStat.Fields.Item("period") * 3)
objdecl.appendChild objNode
Set objNode = objDoc.createElement("PERIOD_TYPE")
objNode.Text = "2"
objdecl.appendChild objNode
Set objNode = objDoc.createElement("PERIOD_YEAR")
objNode.Text = Format(RsStat.Fields.Item("rik"), "0000")
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_STI_ORIG")
objNode.Text = xkod_pn
objdecl.appendChild objNode
Set objNode = objDoc.createElement("C_DOC_STAN")
objNode.Text = "1"
objdecl.appendChild objNode
 
Set objNode = objDoc.createElement("LINKED")
objDoc.createElement("LINKED").setAttribute "xsi:nil", "'true'"
objNode.Text = ""
objdecl.appendChild objNode
Set objNode = objDoc.createElement("D_FILL")
objNode.Text = Format(Date, "DDMMYYYY")
objdecl.appendChild objNode
Set objNode = objDoc.createElement("SOFTWARE")
objNode.Text = "Visual Basic"
objdecl.appendChild objNode
 
Set objdeclb = objDoc.createElement("DECLARBODY")
objroot.appendChild objdeclb
Set objNode = objDoc.createElement("HTIN")
objNode.Text = Format(GBmenu.Xokpo, "00000000")
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HPAGES")
objDoc.createElement("HPAGES").setAttribute "xsi:nil", "'true'"
objNode.Text = "1"
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HZ")
objNode.Text = "1"
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HNAME")
objNode.Text = GBmenu.Xorg
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HLOC")
objNode.Text = N_adres()
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HTINSTI")
objNode.Text = Trim(Xkod_pn2)
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HSTI")
objNode.Text = Trim(Xname_pn)
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HZKV")
objNode.Text = Str(RsStat.Fields.Item("period"))
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("HZY")
objNode.Text = Str(RsStat.Fields.Item("rik"))
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("R00G01I")
objNode.Text = Format(kolp%, "######") '' ??? â øòàòå"
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("R00G02I")
objNode.Text = Format(kols%, "######")   '' ??? ïî äîãîâîðàì"
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("R00G03I")
objNode.Text = "1"   '' ñòðàíèö?
objdeclb.appendChild objNode
Set objNode = objDoc.createElement("R00G04")
objNode.Text = "0.00"
objdeclb.appendChild objNode
Set currNode = objroot
 
For ii% = 1 To 10
    RsStat.MoveFirst
    Do While Not RsStat.EOF
       Select Case ii%
          Case 1
               Set objNode = objDoc.createElement("T1RXXXXG2")
               objNode.Text = Trim(RsStat.Fields.Item("tin"))
          Case 2
               Set objNode = objDoc.createElement("T1RXXXXG03A")
               objNode.Text = Format(RsStat.Fields.Item("s_nar"), "######.##")
          Case 3
               Set objNode = objDoc.createElement("T1RXXXXG03")
               objNode.Text = Format(RsStat.Fields.Item("s_dox"), "######.##")
          Case 4
               Set objNode = objDoc.createElement("T1RXXXXG04A")
               objNode.Text = Format(RsStat.Fields.Item("s_taxn"), "######.##")
          Case 5
               Set objNode = objDoc.createElement("T1RXXXXG04")
               objNode.Text = Format(RsStat.Fields.Item("s_taxp"), "######.##")
          Case 6
               Set objNode = objDoc.createElement("T1RXXXXG05")
               objNode.Text = Format(RsStat.Fields.Item("ozn_dox"), "000")
          Case 7
               Set objNode = objDoc.createElement("T1RXXXXG06D")
               objNode.Text = Format(RsStat.Fields.Item("d_priyn"), "DDMMYYYY")
          Case 8
               Set objNode = objDoc.createElement("T1RXXXXG07D")
               objNode.Text = Format(RsStat.Fields.Item("d_zviln"), "DDMMYYYY")
          Case 9
               Set objNode = objDoc.createElement("T1RXXXXG08")
               objNode.Text = Format(RsStat.Fields.Item("ozn_pilg"), "##")
          Case 10
               Set objNode = objDoc.createElement("T1RXXXXG08")
               objNode.Text = Format(RsStat.Fields.Item("oznaka"), "0")
       End Select
       Set objAttr = objDoc.createAttribute("ROWNUM")
       objAttr.nodeValue = CStr(RsStat.Fields.Item("np"))
       objNode.Attributes.setNamedItem objAttr
       objroot.appendChild objNode
       Set currNode = objNode
       RsStat.MoveNext
    Loop
Next ii%
Set objNode = objDoc.createElement("R01G03A")
objNode.Text = "sss 3a"
objroot.appendChild objNode
Set objNode = objDoc.createElement("R01G03")
objNode.Text = "sss 3"
Set currNode = objNode
Set objNode = objDoc.createElement("R01G04A")
objroot.appendChild objNode
Set objNode = objDoc.createElement("R01G04")
objNode.Text = "sss 4"
objroot.appendChild objNode
Set objNode = objDoc.createElement("R02G01I")
objNode.Text = Format(koll%, "######")
objroot.appendChild objNode
Set objNode = objDoc.createElement("R02G02I")
objNode.Text = Format(kolp%, "######")
objroot.appendChild objNode
Set objNode = objDoc.createElement("R02G03I")
objNode.Text = "1"  '' "ñòðàíèö?"
objroot.appendChild objNode
Set objNode = objDoc.createElement("HFILL")
objNode.Text = Format(Date, "DDMMYYYY")
objroot.appendChild objNode
 
'                <HKBOS>2288915700</HKBOS>
'                <HBOS>-i???????? -.-.&lt;/HBOS>
'                <HTELBOS xsi:nil="true">23620</HTELBOS>
'                <HKBUH>2372613523</HKBUH>
'                <HBUH>-qqi?????? +.-.</HBUH>
'                <HTELBUH xsi:nil="true">23616</HTELBUH>
 
 
 
''========================================================
RsStat.Close
CnStat.Close
Set CnStat = Nothing
     
xml_name.Text = GBmenu.Xtodisk + Trim(xml_name.Text) + ".xml"
objDoc.Save xml_name.Text
Unload Me
End Sub
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
15.05.2013, 16:03
Цитата Сообщение от nat_zz Посмотреть сообщение
А по сортировке входн файла dbf есть мудрые мысли?
- гм... Если Вы используете ADO, то в соотв. SQL-предложении укажите:

SQL
1
 SELECT тра-та-та FROM тра-та-та ORDER BY тра-та-та
0
 Аватар для nat_zz
0 / 0 / 1
Регистрация: 07.05.2013
Сообщений: 39
15.05.2013, 17:45  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- гм... Если Вы используете ADO, то в соотв. SQL-предложении укажите:

SQL
1
 SELECT тра-та-та FROM тра-та-та ORDER BY тра-та-та
Да я уже все готова использовать, только бы оно для dBase работало!!! ((((
Вы не пробовали открыть какой-нибудь dbf для чтения с сортировкой??
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
15.05.2013, 18:53
Пробовали. Вот пример.
Вместо tel можно поставить имя другого поля(или номер столбца)
Вложения
Тип файла: rar DBF__.rar (4.5 Кб, 34 просмотров)
0
 Аватар для nat_zz
0 / 0 / 1
Регистрация: 07.05.2013
Сообщений: 39
15.05.2013, 21:31  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Пробовали. Вот пример.
Вместо tel можно поставить имя другого поля(или номер столбца)
Пасибки!!! Буду смотреть!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2013, 21:31

Начинающей компании по разработки приложений IOS требуются люди
Наша команда пока состоит из двух людей(программист и дизайнер). Мы студенты 3 курса НИУ ВШЭ. И нам требуются люди. Пока мы работаем только...

Объясните начинающей программистке), что не так в моем коде
Написать программу, которая в цикле введет 5 значений и посчитает произведение чисел, которые делятся без остатка на 3 и не делятся на 5....

Улитка.Матрицу M (m,n) заполнить натуральными числами от 1 до m*n по спирали, начинающей в левом верх
Помогите пожалуйста решить задачу по BORLAND С++ Улитка.Матрицу M (m,n) заполнить натуральными числами от 1 до m*n по спирали, начинающей...

Вычислить количество слов, начинающей с одной буквы и заканчивающейся с той же буквой
Помогите составить прогу! дана строка слов разделенная с одним или несколькими пробелами. Вычеслить количество слов начинающей с одной...

Выгрузка в XML файл результатов запроса. Создание xml схемы с имеющегося xml файла
Доброго времени суток. Имеется необходимый для загрузки пример XML файла и из него необходимо построить XML схему для выгрузки данных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru