Locator по дате

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
lexa
Посетитель
Сообщения: 25
Зарегистрирован: 03 Июнь 2006, 23:57
Откуда: Зимбабве

Locator по дате

Сообщение lexa »

Пытаюсь в Browse использовать Filtered Locator по ключу, основанному на поле даты(@D05-). При вводе Locator отсекает записи в соответствие с форматом Long. Это понятно. Как можно все-таки корректно использовать имено формат даты.

Для себя решил проблему просто, введя в таблицу вычисляемую переменную(@s8)=Format(исходная дата,@D05-) и формируя соответствующий ей ключ.
В List Box-e Browse скрываю исходную дату, показываю преобразованную в строку вычисляемую дату и все нормально.

А есть ли решение в лоб?

Заранее благодарен за подсказку или решение.
C55ee(ABC)
lexa
Посетитель
Сообщения: 25
Зарегистрирован: 03 Июнь 2006, 23:57
Откуда: Зимбабве

Сообщение lexa »

Может кто-нибудь что-нибудь скажет?
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

1) Локатор работает по ключу, а не по формату.
2) Если хранить дату как строку в формате @D5, то ключ строится не корректно. Сначала все первые числа, затем все вторые и тд. Возможно что-то получится если хранить дату в форматах @D9 - @D12, когда сначала идет год, потом месяц, потом день.
3) Имхо, для дат лучше использовать не локатор, а сделать условие Range of Values и добавить на окно два Entry с календарями, где пользователь будет ограничивать диапазон.
lexa
Посетитель
Сообщения: 25
Зарегистрирован: 03 Июнь 2006, 23:57
Откуда: Зимбабве

Сообщение lexa »

ru_alex писал(а):1) Локатор работает по ключу, а не по формату.
Я не спорю, изначально указав в теме - Пытаюсь в Browse использовать Filtered Locator по ключу, основанному на поле даты(@D05-). Формат в скобках указал потому, что именно по такому формату выводится дата в Browse и по такому же формату хочу включить locator по дате.
ru_alex писал(а):2) Если хранить дату как строку в формате @D5, то ключ строится не корректно. Сначала все первые числа, затем все вторые и тд. Возможно что-то получится если хранить дату в форматах @D9 - @D12, когда сначала идет год, потом месяц, потом день.
Если использовать дату как строковую в формате @D05-, то не вижу никакой некорректности, очень удобно - набираю число 25 -> отсекаю другие числа (список выстраивается по 25-**-**), набираю месяц 09 -> отсекаю другие месяцы (список выстраивается по 25-09-**), набираю год 06 -> список показывает все записи, относящиеся к 25-09-06. Почему @D05 - для меня прежде всего важнее день и месяц.
Но преобразование даты в строковую переменную (как я оценил для себя позже) не решение проблемы - слишком много переделок, добавлений, конвертирования и т.п.
ru_alex писал(а):3) Имхо, для дат лучше использовать не локатор, а сделать условие Range of Values и добавить на окно два Entry с календарями, где пользователь будет ограничивать диапазон.
Это как у продуктов 1С? Да, это решение, но все-таки в лоб можно? Локатор более динамичен.
Подсознательно понимаю, что это не так просто.

Заранее благодарен за помощь.
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

25-09-2000 это в формате long 72955
25-09-2001 это 73320
Соответственно, набрав в локаторе 25-09, получаем, что выбирать нужно не некую непрерывную последовательность данных в порядке ключа по полю long, а некий определенный набор значений, что, сам понимаешь, средства browse не поддерживают. Соответственно, наверно только через string, как ты и реализовал.
Что до некорректности, то это я неправильно выразился, нужно было добавить ИМХО, все же фильтровать все 25 числа всех месяцев и годов при вводе в локатор 25 , мне кажется, кривенько. Если же использовать форматs @D9-@D12, то есть сначала вводить 2006, фильтруем данные за год, затем 09, получаем сентябрь 2006, затем 25, получили нужную дату. Но повторюсь - это дело вкуса.
Может тогда сделать одно поле, в котором пользователь будет заносить long переменную a формате @D05 и после ввода фильтровать на по ней browse.
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

В догонку.
Подумал тут, если использовать форматы @D9-@D12, то локатор можно полноценно реализовать и по полю long. Правда надо точки вставки искать, а скорее всего и стандартные классы рихтовать, что опять же не все любят и одобряют.
Ответить