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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.01.2016, 17:24   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ошибки с типом dateTime при работе через ODBC при использовании класса ResultSet
Привет всем.
Хотелось обсудить странный глюк.
Дано.
Внешная база на SQL Server (версия Microsoft SQL Server 2014 - 12.0.4213.0 (X64) )

В табличке хранятся данные с типом dateTime
SQL Management studio показывает значение 2016-01-20 13:28:00.000

При подключении из Аксапты через ODBC делаем простейший запрос select from
Затем при чтении метод ResultSet.getDateTime() возвращает какую-то фигню.

Отладчик в аксапте показывает значение CL.01.2016 20:00:13

то же самое выводится в инфолог.
попробовал доставать значения даты времени по кускам выводится так (u - переменная с типом utcdateTime, в которую начитали результат):

dateTimeUtil::date(u) = CL.01.2016
dateTimeUtil::year(u) = 2016
dateTimeUtil::month(u) = 1
dateTimeUtil::day(u) = 32
dateTimeUtil::time(u) = 72013
dateTimeUtil::hour(u) = 20
dateTimeUtil::minute(u) = 0
dateTimeUtil::second(u) = 13
dateTimeUtil::toStr(u) = 2016-01-256T20:00:13

Налицо какое то переполнение. Самое интересно что значения dateTimeUtil::toStr(u) и dateTimeUtil::day(u) друг с другом не согласуются.

Встречался ли кто-нибудь с таким эффектом ? Из-за чего это бывает ? Как лечить ?

P.S.
Для себя обошел это глюк за счет того что выбирал не само поле FieldName, а строковую функцию от него
X++:
convert(char(19),[FieldName], 20) AS FieldName
которую потом можно в X++ разобрать и превратить уже в utcDateTime

P.P.S.
Глюк воспроизводится на ax2009 билды
5.0.1600.3090
5.0.1500.4570 (RU7)

На 2012 R3 не воспроизводится (аосы стоят на одном сервере Win2012 и используют один и тот же ODBC датасорс)

P.P.P.S.
Интересно, что ResultSet не позволяет дважды подряд вызвать метод получения значения.
Например однократный вызов
X++:
ResultSet.getDateTime();
не приводит к ошибке, а если дважды подряд вызвать
X++:
ResultSet.getDateTime();
ResultSet.getDateTime();
то валится по ошибке на 2-м вызове (и в 2012-й и в 2009-й)

Давно его используем, но ни разу до сих пор не натыкались

Последний раз редактировалось Logger; 21.01.2016 в 17:58.
Теги
datetime, odbc, resultset, utcdatetime, баг, глюк

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Aku: Dynamics AX AIF Webservices – Date, Time und Datetime Datentypen Blog bot DAX Blogs 0 22.04.2011 17:11
Импорт в АХ через ODBC AXbeginer DAX: Программирование 14 02.10.2009 08:12
Ошибки при работе Axapta fPtr DAX: Администрирование 1 23.08.2007 10:40
Ошибки при работе в трехзвенке tolstjak DAX: Администрирование 3 29.03.2007 12:01
Ошибка при работе с типом container Yuri Safronov DAX: Программирование 4 14.07.2004 08:05

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

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

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