Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
АндрейБ   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
3-100180
Explorer
2003-03-13 08:32
2003.03.31
Locate


3-100175
kalliopiy
2003-03-11 14:34
2003.03.31
TRxDBGrid


14-100392
Supreme 2
2003-03-13 18:21
2003.03.31
Помогите найти реферат


6-100367
AlexandrK
2003-02-07 15:26
2003.03.31
Проблема в передаче АТ команд на сотовый, (Motorola timeport)


7-100474
Chubais
2003-02-05 19:05
2003.03.31
Низкоуровневый доступ к диску





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский