10.12.2003, 11:54 | #1 |
Соучастник
|
фильтрация записей по месяцу в поле дата
задача: выбрать записи в таблице, где значение поля(Date) удовлетворяет маске ??.01.????, иными словами отфильтровать данные по месяцу, независимо от года и числа. Понятное дело, что такой шаблон указывать в BuildQueryRange некорректно - т.к. поле - дата, а не строка. Конечно, можно перебирать все записи, смотреть месяц и подходящие записывать во временную таблицу. Но хотелось бы получить более прямое решение.
__________________
View Anton Soldatov's LinkedIn profile |
|
17.12.2003, 18:49 | #2 |
экс-модератор
|
PHP код:
|
|
17.12.2003, 19:12 | #3 |
NavAx
|
Судя по всему не получится.
Как вариант можно паралельно полю дата ввести поле с её строковым представлением
__________________
С уважением, Игорь Ласийчук. |
|
17.12.2003, 19:27 | #4 |
экс-модератор
|
получицца, получицца..
я проверял на оракле, правда, не тестировал, что при таком решении не помешало бы. |
|
18.12.2003, 06:52 | #5 |
Соучастник
|
я просто написал функцию которая формирует длинную строку ranges а-ля "01MonthStartYear..31MonthStartYear, 01011951..31011951,...,01MonthEndYear..31MonthEndYear".
Некрасиво, но Connection-ом совсем пользоваться не хочется. Тем более, что функции month() в oracle нет, придется изворачиваться и писать различные sql-запросы для разных типов БД и т.д.
__________________
View Anton Soldatov's LinkedIn profile |
|
18.12.2003, 10:52 | #6 |
NavAx
|
Цитата:
получицца, получицца..
Цитата:
Тем более, что функции month() в oracle нет, придется изворачиваться и писать различные sql-запросы для разных типов БД и т.д.
Вижу два варианта: 1.) Вести паралельно текстовое представление даты и именно его показывать в гриде. Проблема с сортировкой решается перекрытием метода sort у контрола - просто перекидывается сортировка на поле date. 2.) Использовать поле date и перекрывать метод filter, что насколько я понял вы и сделали. Первый вариант ИМХО покрасивше.
__________________
С уважением, Игорь Ласийчук. |
|
18.12.2003, 11:09 | #7 |
Соучастник
|
Цитата:
Изначально опубликовано Garic
Длинная строка range действительно некрасиво, тем более что в 2.5 (в 3.0 не пробовал) если кол-во параметров в range превышает где-то 1000, Аксапта вылетает. Цитата:
Изначально опубликовано Garic
Вижу два варианта: 1.) Вести паралельно текстовое представление даты и именно его показывать в гриде. Проблема с сортировкой решается перекрытием метода sort у контрола - просто перекидывается сортировка на поле date. Цитата:
Изначально опубликовано Garic
2.) Использовать поле date и перекрывать метод filter, что насколько я понял вы и сделали. Цитата:
Изначально опубликовано Garic
Первый вариант ИМХО покрасивше.
__________________
View Anton Soldatov's LinkedIn profile |
|
18.12.2003, 11:57 | #8 |
Модератор
|
Цитата:
Изначально опубликовано Антон Солдатов
не думаю, что когда нибудь понадобится фильтровать записи за 1000 лет Плохо будет всем - и SQL серверу в первую очередь Цитата:
Изначально опубликовано Антон Солдатов
неприемлемо - т.к. придется модифицировать стандартные объекты. нет. я перекрыл метод init у datasource веб формы. не хотите ввести несколько целочисленных полей "Год", "Квартал", "Месяц", "Неделя" , "День"? И будет вам легкая фильтрация по любой части даты |
|
18.12.2003, 12:35 | #9 |
Соучастник
|
Цитата:
Изначально опубликовано Vadik
а как будет выглядеть запрос ".. за все декабри", если год явно не указан? Куча условий >=01.12.1900 && <=31.12.1900 || ... || >=01.12.2003 && <= 31.12.2003? Плохо будет всем - и SQL серверу в первую очередь Цитата:
Изначально опубликовано Vadik
Мы тут вроде только тем и занимаемся, что модифицируем стандартные объекты. Или по заданию формы модифицировать можно, а таблицы нет? При переходе на новую версию - меньше вероятность, что мне и моим клиентам придется разгребать пересечения моих модификаций с модификациями производителей аксапты. Цитата:
не хотите ввести несколько целочисленных полей "Год", "Квартал", "Месяц", "Неделя" , "День"?
И будет вам легкая фильтрация по любой части даты
__________________
View Anton Soldatov's LinkedIn profile |
|
18.12.2003, 12:47 | #10 |
NavAx
|
А если создать таблицу с полями Дата, День, Месяц, Год, заполнить ее при помощи job, лет так за 100 и inner joinить ее.
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Ошибка: фантомное дублирующее поле типа "дата" в гриде | 8 | |||
Фильтрация записей | 9 | |||
Фильтрация записей | 0 | |||
Фильтрация записей при импорте | 18 | |||
Экспорт в Excel - поле формата "Дата" | 15 |
|