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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.05.2010, 13:23
Lord Lord вне форума
Прохожий
 
Регистрация: 20.05.2010
Адрес: TLT City
Сообщения: 7
Репутация: 10
По умолчанию Фильтрация с помощью ComboBox

Здравствуйте уважаемы кодеры!
Нужна ваша помощь, есть база данных созданная в Access и соединенная с программой через ADOConnection, соединение таблицы (название таблицы: студенты) происходит через ADOQuery, необходимо сделать фильтрацию через ComboBox по нескольким параметрам (учебная группа, специальность, отделение), Но я ума не приложу как это сделать и какой будет код. Я сначала хотел сделать через компонент DBLookupComboBox, но он мне начал редактировать записи. Подскажите как это сделать или в какую сторону копать.
P.S. Проект не коммерческий, я еще студент так что не судите строго
__________________
Windows 7 + Embarcadero RAD Studio 2010
Ответить с цитированием
  #2  
Старый 27.05.2010, 14:33
Lord Lord вне форума
Прохожий
 
Регистрация: 20.05.2010
Адрес: TLT City
Сообщения: 7
Репутация: 10
По умолчанию

Решение найдено, если кому то надо могу скинуть исходный код
__________________
Windows 7 + Embarcadero RAD Studio 2010
Ответить с цитированием
  #3  
Старый 27.05.2010, 21:50
MiXa777 MiXa777 вне форума
Прохожий
 
Регистрация: 10.11.2009
Сообщения: 15
Репутация: 10
По умолчанию

кинь мне, выложи где нибуть и кинь ссылку
Ответить с цитированием
  #4  
Старый 28.05.2010, 00:54
Lord Lord вне форума
Прохожий
 
Регистрация: 20.05.2010
Адрес: TLT City
Сообщения: 7
Репутация: 10
По умолчанию

Вид формы


Код процедуры
Код:
procedure TForm_filtr.Button1Click(Sender: TObject);
var s: string;
begin
begin
DataModule4.ADOQuery_student.Active:=False;
DataModule4.ADOQuery_student.SQL.Clear;
DataModule4.ADOQuery_student.SQL.Add('SELECT *');
DataModule4.ADOQuery_student.SQL.Add('FROM student');
if CheckBox1.checked then
s:=s+'name_group like '''+ComboBox1.Text+'''';
if CheckBox2.checked then
s:=s+'data_year_income LIKE '''+ComboBox2.Text+'''';
if CheckBox4.checked then
s:=s+'data_status LIKE '''+ComboBox4.Text+'''';
if CheckBox6.checked then
s:=s+'data_payment_method LIKE '''+ComboBox6.Text+'''';
if CheckBox7.checked then
s:=s+'private_country like '''+ComboBox7.Text+'''';
if CheckBox8.checked then
s:=s+'private_region LIKE '''+ComboBox8.Text+'''';
if CheckBox9.checked then
s:=s+'private_nationality LIKE '''+ComboBox9.Text+'''';
if CheckBox10.checked then
s:=s+'private_sex LIKE '''+ComboBox10.Text+'''';
if CheckBox11.checked then
s:=s+'educ_language LIKE '''+ComboBox11.Text+'''';
if CheckBox12.checked then
s:=s+'educ_level '''+ComboBox12.Text+'''';
if CheckBox13.checked then
s:=s+'data_admission LIKE '''+ComboBox13.Text+'''';
if CheckBox14.checked then
s:=s+'data_enrolled LIKE '''+ComboBox14.Text+'''';
if CheckBox15.checked then
s:=s+'data_certified LIKE '''+ComboBox15.Text+'''';
if CheckBox16.checked then
s:=s+'private_dorm LIKE '''+ComboBox16.Text+'''';
if CheckBox17.checked then
s:=s+'data_scholarship LIKE '''+ComboBox17.Text+'''';
if length(s)>0 then
DataModule4.ADOQuery_student.SQL.Add('WHERE '+s);
DataModule4.ADOQuery_student.Active:=True;
end;

Пояснение
Суть этой фильтрации в том что она может фильтровать не по 15 параметрам сразу, а допустим по 3, 4 (сколько вам нужно). Что бы фильтрация работала по нужному параметру нужно поставить галочку(значение True) на CheckBox
__________________
Windows 7 + Embarcadero RAD Studio 2010
Ответить с цитированием
  #5  
Старый 28.05.2010, 09:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Хотите сказать, что у вас правильно ограничение собирается по этому примеру? А где " AND " между элементами?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 28.05.2010, 12:00
Lord Lord вне форума
Прохожий
 
Регистрация: 20.05.2010
Адрес: TLT City
Сообщения: 7
Репутация: 10
По умолчанию

Да правильно собирается, изначально код был такой
Код:
begin
DataModule4.ADOQuery_student.Active:=False;
DataModule4.ADOQuery_student.SQL.Clear;
DataModule4.ADOQuery_student.SQL.Add('SELECT *');
DataModule4.ADOQuery_student.SQL.Add('FROM student');
DataModule4.ADOQuery_student.SQL.Add(WHERE name_group LIKE '''+ComboBox1.Text+''' and data_year_income LIKE '''+ComboBox1.Text+'''
и т.д но тогда фильтрация проходила если установить ВСЕ 15 параметров, если были установлены 3 параметра из 15 то фильтрация НЕ проходила. Мне подсказали такой выход из ситуации и он прекрасно работает
__________________
Windows 7 + Embarcadero RAD Studio 2010
Ответить с цитированием
  #7  
Старый 28.05.2010, 12:00
Lord Lord вне форума
Прохожий
 
Регистрация: 20.05.2010
Адрес: TLT City
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Хотите сказать, что у вас правильно ограничение собирается по этому примеру? А где " AND " между элементами?
Да правильно собирается, изначально код был такой
Код:
begin
DataModule4.ADOQuery_student.Active:=False;
DataModule4.ADOQuery_student.SQL.Clear;
DataModule4.ADOQuery_student.SQL.Add('SELECT *');
DataModule4.ADOQuery_student.SQL.Add('FROM student');
DataModule4.ADOQuery_student.SQL.Add(WHERE name_group LIKE '''+ComboBox1.Text+''' and data_year_income LIKE '''+ComboBox1.Text+'''
и т.д но тогда фильтрация проходила если установить ВСЕ 15 параметров, если были установлены 3 параметра из 15 то фильтрация НЕ проходила. Мне подсказали такой выход из ситуации и он прекрасно работает
__________________
Windows 7 + Embarcadero RAD Studio 2010
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter