Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.10.2012, 14:52
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию Select с параметрами и Like

Здравствуйте!
Помогите добрые знающие решить проблемку. Ситуация такая: имеем ADOConection, ADOQuery,DataSource для таблички в access-овской базе. Смотрим мы на эту базу через DBGrid. На форме, над DBGrid-ом располагается Edit. Необходимо, чтобы при вводе текста в Edit, ADOQuery отсекал ненужное. Т.е. ввожу, к примеру, 'к' в Edit и из просмотра удаляются все записи, в которых поле n_u не начинается с 'к'.
Мудрил вот с кодом:
Код:
form4.Query_oborud.Active := false;
form4.Query_oborud.SQL.Clear;
form4.Query_oborud.SQL.Add('SELECT * from oborud WHERE ur1=:ur1 and ur2=:ur2 and ur3=:ur3 and n_u Like <что тут должно быть?> ');
   form4.Query_oborud.Parameters.ParamByName('ur1').Value := ur1;
   form4.Query_oborud.Parameters.ParamByName('ur2').Value := ur2;
   form4.Query_oborud.Parameters.ParamByName('ur3').Value := ur3;
   form4.Query_oborud.Active := true;

В случае с ADOTable применяю такое, к примеру:
Код:
   Form4.Table_EK.Filtered := false;
  Form4.Table_EK.Filter := Format('[n_u] like '+#39+'%s%%'+#39, [Form4.Edit1.Text]);
  Form4.Table_EK.Filtered := True;

а как реализовать Like в динамически формирующемся запросе, как к текстовой строке прилепить % в запросе?
Ответить с цитированием
  #2  
Старый 25.10.2012, 18:58
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

для поиска вида "Т.е. ввожу, к примеру, 'к' в Edit и из просмотра удаляются все записи" лучше применить событие OnChange указаного эдита и событие ADOQuery.Filter
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 25.10.2012 в 20:56.
Ответить с цитированием
  #3  
Старый 25.10.2012, 19:24
enslaver enslaver вне форума
Прохожий
 
Регистрация: 12.10.2012
Сообщения: 2
Репутация: 10
Сообщение

Поддерживаю!
И на будущее WHERE в SQL запросе имеет те же значения что и Filter .
Разница только в том что одно фильтрует на твоем компе а другое на сервере!
т.е. ваша строка будет выглядеть так
Код:
form4.Query_oborud.SQL.Add('SELECT * from oborud WHERE ur1=:ur1 and ur2=:ur2 and ur3=:ur3 and ' + Format('[n_u] like '+#39+'%s%%'+#39, [Form4.Edit1.Text]));

Последний раз редактировалось enslaver, 25.10.2012 в 19:27.
Ответить с цитированием
  #4  
Старый 25.10.2012, 20:54
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию

Большое спасибо за ответы! Осмысливаю...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025