Автор | Сообщение |
|
| |
Пост N: 55
Зарегистрирован: 03.12.08
|
|
Отправлено: 06.04.12 11:51. Заголовок: Помогите с реализацией задумки
Привет всем ! Есть задача . Имеется DBF-ка : A ,B ,C, D, - числовые поля (геометрические размеры) CODE - код товара Необходимо сделать фильтрацию по введенным полям да ещё и "приправить " дополнительными формами ввода (от /до) ------------------------------------------------------------------------------------------- | Размер А от [ ] до [ ] | Размер B от [ ] до [ ] | Размер C от [ ] до [ ] | Размер D от [ ] до [ ] | | [Искать] [Выход] | -------------------------------------------------------------------------------------------- Вводим числовые параметры ... По кнопке [Искать] - должно быть отфильтровано по введённым полям Пока продумываю как это лучше реализовать : Форма ввода и алгоритм фильтрации .... Поиск может быть при разном количестве заполненных полей . Разумеется - если поле не заполнено - то оно и не участвует в поиске .... Буду признателен за какие-то примерчики вашей реализации подобного задания ...
|
|
|
Ответов - 26
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 2166
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.04.12 09:37. Заголовок: ММК пишет: Пользуюс..
ММК пишет: цитата: | Пользуюсь именно этим методом :) Берем базу с разными полями (числ., стр., дата...) .Хочется в ней сделать какую-то выборку, Причем сразу может быть и не ясны конкретные "рамки" . Другими словами ставим один "фильтр" потом по рузультату второй и т.д. |
| Я тоже пользуюсь этим методом с 1996 года ! Но в данном случае имеется всего 4 поля. И Пашин метод лучше для этого варианта. Красивая картинка. На чем сделано: МиниГуи или FiveWin ?
|
|
|
|
| Администратор
|
Пост N: 2345
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.04.12 09:49. Заголовок: ММК пишет: Пользуюс..
ММК пишет: цитата: | Пользуюсь именно этим методом :) Берем базу с разными полями (числ., стр., дата...) .Хочется в ней сделать какую-то выборку, Причем сразу может быть и не ясны конкретные "рамки" . Другими словами ставим один "фильтр" потом по рузультату второй и т.д. ( кстати , временный условный индекс создается только раз, далее в него просто добавляются условия ) Вот на картинке бровс с базой с выбранным индексом по коду. Можно "щелкнуть" по наменованию -индекс сменится. Теперь выбираем любое интересующее нас поле и по правой клавише мыши выбираем условие выборки .К примеру больше нуля. Вот один фильтр :) Теперь повторяем операцию и берез значение меньше 10. Вот уже второй ... Становимся на другое поле ... и т.д. Все наглядно и быстро Приблизительно так... |
| Это все-таки немного другое, custom-индекс это не тоже самое, что индекс с условием for. Но зато в коде наглядно видно, как строится такой индекс: посредством dbeval, то есть выборки всех до единой записей таблицы. Такой способ быстрым быть не может, наоборот, это самый медленный способ из всех возможных. Единственное его преимущество - это то, что после построения такого индекса записи, которые присутствуют в индексе, будут выбираться быстро. Преимущество custom-индекса перед индексом с for то, что при построении второго выполняется сортировка ключей, а первого - ключи просто добавляются в индекс, что немного быстрее.
|
|
|
|
| постоянный участник
|
Пост N: 88
Зарегистрирован: 29.05.10
|
|
Отправлено: 14.04.12 10:25. Заголовок: Pasha пишет: Это вс..
Pasha пишет: цитата: | Это все-таки немного другое, custom-индекс это не тоже самое, что индекс с условием for. Но зато в коде наглядно видно, как строится такой индекс: посредством dbeval, то есть выборки всех до единой записей таблицы. Такой способ быстрым быть не может, наоборот, это самый медленный способ из всех возможных. |
| Именно ,что другое :)Если бы речь шла о статике , то да. Мы ведь не сравниваем скорости отдельных операций , а ищем удобное решение для конкретной задачи . Может он и не самый быстрий , но уж точно не самый медленный. Каждый раз выборка идет в уже отобранной базе . Мы же не говорим о еденичной операции :)) Andrey пишет: цитата: | Но в данном случае имеется всего 4 поля. И Пашин метод лучше для этого варианта. |
| Может и лучше :) Смысл в том ,что строится один индекс , а не четыре. И не имеет значение сколько полей будет использоваться для выборки. Если я правильно понял Пашино предложение , чем больше полей тем больше индексов надо построить , а потом еще на них наложить те или иные выборки... Пользуюсь я и тем и другим способом ( скопе , индекс , фильтр ) , но при работе с таблицей , которая должна быть наглядной и выборки НЕ ПРЕДСКАЗУЕМЫ это самый оптимальный вариант :) Хотя ,если что-то еще придумаете будет очень интересно :)) Да и не надо забывать ,что речь идет о достаточно маленьких базах. Написано на FWH
|
|
|
|
| постоянный участник
|
Пост N: 2167
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.04.12 11:09. Заголовок: ММК пишет: Да и не ..
ММК пишет: цитата: | Да и не надо забывать ,что речь идет о достаточно маленьких базах. |
| Это уж точно. Еще это и более простой способ написания кода под такие задачки !
|
|
|
|
| Администратор
|
Пост N: 2346
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.04.12 13:37. Заголовок: ММК пишет: Именно ,..
ММК пишет: цитата: | Именно ,что другое :)Если бы речь шла о статике , то да. Мы ведь не сравниваем скорости отдельных операций , а ищем удобное решение для конкретной задачи . Может он и не самый быстрий , но уж точно не самый медленный. Каждый раз выборка идет в уже отобранной базе . Мы же не говорим о еденичной операции :)) |
| Маленький совет: перед dbeval делать dbSetOrder(0) Тогда выборка записей будет последовательной, что немного быстрее, чем с использованием индекса. А если выборка идет из файла, открытого по сети - то намного быстрее, так как не выполняется блокировка индекса, которая может замедлить выборку в разы. А насчет сортировки в custom индексе я оказался неправ - там тоже сортировка делается.
|
|
|
|
| постоянный участник
|
Пост N: 89
Зарегистрирован: 29.05.10
|
|
Отправлено: 14.04.12 14:19. Заголовок: Pasha пишет: Малень..
Pasha пишет: цитата: | Маленький совет: перед dbeval делать dbSetOrder(0) |
| За маленький совет -большое спасибо! :)))
|
|
|
Ответов - 26
, стр:
1
2
All
[только новые]
|
|