powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Несколько rowset'ов в один XML
13 сообщений из 13, страница 1 из 1
Несколько rowset'ов в один XML
    #38265861
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

Имею процедуру в экселе
Код: 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.
Sub getData()
      
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim query As String, strCon As String
    Set con = New ADODB.Connection
    Set rs = New ADODB.Recordset
      
      
    strCon = "Provider=SQLOLEDB; " & _
            "Data Source=localhost; " & _
            "Initial Catalog=mdbase;" & _
            "User ID=test; Password=test; Trusted_Connection=yes"
    con.Open (strCon)
    With rs
        .ActiveConnection = con
        .Open "select top 3 name_ru from country; select top 3 name from city"
        Sheets("data").Range("A1").CopyFromRecordset rs
        Kill ActiveWorkbook.Path & "\\" & "test.xml"
        rs.Save ActiveWorkbook.Path & "\\" & "test.xml", adPersistXML 
    End With
    
    rs.Close
    Set rs = Nothing
    Set con = Nothing

End Sub



Содержимое XML файла

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
	xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
	xmlns:rs='urn:schemas-microsoft-com:rowset'
	xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
	<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>
		<s:AttributeType name='name_ru' rs:number='1' rs:writeunknown='true'>
			<s:datatype dt:type='string' dt:maxLength='128' rs:maybenull='false'/>
		</s:AttributeType>
		<s:extends type='rs:rowbase'/>
	</s:ElementType>
</s:Schema>
<rs:data>
	<z:row name_ru='Австрия'/>
	<z:row name_ru='Азербайджан'/>
	<z:row name_ru='Армения'/>
</rs:data>
</xml>

Но запрос возвращает два ровсета. Как мне в один XML файл записать оба и можно ли это ?
MSSQL 2012. Excel 2010

Заранее всем спасибо
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38265889
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaskabww,

какой это язык?
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38265897
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,
VBA
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38265900
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Технически можно, но на что такой xml годен? С помощью xsl разве что в какой-нибудь html превратить.
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38265942
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут дело в том, что мне надо генерить такой иксмл сервером приложений. потом из экселя по HTTP иду на сервер приложений, тяну XML и рисую отчет. хотелось бы сразу несколько рекордсетов получать в одном XML, а не по одному. вот интересуюсь, есть ли такой стандартный XML. типа как датасет
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38265967
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Отчет, грубо говоря, рисую так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Function RecordsetFromXMLString(ByRef sXML As String) As Recordset

    Dim oStream As ADODB.Stream
    Set oStream = New ADODB.Stream
    oStream.Open
    oStream.WriteText sXML   
    oStream.Position = 0    
    Dim oRecordset As ADODB.Recordset
    Set oRecordset = New ADODB.Recordset
    oRecordset.Open oStream   

    oStream.Close
    Set oStream = Nothing
    Set RecordsetFromXMLString = oRecordset  'Return the recordset

    ' Вот тут хорошо бы перебрать все рекордсеты через NextRecordset

    Sheets("data").Range("A1").CopyFromRecordset oRecordset
    Set oRecordset = Nothing
End Function
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38265994
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно. Собираешь на сервере все рекордсеты в один документ вида
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<root>
    <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'...>
    </xml>
    <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'...>
    </xml>
    <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'...>
    </xml>
</root>

А на клиенте разбираешь обратно по рекордсетам.
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38266046
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, так просто не выйдет, начнется свистопляска с одноименным неймспейсами.
Чуть сложнее:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<root>
    <![CDATA[
        <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'...></xml>
    ]]>
    <![CDATA[
        <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'...></xml>
    ]]>
    <![CDATA[
        <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'...></xml>
    ]]>
</root>
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38266058
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
спасибо
Но оно откроется стандартно через, как у меня написано
Код: vbnet
1.
   oRecordset.Open oStream



?
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38266101
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вот так не хочет работать - не удается создать объект recordset. Неполный или недопустимый источник XML

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<root>
<![CDATA[
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
	xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
	xmlns:rs='urn:schemas-microsoft-com:rowset'
	xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
	<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>
		<s:AttributeType name='name_ru' rs:number='1' rs:writeunknown='true'>
			<s:datatype dt:type='string' dt:maxLength='128' rs:maybenull='false'/>
		</s:AttributeType>
		<s:extends type='rs:rowbase'/>
	</s:ElementType>
</s:Schema>
<rs:data>
	<z:row name_ru='Австрия'/>
	<z:row name_ru='Азербайджан'/>
	<z:row name_ru='Армения'/>
</rs:data>
</xml>
]]>
</root>
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38266117
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сказал же "разобрать обратно", а "пихать целиком".
Соображать же надо.
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38266142
vaskabww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

А ! понял, спасибо
...
Рейтинг: 0 / 0
Несколько rowset'ов в один XML
    #38266243
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и причем тут, вообще, .NET
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Несколько rowset'ов в один XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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