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

Откуда: Moscow
Сообщений: 106
Сгенерировал XML пакет. Хочу проделать обратную процедуру, т.е. вставить данные в базу. Через SQL все работает нормально. Но когда пытаюсь осуществить эту же процедуру через VBA, то ничего не получается. Происходит что то с пакетом.
Пробовал и через потоки и через хранимую процедуру, результат один и тот же XML parser: Invalid top level of the document.

В чем проблема ????
18 авг 03, 23:31    [304992]     Ответить | Цитировать Сообщить модератору
 Re: XML parser error  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Вы бы код что ли привели.
18 авг 03, 23:59    [304997]     Ответить | Цитировать Сообщить модератору
 Re: XML parser error  [new]
Alviga
Member

Откуда: Moscow
Сообщений: 106
Это работает

DECLARE @iTree INTEGER
DECLARE @xmlOrder VARCHAR(2000)

SET @xmlOrder = '
<Invoice xmlns:sql="urn:schemas-microsoft-com:xml-sql"><orders OrderID="10248" CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00" RequiredDate="1996-08-01T00:00:00" ShippedDate="1996-07-16T00:00:00" ShipVia="3" Freight="32.38" ShipName="Vins et alcools Chevalier" ShipAddress="59 rue de l'Abbaye" ShipCity="Reims" ShipPostalCode="51100" ShipCountry="France"/></Invoice>
'
EXEC sp_xml_preparedocument @iTree OUTPUT, @xmlOrder

**************************************************

Это нет :-(

Sub main()

Const adExecuteStream = 1024
Const adWriteChar = 0
Dim conDB As New ADODB.Connection
Dim cmdXML As New ADODB.Command


' Connect to the database using Integrated Security.
With conDB
.Provider = "SQLOLEDB"
.ConnectionString = "DATA SOURCE=alviga\alviga; INITIAL CATALOG=Northwind; INTEGRATED SECURITY=SSPI;"
.Open
End With
'Set cmdXML = CreateObject("ADODB.Command")

'Assign the Connection object to the Command object.
Set cmdXML.ActiveConnection = conDB

'Create Stream object for inbound query.
Dim stmXMLin As New ADODB.Stream
'Set stmXMLin = CreateObject("ADODB.Stream")

'Create the query template.
Dim strQry 'AS String
strQry = "<Invoice xmlns:sql='urn:schemas-microsoft-com:xml-sql'>"
strQry = strQry & "<sql:query>"
strQry = strQry & "SELECT top 1 * from orders FOR XML AUTO "
strQry = strQry & "</sql:query></Invoice>"

'Write query to inbound stream.
stmXMLin.Open
stmXMLin.WriteText strQry, adWriteChar

'Set Stream object position to the beginning of the stream.
stmXMLin.Position = 0

'Assign Stream object to Command object.
Set cmdXML.CommandStream = stmXMLin

'Create stream for outbound result.
Dim strmXMLout As New ADODB.Stream

'Assign the result stream.
strmXMLout.Open
cmdXML.Properties("Output Stream") = strmXMLout


'Execute the query
cmdXML.Execute , , adExecuteStream

strmXMLout.SaveToFile "c:\new.xml", adSaveCreateOverWrite

Dim str1 As String
Open "c:\new.xml" For Binary Access Read As #1
While Not EOF(1)
Seek #1, 4
Input #1, str1
Wend
Close #1

stmXMLin.Close

'Dim SQLQuery As String

SQLQuery = "Declare @iTree AS Integer" + Chr(10) + Chr(13)
SQLQuery = SQLQuery & "Declare @xmlOrder AS Varchar(2000)" + Chr(10) + Chr'(13)
SQLQuery = SQLQuery & "SET @xmlOrder = '" & str1 & "'" + Chr(10) + Chr(13)
SQLQuery = SQLQuery & "EXEC sp_xml_preparedocument @iTree OUTPUT, @xmlOrder" + Chr(10) + Chr(13)

stmXMLin.Open
stmXMLin.WriteText SQLQuery, adWriteChar

'Set Stream object position to the beginning of the stream.
stmXMLin.Position = 0

'Assign Stream object to Command object.
Set cmdXML.CommandStream = stmXMLin

cmdXML.Execute , , adExecuteStream

End Sub
19 авг 03, 06:19    [305038]     Ответить | Цитировать Сообщить модератору
 Re: XML parser error  [new]
Alviga
Member

Откуда: Moscow
Сообщений: 106
???
19 авг 03, 08:47    [305101]     Ответить | Цитировать Сообщить модератору
 Re: XML parser error  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Советую проверить содержимое переменной SQLQuery в отладчике перед строкой stmXMLin.Open
19 авг 03, 11:55    [305454]     Ответить | Цитировать Сообщить модератору
 Re: XML parser error  [new]
Alviga
Member

Откуда: Moscow
Сообщений: 106
Спасибо всем уже разобрался :-)
19 авг 03, 12:05    [305471]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить