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

Откуда:
Сообщений: 3295
При добавлении в конец селекта указанного в сабже параметра почему-то выходные данные в QA обрезаются по границе nvarchar(255). И даже если выставляешь режим вывода "To File...", то все равно получается какая-то каша, которую ни один браузер нормально не воспринимает. Это глюк QA или фича сиквела?..
6 сен 04, 15:54    [937344]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Это чтобы читать мона было только через провайдера а не через QA (он склеивает).
6 сен 04, 16:05    [937383]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3295
Хорошо, накидал по-пырому на VB6 тестовый проект, который вытягивает эти данные в обычный рекордсет. Возвращается одно поле, тип у него (с точки зрения ADO) - LongVarBinary. Смотрю содержимое - типичный юникод, только вот символы больше-меньше-слэш как-то по-хитрому закодированы, по 2 ненулевых байта на каждый. В результате чего:
При вытягивании в строку вся тэговая разметка летит к чертям, превращаясь в знаки вопроса;
При вытягивании в строку через StrConv(..., vbFromUnicode) русский сохраняется, но тэги летят туда же.
Конечно, CopyMemory() никто не отменял, но я не уверен, что смогу скопировать это дело в байтовый массив.

Да, насчет провайдера: соединяюсь через SQLOLEDB...
6 сен 04, 16:52    [937574]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Glory
Member

Откуда:
Сообщений: 104760
При добавлении в конец селекта указанного в сабже параметра почему-то выходные данные в QA обрезаются по границе nvarchar(255).
Что указано в
Tools-Options - Results - Maximum characters per column ??

то все равно получается какая-то каша, которую ни один браузер нормально не воспринимает
Браузер обычно еще хочет чтобы была пара тэгов <root></root>.
А то, что так где-то посреди вывода стоит перевод строки - это браузеру до лампочки
6 сен 04, 17:43    [937785]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
LongVarBinary.======= Если binary то данные кодируются в base64 (я в ручную кодировал, чтобы вставить в XML и отправить на сервер.), а при получении декодируются.
скопировать это дело в байтовый массив.============ Дак надо что получить? Бинарные или текстовые данные? Если бинарные, то на Delphi одной строкой в Stream и он умеет сохранять в бинарный файл.
6 сен 04, 18:02    [937862]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3295
Получить надо XML-файл, видимо все-таки текстовый.
попробовал вставить рут - ничего не меняет.
Насчет разметки: что же это за такой хитрый формат, который некорректно раскодируется? На сервере (QA):
<OB SportTypeTitle
На клиенте (ADODB.Recordset):
  в DS p o r t T y p e T i t l e

Вот сижу и думаю, как это возможно...
6 сен 04, 19:06    [937984]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31604
Ennor Tiegael
Да, насчет провайдера: соединяюсь через SQLOLEDB...

Через ODBC попробуйте.
6 сен 04, 19:27    [938019]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3295
alexeyvg
Через ODBC попробуйте.

Большой шаман, однако! Не сразу, но все получилось. Видимо, OLEDB юникодовый изнутри, в то время как ODBC - нет. Соотв-но, тип поля сменился на adLongVarWChar, и дальнейшее было делом времени. Премного благодарен :)
6 сен 04, 20:39    [938090]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31604
Ennor Tiegael
Большой шаман, однако!

Ну так! :-)

Ennor Tiegael
Видимо, OLEDB юникодовый изнутри, в то время как ODBC - нет. Соотв-но, тип поля сменился на adLongVarWChar, и дальнейшее было делом времени. Премного благодарен :)


Этот adLongVarWChar именно юникодный - "a long null-terminated Unicode string value".
Просто при использовании OLEDB данные из select ... for xml передаются не в виде простых текстовых строк, а в виде специального формата, пригодного для всяких xml-ных расширений OLEDB. А в ODBC - обычный текст, пусть и юникодный.
7 сен 04, 12:29    [939314]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
А то, что так где-то посреди вывода стоит перевод строки - это браузеру до лампочки
не совсем до лампочки вродебы...
<root><el1 attr="fd
rt"></root>
и иже с этим
такое нихто не поймет... если из QA брать результат...

для спящего время бодрствования равносильно сну
7 сен 04, 12:38    [939373]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей2003
А то, что так где-то посреди вывода стоит перевод строки - это браузеру до лампочки
не совсем до лампочки вродебы...
<root><el1 attr="fd
rt"></root>
и иже с этим
такое нихто не поймет... если из QA брать результат...

для спящего время бодрствования равносильно сну

Оформлять нужно правильно xml
<root><el1 attr="fd
rt"/></root>
или
<root><el1 attr="fd
rt"></el1></root>
7 сен 04, 13:23    [939592]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3295
alexeyvg
Просто при использовании OLEDB данные из select ... for xml передаются не в виде простых текстовых строк, а в виде специального формата, пригодного для всяких xml-ных расширений OLEDB.

Понятно. Как следствие, если у меня в тексте встретится такой значок, все рискует накрыться. А как именно можно использовать тот формат, который возвращает OLEDB?
7 сен 04, 13:29    [939628]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Glory
пропустил когда писал.
QA во всяком случае при таком написании ругается...
хотел осуществить переброс данных через xml, но отказался по этой самой причине.. QA и prepare_xml_document не распознает следующий абзац... точнее наоборот распознает... и считает это отдельным символом.


для спящего время бодрствования равносильно сну
7 сен 04, 13:35    [939670]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
Glory
Member

Откуда:
Сообщений: 104760
2Алексей2003
Вообще-то вы правы - это смотря куда поподет перевод строки.
7 сен 04, 13:55    [939807]     Ответить | Цитировать Сообщить модератору
 Re: Глючит FOR XML AUTO?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31604
Ennor Tiegael
Понятно. Как следствие, если у меня в тексте встретится такой значок, все рискует накрыться. А как именно можно использовать тот формат, который возвращает OLEDB?

Накроется - там-же вообще не xml, а спец. формат. А использовать можно, по-моему, вызывая не ExecuteReader, а ExecuteXmlReader.
7 сен 04, 14:17    [939954]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить