![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компоненты для работы с клиент-серверными базами данных
maratvg © (2004-02-19 12:47:00)Хочу узнать кто какими визуальными компонентами, аналогами TDBLookupCombobox, пользуется.
Интересует такая возможность компоненты: в выпадающем списке начинаем что-то искать (по первым буквам или по подстроке) и компонент не пытается вытянуть всю таблицу на клиента чтобы потом поискать через Locate, а переформировывает SQL-запрос, отправляет его серверу и отображает первые (сколько влезает в выпадающий список) записи.
Reindeer Moss Eater (2004-02-19 14:16:00) [1]а какие идеи по переформировыванию запроса?
Да простые идеи.
Изначально видим грид (в который фетчится только влезаемое в него)
Ввод пользователя рисуется в инплэйс эдиторе (например в заголовке столбца).
На событие выхода из эдитора - переформирование секции WHERE и вперед, запрос на сервер.
Romkin (2004-02-19 14:10:00) [2]У меня был случай, когда приходилось тянуть много: справичник ФИО. Ничего, это вопрос интерфейса, выглядит как закладки с буквами по алфавиту. Причем буквы - из таблицы, и триггера следят, как только на эту букву больше чем 2048 записей - делается сплит. Было, например, A, появилось Aa и Ан, например :))
Ну и поле быстрого поиска, сначала открывает вкладку, потом идет по ней.
Результат - мгновенный выбор, практически без задержек.
maratvg (2004-02-19 13:59:00) [3]Zacho>
Показывать полную версию справочника не всегда удобно.
Я предпочитаю такое интерфейсное решение: если LookupCombobox и рядом Label. Если пользователь лезет в комбобокс, то там справочник (пусть даже он древовидный должен быть) в линейном виде, если пользователь ткнул в Label, то вызывается полная версия справочника.
Reindeer Moss Eater> а какие идеи по переформировыванию запроса?
Reindeer Moss Eater (2004-02-19 13:49:00) [4]Нормальная, кстати затея.
Если конечно не переформировывать запрос на каждое нажатие клавиши...
Zacho (2004-02-19 13:46:00) [5]Гораздо лучше сделать интерфейс так, что бы пользователю и не приходило в голову выбирать все записи. Многоуровневые классификаторы там и т.п. Посмотри хотя бы на 1С.
maratvg (2004-02-19 13:42:00) [6]Johnmen>
а по-вашему гораздо лучше 10 тысяч записей из справочника тянуть, чтобы потом одну выбрать? Это не лезет в рамки клиент-серверной архитектуры.
Anatoly Podgoretsky>
Interbase.
Я считаю, что можно искать и по одной букве, ведь реально с сервера будет приходить максимум 10 записей (притом обычно это 1 числовое поле, одно строковое). В принципе, если пользователь - мазохист, то он может вообще не фильтровать записи, а по списку стрелкой вниз идти, но это не важно. Меня интересовало: может кто-то такое уже реализовывал, а если нет, то как из таких ситуаций можно выкрутиться?
Anatoly Podgoretsky (2004-02-19 13:17:00) [7]A lookup тут причем?
Делай запрос только тогда когда у тебя не меньше трех букв в условии для запроса он и не будет пытаться вытянуть всю таблиц, а если делать по одной букве то будет очень много, но тоже не все.
А база данных у тебя есть?
Johnmen (2004-02-19 13:05:00) [8]В общем и целом. Таких компонент нету. Поскольку никому не приходило в голову максимально затормозить работу...:)
Впрочем, несложно написать самому и проверить жизнеспособность...