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

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

Поиск в БД [D5, Paradox]


АндрейБ ©   (2003-03-12 02:38:00) 

Скажите, как будет быстрее произвести поиск в БД. По вторичному индексу (6 полей разного типа) с помощью FindKey или по не индекированному автоинкрементному полю с помощью Locate?

Вообще нужно сделать следующее: после добавления записи в БД (SQL-запрос) нужно в таблице подсветить эту запись. Может быть есть более простые варианты решения?


АндрейБ   (2003-03-12 14:11:00) [1]

>С Locate в общем случае да, но с перебором и фильтрацией это ("отключка" грида) актуально.

Это понятно. Все, всем спасибо.


MsGuns   (2003-03-12 13:56:00) [2]

>АндрейБ (12.03.03 13:45)
>MsGuns © (12.03.03 12:52)
>но при условии отключения датасета/датасорса

>А зачем? Ведь Locate находит нужную запись и устанавливает на неё курсор. Что мне в общем-то и требуется.

С Locate в общем случае да, но с перебором и фильтрацией это ("отключка" грида) актуально.



АндрейБ   (2003-03-12 13:45:00) [3]

>MsGuns © (12.03.03 12:52)
но при условии отключения датасета/датасорса

А зачем? Ведь Locate находит нужную запись и устанавливает на неё курсор. Что мне в общем-то и требуется.

>Соловьев © (12.03.03 12:55)
Ok.


Соловьев   (2003-03-12 12:55:00) [4]

Если конечно SQL то запоминай ключевое поле в како-то переменной и собитии грида DrawColumnCell подсвечивать(подчеркивать, выделять курсивом и т.д.)


MsGuns   (2003-03-12 12:52:00) [5]

Вторичные индексы убыстряют поиски и выборки, однако если в этот индекс входит, к примеру, 8 полей CHAR(255), то такой индекс скорее будет тормозить, чем ускорять.
Если курсор небольшой (порядка сотни записей), то Locate вполне неплох, но при условии отключения датасета/датасорса (т.е. чтоб грид не реагировал на перемещения по НД). При буферизации в парадоксе достаточно быстро работает даже простой перебор.
Если курсор здоровый (сотни, тысячи и т.д.), то, ИМХО, самый быстрый способ поиска по неключевым полям - выборка SELECT в SQL, далее определяешь из рез.НД ID записи и уже по ней позиционируешь курсор, отображаемый в гриде.
Опять же в парадоксе неплохо работает фильтрация. Т.е. для поиска тупо устанавливаешь соотв.фильтр, активизируешь его (с предварительной "отключеой" грида, ессно), затем фильтр отключаешь (грид активируешь)

А вообще здоровый курсор, ИМХО, результат недостаточно тщательной проработки модели БД либо интерфейса клиента.


Соловьев   (2003-03-12 12:50:00) [6]

Я тебя как раз понял. Прочитай в хелпе о статусе записей:
Value Meaning

rtModified Modified records are visible.
rtInserted Inserted records are visible.
rtDeleted Deleted records are visible.
rtUnmodified Unmodified records are visible.


АндрейБ   (2003-03-12 12:44:00) [7]

>Соловьев © (12.03.03 12:28)

Не понял! ПО-моему вы меня не так поняли.
У меня усть грид, в котором отображаются все записи. При добавлении открывается новая форма, в обычные edit"ах заносятся значения и делается SQL-запрос. После этого форма закрывается и теперь мне надо подсветить только что добавленную запись. Пока только предполагаю либо делать поиск по всем полям либо узнать номер поля автоинкремента и искать по нему.

И ещё, я тут начитался, что автоинкрементное поле в Paradoxe глючное, может кто посоветует замену, или все Ok?


Соловьев   (2003-03-12 12:28:00) [8]

Можно до ApplyUpdate проверять статус записи, и в собитии грида DrawColumnCell подсвечивать(подчеркивать, выделять курсивом и т.д.)


АндрейБ   (2003-03-12 12:23:00) [9]

Мастера, помогите. Горю.


Наверх

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