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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 12:09   #1
Дмитрий Гриб
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 10
Подмигивание Динамический фильтр на Delphi 7

Огромная просьба, помогите составить SQL запрос в Delphi 7. Задача состоит в следующем: есть база данных с полями Razdel (тип string), Org (тип string), Num (тип string); им соответствуют поля ввода: FindEdit, EditOrg, EditNomer. Хочу создать динамический фильтр по этим полям, знаю как сделать для одного поля:

В обработчике события при нажатии кнопки “Найти” пишу :
FindQuery.Active:=false;
FindQuery.Parameters.ParamByName(‘R azd’).Value:=FindEdit.Text;
FindQuery.Active:=true;

В ADOQuery в пункте SQL прописываю:
SELECT *
FROM Dogovor1 // Dogovor1- это название таблицы
WHERE Razdel LIKE: Razd

Еще описываю переменную Razd в разделе Parameters, присваиваю ей начальное значение, тип.
Это работает…
А что дописать, чтоб получилось для трех полей, и фильтр был динамическим?
Дмитрий Гриб вне форума Ответить с цитированием
Старый 01.06.2009, 12:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
ADOQuery:='SELECT * FROM Dogovor1 WHERE 
Razdel LIKE '+QuotedStr(FindEdit.Text)+
' AND ORG LIKE '+QuotedStr( EditOrg.text)+
' AND Num LIKE '+QuotedStr( EditNomer.text)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2009, 12:34   #3
Дмитрий Гриб
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 10
По умолчанию

Спасибо!! Сейчас попробую!!!!
Дмитрий Гриб вне форума Ответить с цитированием
Старый 03.06.2009, 15:34   #4
Дмитрий Гриб
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 10
По умолчанию

Подскажите пожалуйста, а как будет выглядеть данный запрос в случае с параметром? Заранее спасибо!
Дмитрий Гриб вне форума Ответить с цитированием
Старый 03.06.2009, 15:54   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не использую такой изврат но надо полагать так:
Код:
FindQuery.Active:=false;
FindQuery.Parameters.ParamByName(‘Razd’).Value:=FindEdit.Text;
FindQuery.Parameters.ParamByName(‘Org’).Value:=EditOrg.Text;
FindQuery.Parameters.ParamByName(‘num’).Value:=EditNomer.Text;
FindQuery.Active:=true;

ADOQuery.SQL.text:='SELECT * FROM Dogovor1 WHERE 
Razdel LIKE :Razd AND ORG LIKE :Org AND Num LIKE :num';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2009, 15:58   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

кстати, это не изврат

Код:
SELECT * 
FROM Dogovor1 
WHERE Razdel LIKE :p0
  AND ORG LIKE :p1
  AND Num LIKE :p2

ParamByName('p0').Value := FindEdit.Text;
ParamByName('p1').Value := EditOrg.text;
ParamByName('p2').Value := EditNomer.text;
изврат - это конкатенировать запрос с переменными
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр Инночка Помощь студентам 4 30.04.2008 20:27
[Delphi] TStringGrid + динамический список dee_lv Помощь студентам 3 27.04.2008 03:00
Фильтр в базе Versifikator БД в Delphi 3 18.04.2008 10:35
Динамический список...на Delphi Olgasato Помощь студентам 6 11.12.2007 15:02