Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как побороть AdoDATASet?


saha ©   (2003-04-22 12:30:00) 

Привет!
Вот вопрос:
есть база mdb хочу сделать что бы в DBGrid при наборе, допустим, названия курсор плавно перемещался на ближайшую похожую запись (почти как в 1С).
Использую для подключения AdoDataSet. Метод locate прекрасно работает, но он ищет с самого начала и останавливается всегда на одной и той же записи, а дальше не ищет. Как его победить? Ну или может есть другие способы.


KoluChi   (2003-04-22 14:58:00) [1]

По-подробнее:
1. у тебя уже есть таблица1(набор данных), в которой ты хочешь искать бублики.
2. создаем другую таблицу2(набор данных), в которую выбираем идентификаторы бубликов, которые удовлетворяют условию.
SELECT BUBL_ID FROM BUBLS WHERE BUBLE_NAME LIKE FIND_TEX
3. в таблице1 переходим локейтом на напись где идентификатор бублика = BUBL_ID первой записи таблицы2.
4. затем при нажатии на кнопку "следующий", в таблице2 переходим на следующую запись и определяем BUBL_ID. В таблице1 позиционируем на запись с идентификатром BUBL_ID.


saha   (2003-04-22 14:29:00) [2]

\>KoluChi
а по-подробнее


KoluChi   (2003-04-22 14:27:00) [3]


> через select ясно, но база ~80 тыс записей, каждое новое
> обновление вызывает задержку. Да и все равно, допустим есть
> n товара - Бублик по 1.2 бублик по 1.3 и т.д. Если я сделаю
> locate, то он найдет мне первый, а как сделать что бы он
> еще и второй искал?


Locate не по бубликам, а по ID


Соловьев   (2003-04-22 14:00:00) [4]


> но база ~80 тыс записей, каждое новое обновление вызывает
> задержку.

????



> товара - Бублик по 1.2 бублик по 1.3 и т.д. Если я сделаю
> locate, то он найдет мне первый, а

select *
from table
where upper(name_tovar collate pxw_cyrl) like upper("БУБЛИК" collate pxw_cyrl)||"%"


Anatoly Podgoretsky   (2003-04-22 13:58:00) [5]

LIKE тебя не устроит, это конечно не поиска, а фильтрация, но быстро и удобно, все бублики будут в одном флаконе.


saha   (2003-04-22 13:52:00) [6]

через select ясно, но база ~80 тыс записей, каждое новое обновление вызывает задержку. Да и все равно, допустим есть n товара - Бублик по 1.2 бублик по 1.3 и т.д. Если я сделаю locate, то он найдет мне первый, а как сделать что бы он еще и второй искал?


KoluChi   (2003-04-22 13:22:00) [7]

Делаешь набор данных по запросу SELECT ID FROM WHERE FIELD = FINF_VALUE. А затем Locate по твоей таблице на найденным.


Наверх

Титульная страница Поиск, карта сайта Написать письмо