AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.04.2008, 11:52   #1  
lyolea84 is offline
lyolea84
Участник
Аватар для lyolea84
 
27 / 10 (1) +
Регистрация: 12.10.2007
Как средствами SQL QA разобрать контейнер по частям
Добрый день! Вопрос: можно ли только средствами SQL QA вытащить из Axapta таблицы контейнер и разобрать его по частям? Например, имеется таблица Batch, в ней поле Info - тип контейнер. Поле Info содержит описание запущенного батчем объекта. Из этого поля нужно только средствами SQL QA вытащить имя и тип объекта, запущенного в Batch'е. как это сделать?
Старый 11.04.2008, 12:06   #2  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
В SQL поле info имеет тип image. Вот что написано в BOL по поводу этого типа данных:
Цитата:
Сведения в данных image хранятся в виде строки битов и не обрабатываются SQL Server. Любая обработка данных в столбце image должна проводиться приложением. Например приложение могло бы хранить данные в столбце image в форматах BMP, TIFF, GIF или JPEG. Приложение, считывающее данные из столбца image, должно распознавать и правильно отображать формат данных. Все, что делает столбец image, — это предоставление места для хранения потока битов, составляющих значение данных image.
Так что достать вам оттуда что-то минуя аксапту вряд ли получиться.
Старый 11.04.2008, 12:23   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Можно.
Если приведете здесь пример последовательности байтов в поле из SQL QA, ее вам помогут расшифровать, думаю
Старый 11.04.2008, 12:30   #4  
lyolea84 is offline
lyolea84
Участник
Аватар для lyolea84
 
27 / 10 (1) +
Регистрация: 12.10.2007
проблема в том что эта самая последовательность битов каждый раз может меняться
Код:
Info = 0x0701000000000042617463682070726F63657373696E67090952756E206A6F62202727206F7264657265642062792027494E5642412720696E2064617461626173652027616731272E00FF
Эту последовательность получаем в QA и поля контейнера.
Старый 11.04.2008, 12:37   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
ой, еще бы хорошо и содержимое контейнера из АХ

И начните читать вот этот код:
Посмотреть Dimension в контейнере

Собственно, вам вот это нужно будет сделать

Последний раз редактировалось kashperuk; 11.04.2008 в 12:42.
Старый 11.04.2008, 12:48   #6  
lyolea84 is offline
lyolea84
Участник
Аватар для lyolea84
 
27 / 10 (1) +
Регистрация: 12.10.2007
Содержимое контейнера:

Название: ccc.PNG
Просмотров: 941

Размер: 13.7 Кб
Старый 11.04.2008, 13:31   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, у вас видимо 4ка, и данные в Unicode
Соответственно, первый байт 07 - это начало контейнера, последний FF - окончание контейнера
потом идет код типа 01 - целое число, и за ним 4 байта этого числа (8 нулей в строке).
Потом идет код след. типа - 00 - это строка, и дальше строка, завершающаяся 00 в самом конце (перед FF)

Соответственно, осталась вот эта строка для анализа, и мы знаем, что все это - строка в Unicode
Код:
42617463682070726F63657373696E67090952756E206A6F62202727206F7264657265642062792027494E5642412720696E2064617461626173652027616731272E
Открываем эту ссылку:
http://www.tamasoft.co.jp/en/general-info/unicode.html

и по чуть-чуть начинаем расшифровывать: (замечу, что тут можно смотреть и на ASCII таблицу, потому как используются только эти символы, наскольку я вижу - http://www.asciitable.com/)
42 => 0040 на пересечении с 02 => B
61 => 0060 на пересечении с 01 => a
....
2E => 0020 на пересечении c 0E => .

Вам осталось только это запрограммировать )
Старый 11.04.2008, 13:58   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вопрос ConPeek - здесь есть пример хранимой процедуры, разбирающей контейнерные поля. Только надо допилить для правильного разбора Unicode
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: aidsua (1).
Старый 26.01.2015, 12:00   #9  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Версия AX: 4.0.
Если я применяю контейнер, содержащий другие контейнеры, то в БД получается что-то типа такого:
X++:
0x07FD0707FD0102F001000061006C006200650031000000006E006C006F00620061000000FF0707FD0101F0010001E15F00000165790000FF0707FD0100F00100037004190370001EFF0707FD010AF0010001E0DAAA7301FB098073FF0707FD015B0001000052004F0057002D0033000000000000FFFF
Понятно, что первый байт определяет тип данных, для контейнера - это 07.
Маркер конца контейнера - FF. Вопрос: что такое FD? Начало контейнера? Т.е. контейнер определяется началом 07FD и концом FF.
С внутренними контейнерами вообще непонятно, почему начало 0707FD?
С самими данными все вроде бы понятно:
0: string
1: integer
2: real
3: date
4: enum
7: container

5: rstring скорее всего то же самое, что 0 (string)
6: datetime скорее всего для AX то же самое, что 1 (integer)
Далее двигаться по нумерации, похоже, смысла нет.

Так вот. Может ли кто-нибудь подсказать, откуда берутся в начале контейнера байт FD и лишний байт субконтейнера 07?
__________________
// no comments

Последний раз редактировалось dech; 26.01.2015 в 12:03.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Контейнер из метода joinedDatasources() - как его разобрать ? TasmanianDevil DAX: Программирование 2 18.03.2011 12:28
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX: Dynamics AX 2009 & SQL Server 2008 Blog bot DAX Blogs 0 10.06.2008 21:08
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:21.