AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 22.05.2018, 16:22   #1  
БАХ43 ist offline
БАХ43
Участник
 
92 / 54 (2) ++++
Registriert seit: 15.02.2013
Ort: г.Москва, г. Зеленоград
UTCDateTime в query range value
DAX2009
Есть диалоговое окно с парой значений TransDateTime плюс сохраняемый query по некоторым полям таблички RFIDTrans. После нажатия ОК, вызывается метод updateQuery, который добавляет ранг по дате-времени. Все отрабатывает нормально. НО если перед ОК хоть раз нажать кнопку "Выбрать", для смены значений фильтров, то выборка по времени идет на 3 часа раньше (Московская временная зона).
X++:
protected void updateQuery()
{
    QueryBuildDataSource    qbdsRFID;
    QueryBuildRange         rangeTransDateTime;
    str                     dateTimeRange;
    ;
    qbdsRFID     = queryRun.query().dataSourceTable(tablenum(RFIDTrans));
    fromDateTime = DateTimeUtil::removeTimeZoneOffset(fromDateTime, tz);
    toDateTime   = DateTimeUtil::removeTimeZoneOffset(toDateTime, tz);
    
    rangeTransDateTime  = qbdsRFID.addRange(fieldnum(RFIDTrans, TransDateTime));
    dateTimeRange = SysQuery::range(fromDateTime, toDateTime);
    rangeTransDateTime.value(dateTimeRange);
при этом переменная dateTimeRange идентична в обоих случаях. Такое ощущение, rangeTransDateTime.value в разных случаях отрабатывает по разному.
Кто-нибудь сталкивался с подобным?
ЗЫ: Поковырялся в свойствах типа данных TransDateTime, нашел свойство TimezonePreference. Если его выставить в No Conversion, тогда запрос формируется корректно и после нажимания кнопки "Выбрать", но при этом в форме RFIDTrans время начинает отображаться по Гринвичу, что в общем-то правильно, но неудобно.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Alt 22.05.2018, 18:04   #2  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
1) точно ли нужен removetimezine offset
2) если сдампить queryRun.query.xml() до и после нажатия на кнопку - есть ли разница?
This post has been rated by: Logger (1).
Alt 22.05.2018, 23:02   #3  
БАХ43 ist offline
БАХ43
Участник
 
92 / 54 (2) ++++
Registriert seit: 15.02.2013
Ort: г.Москва, г. Зеленоград
xml отличается только версией. Version="24" или Version="23", вдругой раз получилась пара 25-26.
Все остальное идентично, в том числе и тэг <range Name="TransDateTime" Table="RFIDTrans" Field="TransDateTime" Value=""10.05.2018 18:00:00".."11.05.2018 06:00:00"" Label="" Status="Open" Enabled="Yes" />
Причем диапазон в обоих случаях правильный, по гринвичу с 18:00 до 6:00. В вот сам qbdsRFID в дебагере имеет диапазон (после нажатия "Выбрать") с 15:00 до 3:00:
NAME:
qbdsRFID
VALUE:
SELECT FIRSTFAST * FROM RFIDTrans WHERE ((TransState = 4 OR TransState = 2)) AND ((TagType = 19)) AND ((EpcObjectType = 30 OR EpcObjectType = 4)) AND ((RLProcessStage = 2 OR RLProcessStage = 0)) AND ((TransDateTime>='2018-05-10T15:00:00' AND TransDateTime<='2018-05-11T03:00:00')) JOIN FIRSTFAST * FROM InventDim WHERE RFIDTrans.InventDimId = InventDim.inventDimId AND ((InventLocationId = N'БСОХ'))
TYPE:
QueryBuildDataSource
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Alt 22.05.2018, 23:09   #4  
БАХ43 ist offline
БАХ43
Участник
 
92 / 54 (2) ++++
Registriert seit: 15.02.2013
Ort: г.Москва, г. Зеленоград
Zitat:
1) точно ли нужен removetimezine offset
Судя по логике как раз отрабатывает правильно после нажатия "Выбрать". Тогда removetimezine offset действительно не нужен. Такое ощущение, что ставили эту заплатку, на случай когда "Выбрать" не нажимается (это 90% случаев).
Отчет писал не я, досталось по наследству.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Alt 23.05.2018, 09:35   #5  
БАХ43 ist offline
БАХ43
Участник
 
92 / 54 (2) ++++
Registriert seit: 15.02.2013
Ort: г.Москва, г. Зеленоград
Который раз убеждаюсь, что с проблемой надо переспать. Вчера полдня голову ломал, сегодня за 2 минуты разобрался. Этот код в обоих случаях работает одинаково:
X++:
    queryRun.query().removeTimeZoneOffset(true);
    qbdsRFID     = queryRun.query().dataSourceTable(tablenum(RFIDTrans));
    qbdsRFID.addRange(fieldnum(RFIDTrans, TransDateTime)).value(SysQuery::range(fromDateTime, toDateTime));
Или так, если кому-то нравится:
X++:
    queryRun.query().removeTimeZoneOffset(false);
    qbdsRFID     = queryRun.query().dataSourceTable(tablenum(RFIDTrans));
    fromDateTime = DateTimeUtil::removeTimeZoneOffset(fromDateTime, tz);
    toDateTime   = DateTimeUtil::removeTimeZoneOffset(toDateTime, tz);
    qbdsRFID.addRange(fieldnum(RFIDTrans, TransDateTime)).value(SysQuery::range(fromDateTime, toDateTime));
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
This post has been rated by: belugin (15), Logger (5).
Stichworte
query, removetimezoneoffset, utcdatetime

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ax 2012. Копирование Range из Query Sada DAX: Программирование 2 22.08.2013 10:10
ax-erp: How to Set the Query Range on a SSRS Report Blog bot DAX Blogs 0 18.10.2012 19:11
sumitax: AX Queries – Passing query range as parameter Blog bot DAX Blogs 0 29.06.2011 13:11
emeadaxsupport: Passing UtcDateTime values in extended query syntax Blog bot DAX Blogs 0 10.05.2010 21:05

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 09:08 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.