![]() |
|
![]() ![]() ![]() |
|
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Как организовать поиск в базе данных таким образом, чтобы пользовательно по нажатию любой клавиши видел, что активной стала та запись, в которой какое-либо поле начинается с той буквы, которую нажал пользователь? Я пишу так:
Работает только при первом нахождении записи. после второго нажатия на эту же клавишу активной остатся старая запись, а следующую запись с такой же первой буквой не становится активной. Как испрвить? Буду рад всем предложениям! ![]() -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
А если так:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Alex, так как ты предложил работать тоже не будет, так как ключ поиска loPartialKey предполагает и добавление к нему loCaseInsensitive. Т.е. Дельфи сама приписывает это значение к ключу loPartialKey (прочитал об этом в книге). Так что вопрос по прежнему остается открытым!
![]() -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 1 Всего: 102 |
хочется - закрывай=)
а вообще Locate ищет первую запись не от текущей, а с первой, по этому ничего не выйдет -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Sharl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 16.8.2003 Репутация: нет Всего: нет |
Можно по другому подойти ,использовав все время обновляемую
TTable.Filter |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 1 Всего: 102 |
Sharl ой незнаю... при нажатии на педаль каждый раз делать:
1. DisableControls//отключаем контролы 2. Filter ( причем я слабо себе представляю как ты опишешь это в фильтре) //выполняем поиск необходимой записи 3. x :=KeyFieldValue; //присваеваем х - данные ключевого поля, (без него вообще дохлый номер) 4. Filtered := False; //отключаем фильтр 5. Loacte (x); // находим по ключевому полю требуемую запись 6. EnableControls //включаем контролы если в БД куча записей ты представляешь сколько время на это уйдет, а если данные уже отображаются отфильтрованными, че тогда?! Наверно правильней при нажатии создавать SQL-запрос (вот тока в запросах несилен, незнаю мона так делать или нет), в который поместить все записи содержашие данную букву, при повторном нажатии перемещать указатель скула на сл.запись и передвигать его аналогично в основной БД. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
а я бы подглядел как это делает EhLib в своем поиске
![]() -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Я тоже отключаю такую возможность, в том случае если много записей, т.к. начинает тормозить. Добавлено @ 17:44 а так работает нормально
Это сообщение отредактировал(а) dsergey - 10.2.2005, 17:45 |
||||
|
|||||
Sharl |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 16.8.2003 Репутация: нет Всего: нет |
z-END Да. Наверно для решения этой задачи лучше использовать SQL запрос может быть примерно таким
А потом в проге делать
Еще один метод Можно использовать Query1(или Table1).Database.StartTransaction; перед переходом Table1.Delete; и снова Locate, В конце работы с поиском Query1.Database.Rollback; Но наверно метод второй более дикий по отношению к user-у? |
||||||
|
|||||||
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Спасибо всем за советы, попробую что-нибудь придумать. Посмотрим, что из этого получится...
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Нуно использовать принцип пробежки по все полям с использованием фанкции POS
Процедура поиска по всем полям
|
|||
|
||||
Sharl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 16.8.2003 Репутация: нет Всего: нет |
Bce отлично , но проблематично
скажем для Access-a надо ручками пересчитать и каждый раз сканировать с первой записи или поставить TBookmark- и |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |