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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2009, 11:44   #1
sashaslam
Пользователь
 
Регистрация: 07.07.2008
Сообщений: 24
По умолчанию Оптимизация фильтрации Adoquery

База данных около 100000 записей...
через эдиты делаю поиск записей
процедура
procedure TForm1.ADOQuery1FilterRecord(DataSe t: TDataSet; var Accept: Boolean);
begin
accept:=true;
Accept:=AnsiLowerCase(copy(ADOQuery 1IDKOD.asstring, 1, Length(edit1.Text)))=AnsiLowerCase( edit1.Text);
if (Edit1.Text <> '') and (Accept) then
Accept := AnsiPos(Edit1.Text, ADOQuery1IDKOD.AsString) > 0;
if (Edit7.Text <> '') and (Accept) then
Accept := AnsiPos(Edit7.Text, ADOQuery1ObjName.AsString) > 0;
if (Edit9.Text <> '') and (Accept) then
Accept := AnsiPos(Edit9.Text, ADOQuery1nam.AsString) > 0;
if (Edit11.Text <> '') and (Accept) then
Accept := AnsiPos(Edit11.Text, ADOQuery1fil_kodu.AsString) > 0;
end;
может в чем то ошыбка..... или как оптимизировать фильтрацию..... все работает но грузит и память и процесор на 100
sashaslam вне форума Ответить с цитированием
Старый 18.09.2009, 12:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так и будет..

хотите быстрее - по значениям Edit'ов формируйте SQL запрос и выполняйте его. (кстати, разумным было его повесить на отдельную кнопочку - "Искать")
хотя, ОГРОМНОГО прироста скорости это может и не дать! операция поиска вхождения подстроки в строку в СУБД весьма небыстрая (а ещё и плохо индексируемая движком БД)

СУБД у Вас какая?

Последний раз редактировалось Serge_Bliznykov; 18.09.2009 в 12:24.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.09.2009, 12:28   #3
sashaslam
Пользователь
 
Регистрация: 07.07.2008
Сообщений: 24
По умолчанию

спс
access
sashaslam вне форума Ответить с цитированием
Старый 18.09.2009, 13:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию пример поиска по заданным критериям

sashaslam,
да не за что!

а вот и пример.
пользователем задаются два параметра.
Оба значения выбираются в запросе как ВХОЖДЕНИЕ в поле БД...
Код:
procedure TForm1.btFindClick(Sender: TObject);
var
 sSQL : string;
begin
 AdoQuery2.Close;
 sSQL := '';
 if edParam1.Text<>'' then
   sSQl := ' ([Код] like '
         +QuotedStr('%'+edParam1.Text+'%')+')';
 if edParam2.Text<>'' then begin
   if length(sSQL)>0 then sSQl := sSQl + ' AND ';
   sSQl := sSQl + ' ([Nomer] like '
         +QuotedStr('%'+edParam2.Text+'%')+')';
 end;
 if length(sSQL)>0 then
   {поиск только нужных записей}
   AdoQuery2.SQL.Text :=
     'SELECT * FROM LIST WHERE '+sSQL
 else
   {если условия не заданы, то все записи берём}
   AdoQuery2.SQL.Text :=
     'SELECT * FROM LIST';
 AdoQuery2.Open;
 laCount.Caption := 'Количество записей: '+
    IntToStr(ADOQuery2.RecordCount);

end;
Вложения
Тип файла: rar AdoFind1.rar (264.1 Кб, 18 просмотров)

Последний раз редактировалось Serge_Bliznykov; 18.09.2009 в 13:25.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.09.2009, 14:01   #5
sashaslam
Пользователь
 
Регистрация: 07.07.2008
Сообщений: 24
По умолчанию

большое спасибо!!!!!!
был занят...
буду исправлять.....
sashaslam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество записей adoquery после фильтрации ??? sashaslam БД в Delphi 9 18.09.2009 22:30
Подскажите по фильтрации полей wadzik БД в Delphi 2 09.09.2009 11:33
ошибка при фильтрации Screame Microsoft Office Excel 31 14.08.2009 10:10
ошибка фильтрации Dozent Общие вопросы Delphi 5 25.06.2008 22:52
Ошибка при фильтрации! Markus БД в Delphi 0 05.05.2007 17:28