Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Select For XML и ADO (Excel VBA)  [new]
energy75
Member

Откуда:
Сообщений: 433
Добрый день уважаемые.
Сразу попрошу не отправлять ни в соседние ветки по офису, ни еще дальше

Возникла необходимость через Эксель погонять данные. При этом формат XML полностью удовлетворяет последующие цели задачи.

Вчера весь день убил на то что:
Dim cn As New ADODB.Connection ' в референсах АДО 2.8
cn.ConnectionString = "Data Source=COSMOS;Initial Catalog=ALLRIGHT;Persist Security Info=True;User ID=все нормально;Password=и пароль тоже правильный;provider=SQLOLEDB;DataTypeCompatibility=80;"
cn.Open
Debug.Print cn.Execute("Select top 3   BranchID, ContractID, Type, Date, Summa, PayRecv  from Pays order by Date desc for xml Raw").Fields(0)
cn.close

результат данного запроса был совершенно отличен от того, что я получал в студии.
Вот он:
+
"<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='c0' rs:name='XML_F52E2B61-18A1-11d1-B105-00805F49916B'
			 rs:number='1' rs:nullable='true'>
			<s:datatype dt:type='bin.hex' dt:maxLength='2147483647'
			 rs:long='true'/>
		</s:AttributeType>
		<s:extends type='rs:rowbase'/>
	</s:ElementType>
</s:Schema>
<rs:data>
	<z:row c0='44084200720061006e006300680049004400440a
		43006f006e00740072006100630074004900440044045400790070
		006500440444006100740065004405530075006d006d0061004407
		5000610079005200650063007600440372006f0077000107020142
		04000000020242fa290000020342000000000204522da400000000
		000002054b12021101904106000000000000000000000000004301
		0702014204000000020242f1330000020342000000000204522da4
		00000000000002054b120211016018230000000000000000000000
		000043010702014204000000020242233400000203420000000002
		04522da400000000000002054b1202110140ef0700000000000000
		00000000000043'/>
</rs:data>
</xml>"

При этом, чтобы получить отображаемый результат еще и пришлось поколдовать с сохранением результата запроса в поток и только потом уже увидеть данные. Простое отображение Debug.Print вообще отображало черти-что со множеством знаков вопроса. Убил день на поиск возможностей сохранять/преобразовывать в различные форматы, но результата не получил.

Как всегда, задачу решил по принципу "Если гора не идет к Магомету..."
Решение очень простое:
cn.Execute (("declare @inp nvarchar(max) set @inp = (Select top 30   BranchID, ContractID, Type, Date, Summa, PayRecv  from Pays order by Date desc for xml Raw) select @inp").Fields(0)


Результат соответствовал ожидаемому:
+
<row BranchID="4" ContractID="10425" Type="0" Date="2015-01-27T00:00:00" Summa="11000.00"/><row BranchID="4" ContractID="12748" Type="0" Date="2015-01-27T00:00:00" Summa="5000.00"/><row BranchID="4" ContractID="13315" Type="0" Date="2015-01-27T00:00:00" Summa="20000.00"/><row BranchID="4" ContractID="13364" Type="0" Date="2015-01-27T00:00:00" Summa="4000.00"/><row BranchID="4" ContractID="13236" Type="0" Date="2015-01-27T00:00:00" Summa="1000.00"/><row BranchID="4" ContractID="11821" Type="0" Date="2015-01-27T00:00:00" Summa="1200.00"/><row BranchID="4" ContractID="13355" Type="0" Date="2015-01-27T00:00:00" Summa="900.00"/><row BranchID="4" ContractID="13892" Type="0" Date="2015-01-27T00:00:00" Summa="2100.00"/><row BranchID="4" ContractID="13243" Type="0" Date="2015-01-27T00:00:00" Summa="500.00"/><row BranchID="4" ContractID="13292" Type="0" Date="2015-01-27T00:00:00" Summa="6000.00"/><row BranchID="4" ContractID="13399" Type="0" Date="2015-01-27T00:00:00" Summa="4000.00"/><row BranchID="4" ContractID="13850" Type="0" Date="2015-01-27T00:00:00" Summa="1700.00"/><row BranchID="4" ContractID="10543" Type="0" Date="2015-01-27T00:00:00" Summa="2700.00"/><row BranchID="4" ContractID="9636" Type="0" Date="2015-01-27T00:00:00" Summa="4100.00"/><row BranchID="4" ContractID="12552" Type="0" Date="2015-01-27T00:00:00" Summa="2400.00"/><row BranchID="4" ContractID="13716" Type="0" Date="2015-01-27T00:00:00" Summa="8000.00"/><row BranchID="4" ContractID="15656" Type="0" Date="2015-01-27T00:00:00" Summa="700.00"/><row BranchID="4" ContractID="13257" Type="0" Date="2015-01-27T00:00:00" Summa="2500.00"/><row BranchID="4" ContractID="13987" Type="0" Date="2015-01-27T00:00:00" Summa="307.26"/><row BranchID="4" ContractID="12034" Type="0" Date="2015-01-27T00:00:00" Summa="15000.00"/><row BranchID="4" ContractID="9780" Type="0" Date="2015-01-27T00:00:00" Summa="5000.00"/><row BranchID="2" ContractID="2002" Type="0" Date="2015-01-27T00:00:00" Summa="14200.00" PayRecv="173"/><row BranchID="4" ContractID="13346" Type="0" Date="2015-01-27T00:00:00" Summa="350.00"/><row BranchID="4" ContractID="13532" Type="0" Date="2015-01-27T00:00:00" Summa="6000.00"/><row BranchID="4" ContractID="13270" Type="0" Date="2015-01-27T00:00:00" Summa="10000.00"/><row BranchID="4" ContractID="12073" Type="0" Date="2015-01-27T00:00:00" Summa="25000.00"/><row BranchID="4" ContractID="13990" Type="0" Date="2015-01-27T00:00:00" Summa="6700.00"/><row BranchID="4" ContractID="10282" Type="0" Date="2015-01-27T00:00:00" Summa="18000.00"/><row BranchID="4" ContractID="13886" Type="0" Date="2015-01-27T00:00:00" Summa="36000.00"/><row BranchID="4" ContractID="11570" Type="0" Date="2015-01-27T00:00:00" Summa="18000.00"/>


Проблема-то решена, а вот осадочек остался...
Объясните люди добрые, что необходимо было сделать, что бы работал первый вариант?
28 янв 15, 09:24    [17180623]     Ответить | Цитировать Сообщить модератору
 Re: Select For XML и ADO (Excel VBA)  [new]
Glory
Member

Откуда:
Сообщений: 104760
energy75
результат данного запроса был совершенно отличен от того, что я получал в студии.

А сервер тут причем ?
28 янв 15, 09:25    [17180631]     Ответить | Цитировать Сообщить модератору
 Re: Select For XML и ADO (Excel VBA)  [new]
energy75
Member

Откуда:
Сообщений: 433
Glory,
Ну так подскажите что при чём?
28 янв 15, 09:27    [17180642]     Ответить | Цитировать Сообщить модератору
 Re: Select For XML и ADO (Excel VBA)  [new]
Glory
Member

Откуда:
Сообщений: 104760
energy75
Ну так подскажите что при чём?

Если одно клиентское приложение показывает один результат запроса, а другое приложение - другой результат того же запроса, то наверное дело в приложении
28 янв 15, 09:30    [17180660]     Ответить | Цитировать Сообщить модератору
 Re: Select For XML и ADO (Excel VBA)  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
разница в том что ADODB.Connection скорее всего использует другие провайдері для работі с xml
28 янв 15, 11:39    [17181582]     Ответить | Цитировать Сообщить модератору
 Re: Select For XML и ADO (Excel VBA)  [new]
MSDASQL
Guest
Maxx
разница в том что ADODB.Connection скорее всего использует другие провайдері для работі с xml
+1
ТС смотри здесь https://www.sql.ru/faq/faq_topic.aspx?fid=131 последний пример
28 янв 15, 12:13    [17181989]     Ответить | Цитировать Сообщить модератору
 Re: Select For XML и ADO (Excel VBA)  [new]
energy75
Member

Откуда:
Сообщений: 433
MSDASQL,

Спасибо!
29 янв 15, 10:25    [17187701]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить