![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обсудим "Как сделать Редактор "Условий отбора" [D7, dBase, FoxPro]
azamatufa © (2008-05-23 10:37:00)Привет, Мастера!
Вот не знаю как быть, с чего начать. Кажется для меня задача не из легких. Прошу помощи, совета.
Задача Учет-кадров.
И так, у работника имеется множество различных характеристик:
- пол (муж,жен)
- дата рождения (Date)
- образование(высш,серд,нач.),
- категория (рук-ель, рабочий, служ.),
- воинское звание (генерал,полк-ник, майор, лейт....)
и так далее...
Так вот, надо сделать "Редактор "Условий отбора".
Например:
"Возраст" "больше" 30 И "Возраст" "меньше или равно" 50
И ("Звание" "равно" "Майор" ИЛИ"Звание" "равно" "лейтенант" )
Может кто сталкивался с подобными делами?
Какова структура базы данных?
Reindeer Moss Eater (2008-05-23 13:03:00) [21]а поверх датасета, в котором и видны эти самые "данные".
дай угадаю. и она канешна прозрачна как слеза младенца.
Reindeer Moss Eater (2008-05-23 13:02:00) [22]см. [17] чем еще.
MsGuns (2008-05-23 13:00:00) [23]>Reindeer Moss Eater © (23.05.08 12:52) [16]
>тем что у меня юзер видит сам набор данных и введенные условия, а у тебя отдельную форму оторванную от данных которая к тому же исчезает когда надо наложить фильтр.
У тебя кроме телепатора есть еще и телевизор ? У меня формочка открывается не у горы, а поверх датасета, в котором и видны эти самые "данные". Так в чем отличие (кроме фанфарного трУба и фейерверков) ?
Reindeer Moss Eater (2008-05-23 12:56:00) [24]Что происходит у тебя, если обнаруживается, что юзер ввел не совсем то, что ему надо?
Как ты в своей чудо-форме восстановишь текущие условия фильтрации введенные на предыдущем этапе?
"привет, тетеньки, вводите все заново!"
ага?
Reindeer Moss Eater (2008-05-23 12:52:00) [25]И чем это отличается от моего способа
тем что у меня юзер видит сам набор данных и введенные условия, а у тебя отдельную форму оторванную от данных которая к тому же исчезает когда надо наложить фильтр.
Reindeer Moss Eater (2008-05-23 12:50:00) [26]Кто сказал, что лайка нету?
Если условие введено в заголовке стрингового поля, то формируется like вместо равенства.
MsGuns (2008-05-23 12:44:00) [27]>Reindeer Moss Eater © (23.05.08 12:41) [13]
>он просто вводит значения или выражения > <
>причем видит в какие колонки вводит, видит как они называются и что в них находится.
И чем это отличается от моего способа, кроме того, что у тебя только 2 условия и напрочь отстутствует условия выбора подобных (Like) ? Подсветкой ? Может, он еще шепчет слова любви ?
Ладно, уговорил, твоя пипи ширше
Reindeer Moss Eater (2008-05-23 12:41:00) [28]у меня-то он не пишет sql.
он просто вводит значения или выражения > <
причем видит в какие колонки вводит, видит как они называются и что в них находится.
MsGuns (2008-05-23 12:36:00) [29]Тогда самое лучшее решение предлагал ИШ - нефиг писать какие-либо прибамбасы, -дать юзеру в зубы учебник по сиквелю и окошко с мемо.
Reindeer Moss Eater (2008-05-23 12:10:00) [30]Это все к тому, что наглядность и интуитивная понятность таких решений уступает приведенному мной выше.
Условие фильтра введенное в заголовке всегда видно пользователю.
Если же он отбирает по "или" то все записи попадающие в фильтр сразу же подсвечиваются еже до того, как будет применен сам фильтр.
Reindeer Moss Eater (2008-05-23 12:02:00) [31]тетеньки у всех разные.
MsGuns (2008-05-23 11:59:00) [32]Мои "тетеньки" учатся ловко шуровать фильтрами за неделю максимум. И только ПЕРВЫЙ раз. Все последующие проги имеют тот же интерфейс фильтрации и вопросов не вызывают изначально.
Reindeer Moss Eater (2008-05-23 11:57:00) [33]сначала повозиться с формой, потом отправить всех "тетенек" получать второе высшее чтобы научились с ней обращаться.
MsGuns (2008-05-23 11:52:00) [34]Задачка несложная сама по себе, но реально усложняется, если ее универсализировать.
Надо соорудить некую формочку (можно динамически в библиотечной процедуре), куда передавать указатель на датасет. По открытию формочка рисует на себе две панельки - на левой - список доступных для фильтрации полей датасета, на правой - стрингрид из трех колонок: в первой имя выбранного в фильтр поля, во второй тип операции (я ограничивался "джентльментским" набором из ">", "<", ">=", "<=", "NOT" и "LIKE", в третий - значение маски. Ну и функционал добавления-удаления в фильтре.
Сложнее с добавлением введенных условий в запрос, тут сложно дать какие-либо ОБЩИЕ рекомендации, т.к. сильно зависит от SQL сервера и исходного запроса, в который может входить что угодно, начиная от Where и заканчивая всякими юнионами и группировками. Если ADO, то там проще. Исходный запрос вставляется в результирующий как подзапрос. Правда, если у него был Order By, то его надо вынести также вовне.
Короче, повозиться, конечно, придется, но результат, однозначно себя окупит, т.к. эта формочка может быть легко встроена в любое приложение и любую сетку.
Stas (2008-05-23 11:25:00) [35]cxGRID
Reindeer Moss Eater (2008-05-23 11:25:00) [36]http://img394.imageshack.us/img394/9882/gridls7.jpg
на запрос наложены пользовательские условия :
номер документа > 1 and номер документа < 700
and
(счет = x или счет равен y)
первое реализовано в ehlib'ом (ввод условия в заголовках столбца)
второе добавлено в наследнике (выбор по "или" по значению поля на котором стоит курсор в момент выбора)
во втором окне виден результирующий sql (первые четыре строки запроса от дизайнтайма)
Игорь Шевченко (2008-05-23 11:08:00) [37]
> рук-ель
Не сокращ.
Reindeer Moss Eater (2008-05-23 10:59:00) [38]рисовать подобные редакторы - неблагодарное дело.
у меня все вышеперечисленное делается средствами грида.
Sergey13 (2008-05-23 10:50:00) [39]> [0] azamatufa © (23.05.08 10:37)
> dBase, FoxPro
Вот это, ИМХО, ни в какие ворота не лезет. Особенно для такой конфиденциальной штуки как кадровая БД.
Sergey13 (2008-05-23 10:45:00) [40]А причем тут структура БД и "Условия отбора"? Какая между ними связь?