Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2009, 13:45   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но надо отключить визуальный эффект поиска по базе
А в чем он выражается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2009, 13:47   #12
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Попробуй так:
Сначала отключаешь визуальный эффект на сетке
Query_list.DisableControls;
показываваешь модальную форму с сообщением "Идет поиск"
Потом выполняешь поиск
Потом в конце пишешь закрытие данной модальной формы.
И делаешь Query_list.EnableControls;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 22.06.2009, 16:24   #13
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

Цитата:
но надо отключить визуальный эффект поиска по базе
Цитата:
А в чем он выражается?
в таблице(grid) бежит строка по полям до конца базы
bosston вне форума Ответить с цитированием
Старый 22.06.2009, 22:57   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
в таблице(grid) бежит строка по полям до конца базы
сделай так, как описал ArtInt в пост #12
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.06.2009, 15:42   #15
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

Цитата:
Потом выполняешь поиск
эту процедуру прописывать в основной форме или вызываемой?
bosston вне форума Ответить с цитированием
Старый 23.06.2009, 15:47   #16
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

вот модуль, где вставить?
Цитата:
If ab_nomer_find = '' then
begin
ShowMessage('Вы не ввели номер для поиска!');
exit;
end;
RecordNumber := Query_list.RecNo;
Query_list.Locate('Id_avto', CurrentID,[]);
Query_list.Next;
while not Query_list.Eof do
begin
//Query_list.DisableControls;
if Query_list.FieldByName('Id_klient') .AsString = ab_nomer_find then //достаточно совпадения первых букв
begin
CurrentID := Query_list.FieldByName('Id_avto').A sInteger;
Query_list.Locate('Id_avto', CurrentID, []);
if Panel_os.ActivePageIndex = 0 then
DBGrid1.SetFocus;
Query_list.EnableControls;
Exit;
end;
Query_list.Next;
end;
//если уже конец таблицы
if Query_list.Eof then
begin
Beep;
ShowMessage('Поиск окончен');
Query_list.Locate('Id_avto', CurrentID, []);
if Panel_os.ActivePageIndex = 0 then
DBGrid1.SetFocus;
ab_nomer_find:= '';
end;
Query_list.RecNo:= RecordNumber;
в этой ситуации все работает как надо, и курсор возврацается на ту позицию с которой начался поиск, и после поиска доступ к таблице есть,
а если я вставляю отключение эффектов, а потом включаю после установки текущей записи, доступ к гриду закрыт
bosston вне форума Ответить с цитированием
Старый 23.06.2009, 16:22   #17
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Есть несколько замечаний по реализации:
1. Как заметил, для поиска делаешь цикл. Не очень хороший вариант, так лучше через SQL запрос или фильтр, при большом количестве записей быстрее будет.
2. Query_list.DisableControls желательно располагать до начала цикла, а Query_list.EnableControls после окончания цикла.
3. Можно ShowMessage заменить просто на форму и вызывать как модальную MyForm.ShowModal;
4. Запоминание записи можно сделать через закладку Bookmark. Но это необязательно.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 24.06.2009, 08:01   #18
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

Цитата:
1. Как заметил, для поиска делаешь цикл. Не очень хороший вариант, так лучше через SQL запрос или фильтр, при большом количестве записей быстрее будет.
мне и нужен перебор всех записей, и циклически переходить от первой удовлетворяющей условию до последней.
bosston вне форума Ответить с цитированием
Старый 25.06.2009, 10:40   #19
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

поиск сделал, спасибо всем за подсказки.
а теперь хочу, чтобы во время цикла появлялось окно с сообщением, но цикл не прерывался, а то у меня при появлении модального окна цикл останавливается до тех пор, пока не закрою это окно.
bosston вне форума Ответить с цитированием
Старый 25.06.2009, 23:10   #20
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Тут наверное придется делать через потоки и включить там синхронизацию, во всяком случае так делал для вывода в progressbar текущего состояния выполненной работы, а в это время например выполнялось считывание всех отобранных записей и запись их в документ.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по базе данных ERASERROR БД в Delphi 4 14.03.2008 16:34
Поиск по базе Антон Шестаков БД в Delphi 1 22.01.2008 20:32
Последовательный поиск в БД Nowichok БД в Delphi 7 10.02.2007 21:55
Поиск по базе Таня84 БД в Delphi 3 09.02.2007 10:53