Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.31;
Скачать: CL | DM;

Вниз

Поиск в БД   Найти похожие ветки 

 
АндрейБ   (2003-03-12 02:38) [0]

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

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


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

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


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

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


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

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

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

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


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

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

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


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

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

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


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

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


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

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

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

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



 
MsGuns ©   (2003-03-12 13:56) [8]

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

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

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




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

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

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



Страницы: 1 вся ветка

Текущий архив: 2003.03.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
14-100421
Карелин Артем
2003-03-13 16:08
2003.03.31
Для тех, кто хочет работать за деньги.


3-100180
Explorer
2003-03-13 08:32
2003.03.31
Locate


1-100285
OlegM
2003-03-18 13:52
2003.03.31
case и string


1-100268
EagleOwl
2003-03-16 22:09
2003.03.31
Как запустить какую-нибудь программу из своей?


14-100450
sancho
2003-03-14 19:45
2003.03.31
Глупый вопрос...