Невозможно записать текстовые данные в XML-файл из набора записей - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь запустить SQL-запрос из VBScript, получить данные и записать их в файл XML. У меня есть таблица, которая содержит 4 столбца, который содержит текстовые данные. Я выполняю этот запрос индивидуально:

SELECT CONVERT(xml, column_name) 
FROM table 
WHERE <condition>

Когда я запускаю его отдельно в базе данных, он не выдает ошибку и возвращает значение в правильном формате XML.

Теперь, когда я запускаю его из VBScript, я получаю эту ошибку:

C: \ Users \ nipaul \ Desktop \ Новая папка \ ExportRuleSQLQuery.vbs (37, 2)
Ошибка выполнения Microsoft VBScript: Несоответствие типов: 'obj2.WriteLine'

Кажется, это строка, где я пытаюсь записать набор записей в файл.

Вот код:

Dim Arg, DS_var, UID_var, PWD_var, IC_var, FriendlyRuleName
Dim rstResult
Set Arg = WScript.Arguments

DS_var  = Arg(0)
UID_var = Arg(1)
PWD_var = Arg(2)
IC_var  = Arg(3)
FriendlyRuleName = Arg(4)

Set obj  = CreateObject("ADODB.Connection")
Set obj1 = CreateObject("ADODB.RecordSet")
Set obj2 = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Users\nipaul\Desktop\filename.xml", 2, True)

Dim dbquery
Dbquery = "SELECT CONVERT(xml, column) FROM table WHERE FriendlyName='" & FriendlyRuleName & "'"

obj.Open "Provider=SQLNCLI;Data Source=" & DS_var & ";UserId=" & UID_var & ";Password=" & PWD_var & ";Initial Catalog= " & IC_var & ";Trusted_Connection=yes;DataTypeCompatibility=80"

obj1.Open dbquery, obj

'While obj1.EOF = False
'    obj2.Writeline obj1
'    obj1.MoveNext
'Wend
'obj1.Save "C:\Users\nipaul\Desktop\Rule.xml", adPersistXML
Do Until obj1.EOF
    rstResult = obj1
    obj2.WriteLine rstResult
    rstUsers.MoveNext
Loop
obj2.Close
Set obj2 = Nothing
obj1.Close
obj.Close
Set obj1 = Nothing
Set obj  = Nothing
Set Arg  = Nothing

Я хочу вывод запроса в этом XML-файле.

<note> 
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

1 Ответ

0 голосов
/ 29 марта 2019

Я бы попытался явно указать, какое поле вы пишете в файл

rstResult = obj1.Fields(0).Value ' or rstResult = obj1(0) might work because of default properties

Возможно, также стоит удалить преобразование в XML, потому что в конечном итоге все, что вы делаете, - это записываете текст в текстовый файл.

...