Главная страница
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.011 c
4-100513
Rouse_
2003-02-02 16:56
2003.03.31
Закрытие приложения


14-100426
Sergy
2003-03-13 12:00
2003.03.31
ftpd.borland.com


14-100381
JibSkeart
2003-03-07 17:49
2003.03.31
Может кто то видел но все же это довольно круто


7-100484
Lomman
2003-02-05 07:38
2003.03.31
Автоматизация


3-100158
me2
2003-03-12 18:32
2003.03.31
Обновление результатов запроса