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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2010, 15:01   #1  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
SysClientSessions.Login_date
Ax4.0 SP2. Смотрю в активных сессиях SysClientSessions даты логина. Вижу, что сегодняшние. В коде делаю выборку по единственному условию SysClientSessions.Login_date == systemdateget() - и не находится ничего. Как такое может быть ?
Старый 27.01.2010, 15:24   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от Zabr Посмотреть сообщение
Ax4.0 SP2. Смотрю в активных сессиях SysClientSessions даты логина. Вижу, что сегодняшние. В коде делаю выборку по единственному условию SysClientSessions.Login_date == systemdateget() - и не находится ничего. Как такое может быть ?
На уровне SQL, поля типа Date имеют тип DateTime на уровне SQL, а следовательно, вместе с датой, содержат время; но в нормальных условиях время всегда нулевое, axapta сохраняет только составляющую даты. А вот касательно таблицы SysClientSessions, то в ней в поле SysClientSessions.Login_date записывается ещё и время, которое не соответствует текущему systemdateget().

Используйте в условии интервал:

[Вчерашняя дата] > Login_date > [Завтрашняя дата]

P.S. Кстати, в 2009й появился новый тип данных DateTime, который наравне с датой, фиксирует ещё и время.

Последний раз редактировалось DSPIC; 27.01.2010 в 15:29.
За это сообщение автора поблагодарили: Zabr (1).
Старый 27.01.2010, 15:51   #3  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Используйте в условии интервал:

[Вчерашняя дата] > Login_date > [Завтрашняя дата]
Не срабатывает: по условию
X++:
while select SysClientSessions WHERE SysClientSessions.Login_date > systemdateget() - 1 
                   && SysClientSessions.Login_date < systemdateget() + 1
выдает все сессии: открытые и сегодня, и вчера. Может быть, надо даты в условии предварительно преобразовывать к сиквельному формату DateTime ? Как это сделать в коде Х++ Ax 4.0 ?
Старый 27.01.2010, 16:01   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Проверил, вроде всё корректно работает

X++:
static void SysClientSessions_Date(Args _args)
{
    SysClientSessions scs;
    ;
    
    while select scs
      where scs.Login_date > ((13\01\2010) - 1)
         && scs.Login_date < ((13\01\2010) + 1)
    {
        info (strFmt("%1 - %2", scs.userId, scs.Login_date));
    }
}
Старый 27.01.2010, 17:35   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
В таблице SysClientSessions кроме поля login_date, есть поле login_time, попробуйте использовать и его в выражении, т.е. формально условие должно быть таким
Вчера 23:59:59 < Сегодня <= Сегодня 23:59:59
__________________
Sergey Nefedov
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при старте АОСа zZ_TOP_Zz DAX: Администрирование 4 11.09.2008 16:08
Проблема с SysClientSessions trace DAX: Программирование 6 06.11.2007 14:14

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

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

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