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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2013, 23:11   #1
Danko
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 13
По умолчанию Delphi и БД

Здравствуйте, товарищи программисты. Программка, созданная в Delphi, соединяется с базой данных, созданной в Access, с помощью технологии ADO. Таблица отображается в DBgrid. Есть несколько radiogroup, в которых выбирается значение того или иного поля таблицы, а так же, есть edit, в поле которого вводится требуемое условие для поиска по определенному полю таблицы. Т.е., есть БД, в которой содержится различные вакансии. В radiogroup мы можем выбрать, например, образование работника (среднее, высшее) и при вводе в edit требуемую профессию, в таблице должны отразиться лишь те варианты, которые удовлетворяют не только заданной профессии, но и образованию (указанному в радиогруппе). Проблема в том, что у меня не получается это реализовать. По отдельности все работает, а вместе - нет. Вот часть кода, отвечающая за поиск:
Код:
if (radiogroup2.ItemIndex= 2) then
educt:='Среднее';
ADOQUery1.Active:=false;
ADOQUery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM adbook WHERE (prof LIKE "'+edit1.Text+'%") and '+
'(educ LIKE "'+educt+'%")');
ADOQUery1.Active:=true;
Какие есть варианты для решение данной проблемы?

P.S. Возможно, есть способы, позволяющие постепенно обновлять таблицу? Т.е., сделав один запрос, следующий запрос выполнялся бы в той таблице, которая сформировалась при первом запросе?
Danko вне форума Ответить с цитированием
Старый 09.04.2013, 08:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не работает скорее всего из-за "
Код:
ADOQuery1.SQL.Add('SELECT * FROM adbook WHERE (prof LIKE '+QuitedStr(edit1.Text+'%')+') and '+
'(educ LIKE '+QuotedStr(educt+'%')+')');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2013, 09:59   #3
netpolice
Форумчанин
 
Аватар для netpolice
 
Регистрация: 14.02.2013
Сообщений: 222
По умолчанию

А чем Вам, фильтры ненравятся?
ADOQuery1.Filter

Да и я бы сначала запрос какой нить переменной присвоил, а потом в add подставлял,


Код:

S:='SELECT * FROM adbook WHERE (prof LIKE '+QuitedStr(edit1.Text+'%')+') and '+'(educ LIKE '+QuotedStr(educt+'%')+')';

ADOQuery1.SQL.Add(S);
Быстрее ошибки выявятся, заодно и посмотреть можно какой фактически запрос передается.

Последний раз редактировалось netpolice; 09.04.2013 в 10:03.
netpolice вне форума Ответить с цитированием
Старый 09.04.2013, 20:20   #4
Danko
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 13
По умолчанию

Спасибо за ответы!
Stilet, к сожалению Ваш вариант у меня не сработал.
netpolice, действительно, про фильтры я как то не подумал
В итоге реализовал я задуманное с помощью фильтров, но возникла другая проблема.
В программе имеется кнопка, которая обновляет таблицу, со следующим кодом:
Код:
ADOQUery1.Active:=false;
ADOQUery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM adbook');
ADOQUery1.Active:=true;
Раньше код отлично справлялся со своей задачей, но после применения фильтрации возвращаются уже отфильтрованные данные, а не исходные. Не могу понять в чем причина Возможно, кто-то знает решение данной проблемы?
Danko вне форума Ответить с цитированием
Старый 09.04.2013, 20:51   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

допишите в этот код выключение фильтрации:
Код:
ADOQUery1.Active:=false;
ADOQUery1.Filtered:=false;
ADOQUery1.Filter := '';
ADOQUery1.SQL.Text :=  'SELECT * FROM adbook';
ADOQUery1.Active:=true;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54