Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в xml / 25 сообщений из 27, страница 1 из 2
16.07.2013, 09:32
    #38332239
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Здравствуйте, экспортирую данные в xml
Не знаю как создать новый узел: <Caption> (в приложении)
И - <DocumentsList Code="0302" Name="Платежные поручения"> вместо узла <ПлатежныеПоручения>

Код: 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.
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.
Public Sub ExportXML(rs As Recordset, strHeading$, fileName$)
   
   ' Экспорт таблицы RecordSet в XML файл
   Dim xmlDoc As DOMDocument
   
   ' Cоздаем XMLDOM-объект
   Set xmlDoc = RecordsetToXMLDOM(rs, strHeading$)
 
   ' выводим его в виде отдельного файла
   xmlDoc.Save fileName$
End Sub
 
Public Function RecordsetToXMLDOM(rs As Recordset, strHeading$) As DOMDocument
   '
   ' Преобразование Recordset в DOMDocument
   '
   Dim fldField As Field
   Dim xmlDoc As DOMDocument
   Dim xmlFields As IXMLDOMElement
   Dim xmlField As IXMLDOMElement
   Dim i&
 
   ' создание экземпляра объекта
   Set xmlDoc = CreateObject("Microsoft.XMLDOM")    ' New DOMDocument
   ' записываем XML-константу объекта
   xmlDoc.LoadXML "<?xml version='1.0' encoding='windows-1251' ?>" + _
      Replace("<" + strHeading + "/>", " ", "_")
       ' '
      
   With rs
          ' создание нового узла1
          Set xmlFields1 = xmlDoc.DocumentElement.appendChild _
            (xmlDoc.createElement("ПлатежныеПоручения"))
 
   End With
   With rs
      ' Вывод содержимого полей таблицы
      .MoveFirst: i = 1
       Do Until .EOF
          ' создание нового узла3
          Set xmlFields = xmlFields1.appendChild _
            (xmlDoc.createElement("R"))
 
          For Each fldField In rs.Fields   ' запись полей записи
            If IsNull(fldField) = True Then
            Else
                Set xmlField = xmlFields.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                xmlField.Text = fldField.Value
            End If
          Next
         .MoveNext   ' к следующей записи набора
          i = i + 1
      Loop
   End With
   Set RecordsetToXMLDOM = xmlDoc   ' возвращаем созданный объект
End Function
Private Sub ЭкспортУРМ_Click()
Dim strConnectString$, strSQL$, strHeading$
    strHeading = "KristaExchange"
   
    Dim rs As Recordset
    Dim MyDB As Database
    Dim MySQL As Variant
    
    Set MyDB = CurrentDb
    MySQL = "SELECT * FROM Caption_OUT"
    Set rs = MyDB.OpenRecordset(MySQL)
   
   Call ExportXML(rs, strHeading$, "d:\xml\file1.xml")
   
End Sub
 
...
Рейтинг: 0 / 0
16.07.2013, 11:31
    #38332410
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Новый узел <Caption> создала, но вот узел <ПлатежныеПоручения> должен называться:
<DocumentsList Code="0302" Name="Платежные поручения">
Если я его так записываю, то выходит ошибка, не должны быть символы " "
Как записать название узла?
...
Рейтинг: 0 / 0
16.07.2013, 11:35
    #38332416
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreevaНовый узел <Caption> создала, но вот узел <ПлатежныеПоручения> должен называться:
<DocumentsList Code="0302" Name="Платежные поручения">Если я его так записываю, то выходит ошибка, не должны быть символы " "
Как записать название узла?
это НЕ название узла,
это нода (DocumentsList), дочерняя рутовой, и имеющая 2-а атрибута : Code и Name ,
со значениями 0302 и Платежные поручения - соответственно
...
Рейтинг: 0 / 0
16.07.2013, 11:43
    #38332433
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
А как они записываются?
Может есть ссылки?
...
Рейтинг: 0 / 0
16.07.2013, 12:12
    #38332502
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreevaА как они записываются?

Код: vbnet
1.
2.
3.
    Set xmlNode = xmlNode.appendChild(xmlDoc.createElement("DocumentsList"))
    xmlNode.setAttribute "Code", "0302"
    xmlNode.setAttribute "Name", "Платежные поручения"


авторМожет есть ссылки?
http://www.script-coding.com/XMLDOMscripts.html
...
Рейтинг: 0 / 0
16.07.2013, 13:30
    #38332681
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
qwerty112,

СПАСИБО
...
Рейтинг: 0 / 0
16.07.2013, 17:41
    #38333253
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Полдня "играла в игру" найди отличия. У меня формируются файлы .xml (см. во вложении). 121000.xml загружается в программу, а file1.xml нет. В чем их отличие, структура вроде одинаковая, можно ли их программно сравнить?
...
Рейтинг: 0 / 0
16.07.2013, 18:44
    #38333346
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreevaПолдня "играла в игру" найди отличия. У меня формируются файлы .xml (см. во вложении). 121000.xml загружается в программу, а file1.xml нет. В чем их отличие, структура вроде одинаковая, можно ли их программно сравнить?
этого нет в file1 и есть в 121000
SourceBudgetPromiseAgrNum

Код: 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.
39.
40.
41.
Sub test()
    Dim xmlDoc1 As MSXML2.DOMDocument
    Dim xmlDoc2 As MSXML2.DOMDocument
    Dim xmlNodeList1 As MSXML2.IXMLDOMNodeList
    Dim xmlNodeList2 As MSXML2.IXMLDOMNodeList
    Dim xmlNode1 As MSXML2.IXMLDOMNode
    Dim xmlNode2 As MSXML2.IXMLDOMNode
    Dim xml_path As String
    '
    Set xmlDoc1 = CreateObject("MSXML2.DOMDocument")
    xmlDoc1.async = False
    xmlDoc1.Load (CurrentProject.Path & "\121000.xml")
    
    Set xmlDoc2 = CreateObject("MSXML2.DOMDocument")
    xmlDoc2.async = False
    xmlDoc2.Load (CurrentProject.Path & "\file1.xml")
    
    xml_path = "/KristaExchange/DocumentsList/Caption/R/*"
    Set xmlNodeList1 = xmlDoc1.documentElement.selectNodes(xml_path)
    

    For Each xmlNode1 In xmlNodeList1
        xml_path = "/KristaExchange/DocumentsList/Caption/R/V[@Name=""" & xmlNode1.Attributes(0).nodeValue & """]"
        Set xmlNodeList2 = xmlDoc2.documentElement.selectNodes(xml_path)
         
        Debug.Print xmlNode1.Attributes(0).nodeValue, xmlNodeList2.length
    Next
    '
    Debug.Print "--------------------------------------"
    
    xml_path = "/KristaExchange/DocumentsList/Detail00/R/*"
    Set xmlNodeList1 = xmlDoc1.documentElement.selectNodes(xml_path)
    
    For Each xmlNode1 In xmlNodeList1
        xml_path = "/KristaExchange/DocumentsList/Detail00/R/V[@Name=""" & xmlNode1.Attributes(0).nodeValue & """]"
        Set xmlNodeList2 = xmlDoc2.documentElement.selectNodes(xml_path)
         
        Debug.Print xmlNode1.Attributes(0).nodeValue, xmlNodeList2.length
    Next
    
End Sub


Код: 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.
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.
test
ID             1 
DocumentNumber               1 
DocumentDate   1 
PayDate        1 
AcceptDate     1 
Summa          1 
PayTypeCls     1 
Note           1 
PayPriority    1 
OperationTypeCls             1 
BuhPaymentCls  1 
SourceFacialAccCls           1 
DestFacialAccCls             1 
SourceAccountName            1 
SourceBankDepNumber          1 
SourceServiceAccountName     1 
SourceOrgINN   1 
SourceOrgKPP   1 
SourceOrgName  1 
SourceOrgCity  1 
SourceBankName               1 
SourceBankBIK  1 
SourceBankCor  1 
SourceBankCity               1 
SourceFacialCode             1 
SourceServiceOrgINN          1 
SourceServiceOrgKPP          1 
SourceServiceOrgName         1 
SourceServiceOrgCity         1 
DestAccountName              1 
DestBankDepNumber            1 
DestServiceAccountName       1 
DestOrgINN     1 
DestOrgKPP     1 
DestOrgName    1 
DestOrgCity    1 
DestBankName   1 
DestBankBIK    1 
DestBankCor    1 
DestBankCity   1 
DestFacialCode               1 
DestServiceOrgINN            1 
DestServiceOrgKPP            1 
DestServiceOrgName           1 
DestServiceOrgCity           1 
OperationDirection           1 
BudgetRef      1 
ClsType        1 
--------------------------------------
ID             1 
Summa          1 
RecordIndex    1 
BuhOperationCLS              1 
ClsType        1 
SourcePROMISE  1 
SourceBudgetPROMISENum       1 
SourceBudgetPromiseAgrNote   1 
SourceBudgetPromiseAgrReestrNum            1 
SourceBudgetPromiseAgrSumma  1 
SourceBudgetPromiseAgrDate   1 
SourceBudgetPromiseAgrNum    0 
SourceBudgetPromiseSumma     1 
SourceKVR      1 
SourceKESR     1 
SourceKVSR     1 
SourceKCSR     1 
SourceKFSR     1 
SourceSubKesr  1 
SourceFactCls  1 
SourceMeansTypeCls           1 
SourceFINSOURCECLS           1 
SourceFinTypeCls             1 
SourceDOCTYPECLS             1 
SourceDirectionCls           1 
SourceIFS      1 
SourceKD       1 
SourceRegionCls              1 
SourceFundsSource            1 
BudgetRef      1 
SourceTransfertCls           1 

...
Рейтинг: 0 / 0
17.07.2013, 09:42
    #38333657
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
все проверила, поля одинаковые, но все равно не загружается. Может не правильно формирую файл .xml?
...
Рейтинг: 0 / 0
17.07.2013, 10:15
    #38333694
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
все, проблема решена. И в Caption, и в detail00 есть поле "budgetRef"-константа, данные в обоих случаях должны быть равны
qwerty112, спасибо за участие
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.02.2017, 16:23
    #39398323
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
здравствуйте, в продолжение темы
Мне необходимо экспортровать в xml в таком виде:
Код: xml
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.
<?xml version="1.0" encoding="UTF-8"?>
<UFormatAPK>
	<!-- Otchetnost APK. Configuratsiya:1.1.1.9, Model:4q02 -->
	<Org>
		<Code></Code>
		<Name>ИП Глава КФХ Бабин В.А.</Name>
		<FullName>ИП Глава КФХ Бабин В.А.</FullName>
		<SuperiorOrg>6317</SuperiorOrg>
		<DateOfRegistration>2004-12-24</DateOfRegistration>
		<INN>637700150240</INN>
		<KPP>0</KPP>
		<OKPO>14324069</OKPO>
		<OPF></OPF>
		<OKOPF>53</OKOPF>
		<OGRN>304637735900052</OGRN>
		<ActivityForm>1</ActivityForm>
		<OKVEDorOKONH>01.11.11,</OKVEDorOKONH>
		<OKATO>36230820000</OKATO>
		<GeneralManager>ФИО</GeneralManager>
		<MainAccountant></MainAccountant>
		<Executor>ФИО</Executor>
		<Address></Address>
		<ContactData></ContactData>
		<OKFS>16</OKFS>
		<OKER></OKER>
		<OKTMO>36630420</OKTMO>
		<OPForg>ipkh</OPForg>
		<SysNalog>usn</SysNalog>
		<Property1></Property1>
		<Property2></Property2>
		<Property3></Property3>
		<Property4></Property4>
		<Property5></Property5>
		<Form10FPK>Форма10фер</Form10FPK>
		<Account>
			<Report>
				<CodeOfReport>f10af</CodeOfReport>
				<Period>0_2016</Period>
				<parameter Code="парДатаОтчета"	Value=""/>
				<parameter Code="парДатаУтверждения"	Value=""/>
				<parameter Code="парДатаОтправки"	Value=""/>
				<parameter Code="парДатаПодписи"	Value="2017-01-25"/>
				<index String="065" Column="9" Value="48,639"/>
				<index String="065" Column="8" Value="113,491"/>
				<index String="065" Column="14" Value="0"/>
				<index String="065" Column="13" Value="-48,639"/>
				<index String="065" Column="12" Value="-113"/>
				<index String="065" Column="10" Value="0"/>
				<index String="065" Column="19" Value="113,491"/>

			</Report>
		</Account>
	</Org>

	</UFormatAPK>



Таблица в access:
во вложении
Подскажите, как мне это сделать
В экспорте xml чайник
...
Рейтинг: 0 / 0
03.02.2017, 16:24
    #39398325
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
поля обязательны лишь те, которые в моей таблице
...
Рейтинг: 0 / 0
04.02.2017, 02:23
    #39398512
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreeva,
если количество полей всё время одно и то же, то можно из приведенного фрагмента xml сделать шаблон (обычный текстовый файл), в котором указать вместо значений полей закладки то типу -
<Code>CodeValue</Code>
открыть Recordset с нужными данными, последовательно , перебирая записи, считывать содержимое шаблона (текстового файла) в текстовую переменную и с помощью Replace менять закладки на значения полей записи рекордсета , затем записывать в другой текстовый файл результат... вообщем, всё просто, можно обойтись и без знаний XML
...
Рейтинг: 0 / 0
04.02.2017, 06:52
    #39398519
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreeva, приложи таблицу, а не фото оной.
...
Рейтинг: 0 / 0
04.02.2017, 20:50
    #39398700
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Вот таблица,
...
Рейтинг: 0 / 0
04.02.2017, 23:39
    #39398737
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Код: xml
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.
Option Compare Database
Dim rs1, rs2

Public Sub ExportXML(rs As Recordset, strHeading$, fileName$)
   
   ' Экспорт таблицы RecordSet в XML файл
   Dim xmlDoc As DOMDocument
   
   ' Cоздаем XMLDOM-объект
   Set xmlDoc = RecordsetToXMLDOM(rs, strHeading$)
 
   ' выводим его в виде отдельного файла
   xmlDoc.Save fileName$
End Sub
 
Public Function RecordsetToXMLDOM(rs As Recordset, strHeading$) As DOMDocument
   '
   ' Преобразование Recordset в DOMDocument
   '
   Dim fldField As Field
   Dim xmlDoc As DOMDocument
   Dim xmlFields As IXMLDOMElement
   Dim xmlField As IXMLDOMElement
   Dim i&
 
   ' создание экземпляра объекта
   Set xmlDoc = CreateObject("Microsoft.XMLDOM")    ' New DOMDocument
   ' записываем XML-константу объекта
   xmlDoc.LoadXML "<?xml version='1.0' encoding='UTF-8'?>" + _
      Replace("<" + strHeading + "/>", " ", "_")

  With rs
       'Вывод содержимого полей таблицы
      .MoveFirst: i = 1
       Do Until .EOF
          ' создание нового узла3
       Set xmlFields1 = xmlDoc.DocumentElement.appendChild _
           (xmlDoc.createElement("ORG"))

          For Each fldField In rs.Fields   ' запись полей записи
            If IsNull(fldField) = True Then
            Else
                Set xmlField = xmlFields1.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                xmlField.Text = fldField.Value
            End If
          Next
         .MoveNext   ' к следующей записи набора
          i = i + 1
      Loop
   End With
            
        Set xmlFields2 = xmlFields1.appendChild _
            (xmlDoc.createElement("Account"))
Set xmlFields3 = xmlFields2.appendChild _
           (xmlDoc.createElement("Report"))
Set rs1 = CurrentDb.OpenRecordset("SELECT distinct CodeReport, Period FROM Caption_OUT1")
  With rs1
       'Вывод содержимого полей таблицы
      .MoveFirst: i = 1
       Do Until .EOF
          ' создание нового узла3

          For Each fldField In rs1.Fields   ' запись полей записи
            If IsNull(fldField) = True Then
            Else
                Set xmlField = xmlFields3.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                xmlField.Text = fldField.Value
            End If
          Next
         .MoveNext   ' к следующей записи набора
          i = i + 1
      Loop
   End With
Set rs2 = CurrentDb.OpenRecordset("SELECT Caption_OUT1.* FROM Caption_OUT1")
  With rs2
       'Вывод содержимого полей таблицы
      .MoveFirst: i = 1
       Do Until .EOF
          ' создание нового узла3

          For Each fldField In rs2.Fields   ' запись полей записи
            If IsNull(fldField) = True Then
            Else
                Set xmlField = xmlFields3.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                xmlField.Text = fldField.Value
            End If
          Next
         .MoveNext   ' к следующей записи набора
          i = i + 1
      Loop
   End With
   Set RecordsetToXMLDOM = xmlDoc   ' возвращаем созданный объект
End Function
Private Sub выгрузить_Click()
Dim strConnectString$, strSQL$, strHeading$
    strHeading = "UFormatAPK"

    Dim rs As Recordset
    Dim rs1 As Recordset
    Dim MySQL As Variant
    Dim MySQL1 As Variant
    Set MyDB = CurrentDb
    MySQL = "SELECT * FROM Caption_OUT"
    MySQL1 = "SELECT Caption_OUT1.* FROM Caption_OUT1"
    Set rs = MyDB.OpenRecordset(MySQL)
    Set rs1 = MyDB.OpenRecordset(MySQL1)
    
   Call ExportXML(rs, strHeading$, "d:\xml\file1.xml")

End Sub


Сделала так, но пришлось делить таблицу. хотелось бы по-проще.
1. Не могу сделать эту часть:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<parameter Code="парДатаПодписи"	Value="2017-01-25"/>
				<index String="065" Column="9" Value="48,639"/>
				<index String="065" Column="8" Value="113,491"/>
				<index String="065" Column="14" Value="0"/>
				<index String="065" Column="13" Value="-48,639"/>
				<index String="065" Column="12" Value="-113"/>
				<index String="065" Column="10" Value="0"/>
				<index String="065" Column="19" Value="113,491"/>


2. И вот эту:
Код: xml
1.
	<!-- Otchetnost APK. Configuratsiya:1.1.1.9, Model:4q02 -->


Как это прописать?
...
Рейтинг: 0 / 0
05.02.2017, 11:46
    #39398796
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreeva,
вот 2097140 нечто похожее на то , что я предлагал :)
...
Рейтинг: 0 / 0
05.02.2017, 11:55
    #39398799
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreeva,
а вот 14734926 пример Уважаемого qwerty112 (храни его Господь в этой войне на Украине) с экспортом атрибутов
...
Рейтинг: 0 / 0
05.02.2017, 12:19
    #39398812
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Не раз берусь именно с объединениеМ в строку
...
Рейтинг: 0 / 0
05.02.2017, 16:58
    #39398884
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
В предыдущем сообщении не правильно написала, я этим никак не разберусь. Если не трудно, помогите с написанием parameter Code="парДатаПодписи" Value="2017-01-25"/>
<index String="065" Column="9" Value="48,639"/>
<index String="065" Column="8" Value="113,491"/>
<index String="065" Column="14" Value="0"/>
<index String="065" Column="13" Value="-48,639"/>
<index String="065" Column="12" Value="-113"/>
<index String="065" Column="10" Value="0"/>
<index String="065" Column="19" Value="113,491"/>
...
Рейтинг: 0 / 0
05.02.2017, 21:11
    #39398960
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Мне предложили вариант
Код: xml
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.
Public Sub CreateXML()
Dim ff As Integer
Dim rs As DAO.Recordset

ff = FreeFile 'дескриптор файла
Set rs = CurrentDb.OpenRecordset("select * from tab1") 'твой запрос к исходной таблице
Open "G:\testXML.xml" For Output As #ff 'открываем файло
Print #ff, "<Сеанс>" 'пишем заголовок

While Not rs.EOF
Print #ff, "<Субъект Тип=" & Chr(34) & "Предп_орг" & Chr(34) & " Код = " & rs![Names] & ">"
'chr(34)- это кавычки
'бла-бла в том-же духе
Print #ff, "<ГруппыОбъекта>" 'то, что тебе надо добавить в XML-файл
Print #ff, "<ГруппаОбъекта>"
'бла-бла в том-же духе
Print #ff, "</Субъект>"
rs.MoveNext
Wend

Print #ff, "</Сеанс>"

Close #ff
rs.Close
Set rs = Nothing

End Sub


Как это мне применить, в xml ничего не пойму
...
Рейтинг: 0 / 0
05.02.2017, 22:32
    #39398976
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Кто-нибудь отзовитесь. Очень нужно
Застряла здесь:
Код: xml
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.
Public Function RecordsetToXMLDOM(rs As Recordset, strHeading$) As DOMDocument
   '
   ' &#207;&#240;&#229;&#238;&#225;&#240;&#224;&#231;&#238;&#226;&#224;&#237;&#232;&#229; Recordset &#226; DOMDocument
   '
   Dim fldField As Field
   Dim xmlDoc As DOMDocument
   Dim xmlFields As IXMLDOMElement
   Dim xmlField As IXMLDOMElement
   Dim i&

   ' &#241;&#238;&#231;&#228;&#224;&#237;&#232;&#229; &#253;&#234;&#231;&#229;&#236;&#239;&#235;&#255;&#240;&#224; &#238;&#225;&#250;&#229;&#234;&#242;&#224;
   Set xmlDoc = CreateObject("Microsoft.XMLDOM")    ' New DOMDocument
   ' &#231;&#224;&#239;&#232;&#241;&#251;&#226;&#224;&#229;&#236; XML-&#234;&#238;&#237;&#241;&#242;&#224;&#237;&#242;&#243; &#238;&#225;&#250;&#229;&#234;&#242;&#224;

   xmlDoc.LoadXML "<?xml version='1.0' encoding='UTF-8'?>" + _
      Replace("<" + strHeading + "/>", " ", "_")
  With rs
       '&#194;&#251;&#226;&#238;&#228; &#241;&#238;&#228;&#229;&#240;&#230;&#232;&#236;&#238;&#227;&#238; &#239;&#238;&#235;&#229;&#233; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
      .MoveFirst: i = 1
       Do Until .EOF
          ' &#241;&#238;&#231;&#228;&#224;&#237;&#232;&#229; &#237;&#238;&#226;&#238;&#227;&#238; &#243;&#231;&#235;&#224;3
       Set xmlFields1 = xmlDoc.DocumentElement.appendChild _
           (xmlDoc.createElement("ORG"))

          For Each fldField In rs.Fields   ' &#231;&#224;&#239;&#232;&#241;&#252; &#239;&#238;&#235;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232;
            If IsNull(fldField) = True Then
            Else
                Set xmlField = xmlFields1.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                xmlField.Text = fldField.Value
            End If
          Next
         .MoveNext   ' &#234; &#241;&#235;&#229;&#228;&#243;&#254;&#249;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232; &#237;&#224;&#225;&#238;&#240;&#224;
          i = i + 1
      Loop
   End With
            
        Set xmlFields2 = xmlFields1.appendChild _
            (xmlDoc.createElement("Account"))
Set xmlFields3 = xmlFields2.appendChild _
           (xmlDoc.createElement("Report"))
Set rs1 = CurrentDb.OpenRecordset("SELECT distinct CodeReport, Period, Code FROM Caption_OUT1")
  With rs1
       '&#194;&#251;&#226;&#238;&#228; &#241;&#238;&#228;&#229;&#240;&#230;&#232;&#236;&#238;&#227;&#238; &#239;&#238;&#235;&#229;&#233; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
      .MoveFirst: i = 1
       Do Until .EOF
          ' &#241;&#238;&#231;&#228;&#224;&#237;&#232;&#229; &#237;&#238;&#226;&#238;&#227;&#238; &#243;&#231;&#235;&#224;3

          For Each fldField In rs1.Fields   ' &#231;&#224;&#239;&#232;&#241;&#252; &#239;&#238;&#235;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232;
            If IsNull(fldField) = True Then
            Else
                Set xmlField = xmlFields3.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                xmlField.Text = fldField.Value
            End If
          Next
         .MoveNext   ' &#234; &#241;&#235;&#229;&#228;&#243;&#254;&#249;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232; &#237;&#224;&#225;&#238;&#240;&#224;
          i = i + 1
      Loop
   End With
Set rs2 = CurrentDb.OpenRecordset("SELECT Caption_OUT1.* FROM Caption_OUT1")
'  With rs2
'       '&#194;&#251;&#226;&#238;&#228; &#241;&#238;&#228;&#229;&#240;&#230;&#232;&#236;&#238;&#227;&#238; &#239;&#238;&#235;&#229;&#233; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
'      .MoveFirst: i = 1
'       Do Until .EOF
'          ' &#241;&#238;&#231;&#228;&#224;&#237;&#232;&#229; &#237;&#238;&#226;&#238;&#227;&#238; &#243;&#231;&#235;&#224;3
'
'          For Each fldField In rs2.Fields   ' &#231;&#224;&#239;&#232;&#241;&#252; &#239;&#238;&#235;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232;
'            If IsNull(fldField) = True Then
'            Else
''                Set xmlField = xmlFields3.appendChild( _
''                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
'                'xmlField.Text = fldField.Value
'                xmlFields3.setAttribute "&#202;&#238;&#228;&#209;&#242;&#240;&#238;&#234;&#232;", rs2.Fields("FB8")
'
'                If rs.EOF Then Exit Do
'                    rs.MoveNext
'                    Current_client = rs.Fields("&#202;&#238;&#228;&#209;&#242;&#240;&#238;&#234;&#232;")
''                  Loop
'
'                  If rs.EOF Then Exit Do
'                  rs.MoveNext
'
'                End If
'          Next
'         .MoveNext   ' &#234; &#241;&#235;&#229;&#228;&#243;&#254;&#249;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232; &#237;&#224;&#225;&#238;&#240;&#224;
'          i = i + 1
'      Loop
'   End With
   Set RecordsetToXMLDOM = xmlDoc   ' &#226;&#238;&#231;&#226;&#240;&#224;&#249;&#224;&#229;&#236; &#241;&#238;&#231;&#228;&#224;&#237;&#237;&#251;&#233; &#238;&#225;&#250;&#229;&#234;&#242;
    rs1.Close
    rs2.Close
    rs.Close
End Function

Private Sub &#226;&#251;&#227;&#240;&#243;&#231;&#232;&#242;&#252;_Click()
Dim strConnectString$, strSQL$, strHeading$
    strHeading = "UFormatAPK"

    Dim rs As Recordset
    Dim rs1 As Recordset
    Dim MySQL As Variant
    Dim MySQL1 As Variant
    Set MyDB = CurrentDb
    MySQL = "SELECT * FROM Caption_OUT"
    MySQL1 = "SELECT Caption_OUT1.* FROM Caption_OUT1"
    Set rs = MyDB.OpenRecordset(MySQL)
    Set rs1 = MyDB.OpenRecordset(MySQL1)

   Call ExportXML(rs, strHeading$, "d:\xml\file1.xml")
'Call Module1.CreateXML
End Sub



Получаю:
Код: xml
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.
<?xml version="1.0" encoding="UTF-8"?>

-<UFormatAPK>


-<ORG>

<FullName>Иванов ВВ</FullName>

<SuperiorOrg>6317</SuperiorOrg>

<INN>637700046961</INN>

<ActivityForm>1</ActivityForm>


-<Account>


-<Report>

<CodeReport>f10af</CodeReport>

<Period>0_2016</Period>

<Code>17.02.2016</Code>

</Report>

</Account>

</ORG>

</UFormatAPK>
...
Рейтинг: 0 / 0
05.02.2017, 22:49
    #39398977
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Помогите сделать вот эту часть:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<Account>
			<Report>
				<CodeOfReport>f10af</CodeOfReport>
				<Period>0_2016</Period>
				<parameter Code="парДатаОтчета"	Value=""/>
				<parameter Code="парДатаУтверждения"	Value=""/>
				<parameter Code="парДатаОтправки"	Value=""/>
				<parameter Code="парДатаПодписи"	Value="2017-01-25"/>
				<index String="065" Column="9" Value="48,639"/>
				<index String="065" Column="8" Value="113,491"/>
				<index String="065" Column="14" Value="0"/>
				<index String="065" Column="13" Value="-48,639"/>
				<index String="065" Column="12" Value="-113"/>
				<index String="065" Column="10" Value="0"/>
				<index String="065" Column="19" Value="113,491"/>

			</Report>
		</Account>
...
Рейтинг: 0 / 0
06.02.2017, 04:02
    #39399000
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
tuandreeva, есть метод несколько меньший по трудозатратам и более производительный - xslt-преобразования.
Я смотрел вчера твой пример и набросал файл для преобразования (к сожалению на другой машине всё).
Но не понял следующих вещей.
1. Две записи в таблице - 2 файла или всё в одном файле. Вроде как понял, но поясни по возможности
2. Где вот это добро? -> 20182298

К сожалению, познания в xslt у меня небольшие...
...
Рейтинг: 0 / 0
06.02.2017, 08:34
    #39399020
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт в xml
Панург,

index String="065" это код строки
Column="9" (8-10) это название поля в таблице Caption_OUT1
Приложу базу Все данные в таблице Caption_OUT, это я уже наделал таблиц для иерархичного вывода данных
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в xml / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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