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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.12.2003, 11:54   #1  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
? фильтрация записей по месяцу в поле дата
задача: выбрать записи в таблице, где значение поля(Date) удовлетворяет маске ??.01.????, иными словами отфильтровать данные по месяцу, независимо от года и числа. Понятное дело, что такой шаблон указывать в BuildQueryRange некорректно - т.к. поле - дата, а не строка. Конечно, можно перебирать все записи, смотреть месяц и подходящие записывать во временную таблицу. Но хотелось бы получить более прямое решение.
Старый 17.12.2003, 18:49   #2  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
PHP код:
Connection Con = new Connection();
Statement Stmt Con.createStatement();
ResultSet RS Stmt.executeQuery('Select CreatedDate from MyTable where month(CreatedDate)=1');

while (
RS.next())
{
    
info(RS.getString(1));

Старый 17.12.2003, 19:12   #3  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Судя по всему не получится.
Как вариант можно паралельно полю дата ввести поле с её строковым представлением
__________________
С уважением, Игорь Ласийчук.
Старый 17.12.2003, 19:27   #4  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
получицца, получицца..
я проверял
на оракле, правда, не тестировал, что при таком решении не помешало бы.
Старый 18.12.2003, 06:52   #5  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
я просто написал функцию которая формирует длинную строку ranges а-ля "01MonthStartYear..31MonthStartYear, 01011951..31011951,...,01MonthEndYear..31MonthEndYear".

Некрасиво, но Connection-ом совсем пользоваться не хочется. Тем более, что функции month() в oracle нет, придется изворачиваться и писать различные sql-запросы для разных типов БД и т.д.
Старый 18.12.2003, 10:52   #6  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Цитата:
получицца, получицца..
Насколько я понял имелся в виду фильтр в гриде. И куда ты приткнёшь свой statement?
Цитата:
Тем более, что функции month() в oracle нет, придется изворачиваться и писать различные sql-запросы для разных типов БД и т.д.
Длинная строка range действительно некрасиво, тем более что в 2.5 (в 3.0 не пробовал) если кол-во параметров в range превышает где-то 1000, Аксапта вылетает.

Вижу два варианта:

1.) Вести паралельно текстовое представление даты и именно его показывать в гриде. Проблема с сортировкой решается перекрытием метода sort у контрола - просто перекидывается сортировка на поле date.

2.) Использовать поле date и перекрывать метод filter, что насколько я понял вы и сделали.

Первый вариант ИМХО покрасивше.
__________________
С уважением, Игорь Ласийчук.
Старый 18.12.2003, 11:09   #7  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано Garic

Длинная строка range действительно некрасиво, тем более что в 2.5 (в 3.0 не пробовал) если кол-во параметров в range превышает где-то 1000, Аксапта вылетает.
не думаю, что когда нибудь понадобится фильтровать записи за 1000 лет

Цитата:
Изначально опубликовано Garic

Вижу два варианта:
1.) Вести паралельно текстовое представление даты и именно его показывать в гриде. Проблема с сортировкой решается перекрытием метода sort у контрола - просто перекидывается сортировка на поле date.
неприемлемо - т.к. придется модифицировать стандартные объекты.

Цитата:
Изначально опубликовано Garic

2.) Использовать поле date и перекрывать метод filter, что насколько я понял вы и сделали.
нет. я перекрыл метод init у datasource веб формы.

Цитата:
Изначально опубликовано Garic

Первый вариант ИМХО покрасивше.
покрасивше. но неприемлемо.
Старый 18.12.2003, 11:57   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано Антон Солдатов

не думаю, что когда нибудь понадобится фильтровать записи за 1000 лет
а как будет выглядеть запрос ".. за все декабри", если год явно не указан? Куча условий >=01.12.1900 && <=31.12.1900 || ... || >=01.12.2003 && <= 31.12.2003?
Плохо будет всем - и SQL серверу в первую очередь

Цитата:
Изначально опубликовано Антон Солдатов

неприемлемо - т.к. придется модифицировать стандартные объекты.
нет. я перекрыл метод init у datasource веб формы.
Мы тут вроде только тем и занимаемся, что модифицируем стандартные объекты. Или по заданию формы модифицировать можно, а таблицы нет?

не хотите ввести несколько целочисленных полей "Год", "Квартал", "Месяц", "Неделя" , "День"?
И будет вам легкая фильтрация по любой части даты
Старый 18.12.2003, 12:35   #9  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано Vadik

а как будет выглядеть запрос ".. за все декабри", если год явно не указан? Куча условий >=01.12.1900 && <=31.12.1900 || ... || >=01.12.2003 && <= 31.12.2003?
Плохо будет всем - и SQL серверу в первую очередь
Ну он(sql сервер) не очень жалуется. Таблица(сотрудники) содержит порядка 100-ни записей и не предполагает большего кол-ва хотя-бы на порядок. Посмотрите как сделан отчет HRMBirthday - такой вариант мне еще меньше нравится.

Цитата:
Изначально опубликовано Vadik

Мы тут вроде только тем и занимаемся, что модифицируем стандартные объекты. Или по заданию формы модифицировать можно, а таблицы нет?
Форма - моя. Сделал ее я. Таблица - стандартная.
При переходе на новую версию - меньше вероятность, что мне и моим клиентам придется разгребать пересечения моих модификаций с модификациями производителей аксапты.

Цитата:
не хотите ввести несколько целочисленных полей "Год", "Квартал", "Месяц", "Неделя" , "День"?
И будет вам легкая фильтрация по любой части даты
хочу. много чего хочу - но не всегда оправданно.
Старый 18.12.2003, 12:47   #10  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
А если создать таблицу с полями Дата, День, Месяц, Год, заполнить ее при помощи job, лет так за 100 и inner joinить ее.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка: фантомное дублирующее поле типа "дата" в гриде belugin DAX: Программирование 8 14.06.2006 00:15
Фильтрация записей donMigel DAX: Администрирование 9 01.02.2005 17:39
Фильтрация записей Лиса* DAX: Функционал 0 08.09.2004 11:07
Фильтрация записей при импорте Александр Костоусов DAX: Программирование 18 02.09.2004 14:36
Экспорт в Excel - поле формата "Дата" Ned DAX: Программирование 15 25.04.2003 10:01

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

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

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