Форум: "Базы";
Текущий архив: 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