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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2011, 20:07   #1
Alex Jordan
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 20
По умолчанию CheckBox отсеивание

Здраствуйте!!нужна помощь!!!хочу реализовать такую идею!у меня есть Бд в которой 9 категорий товаров,в каждой категории есть подкатегории(пример - категория Оборудование для Dj имеет 7 подкатегорий(Dj микшеры,Dj комплекты и т.д).Есть форма и DBGrid в котором выводиться весь товар одной категории!!и есть 7 CheckBox - я к примеру нажимаю на первый - мне выводит инфу про товары данной подкатегории!!!но если уже нажимаю на следующий CheckBox - то выводит инфу уже только про эту категорию!!!а мне нужно,чтобы я нажал на один CheckBox - вывелась инфа,нажал на еще один - к этой инфе добавилась еще и эта!!!!
В CheckBox пишу такой код:

Код:
procedure TForm2.sCheckBox1Click(Sender: TObject);
begin
if sCheckBox1.Checked=true then
begin
DataModule11.ADOQuery1.Active:=false;
DataModule11.ADOQuery1.SQL.Clear;
DataModule11.ADOQuery1.SQL.Add('Select * from [Товары] where [id_Подкатегории]=1 ');
DataModule11.ADOQuery1.Active:=true;
end
else
begin
DataModule11.ADOQuery1.Active:=false;
DataModule11.ADOQuery1.SQL.Clear;
DataModule11.ADOQuery1.SQL.Add('Select * from [Товары] ');
DataModule11.ADOQuery1.Active:=true;
end;
end;

Последний раз редактировалось Stilet; 24.05.2011 в 07:38.
Alex Jordan вне форума Ответить с цитированием
Старый 23.05.2011, 22:23   #2
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

http://programmersforum.ru/showthread.php?t=151606
Второй пост
Gulik вне форума Ответить с цитированием
Старый 23.05.2011, 23:38   #3
Alex Jordan
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 20
По умолчанию

это вообще не то что мне нужно!!!при чем здесь расширенный поиск!
Alex Jordan вне форума Ответить с цитированием
Старый 24.05.2011, 02:33   #4
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

А ты для начала вчитайся... А потом говори что и причем... Если советуют значит смотри... Там запросы есть которые тебе пригодятся в написании. Или тебе прогу готовую надо...
Gulik вне форума Ответить с цитированием
Старый 24.05.2011, 07:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm2.sCheckBox1Click(Sender: TObject);
var s:string;
begin
s:='';
if sCheckBox1.Checked then s:=s+'1';
if sCheckBox2.Checked then s:=s+',2';
if sCheckBox2.Checked then s:=s+',3';
...
if s='' then exit;
With DataModule11.ADOQuery1 do begin
 Active:=false;
 SQL.TExt:= 'Select * from [Товары] where [id_Подкатегории] in ('+s+')';
 Active:=true;
end;
...
Подойдет идея?

P.S. Нечего флудить. Это не поощряется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2011, 11:41   #6
Alex Jordan
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 20
По умолчанию

Теперь работает!!но появилась другая ошибка!!!теперь чтобы начало отсеивать всегда надо нажимать на 1 CheckBox - если на какой-нибудь другой то выдает ошибку!!пишет вот что - Ошибка синтаксиса(пропущен оператор) в выражении запроса '[id_Подкатегории] in (,2)".Тоесть чтобы мне увидеть какую нибудь категорию - мне нужно вначала нажать на первую - а потом уже на другую!!!
Alex Jordan вне форума Ответить с цитированием
Старый 24.05.2011, 11:49   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код
Код:
s:='';
if sCheckBox1.Checked then s:=s+'1';
if sCheckBox2.Checked then s:=s+',2';
if sCheckBox2.Checked then s:=s+',3';
чуть подправить
Код:
s:='';
if sCheckBox1.Checked then s:=s+'1,';
if sCheckBox2.Checked then s:=s+'2,';
if sCheckBox2.Checked then s:=s+'3,';
if s<>'' then s:=Copy(s,1,Length(s)-1);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.05.2011, 12:13   #8
Alex Jordan
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 20
По умолчанию

ООО теперь все работает - и еще маленький вопрос!!!а вот нажимаю на один чекбокс - отсеивает!!а как зделать чтобы когда я его выключаю мне всю таблицу выводило?
Alex Jordan вне форума Ответить с цитированием
Старый 24.05.2011, 18:20   #9
art-programs
Пользователь
 
Регистрация: 04.07.2009
Сообщений: 61
По умолчанию

Код:
if (not sCheckBox1.Checked) and (not sCheckBox2.Checked)
and (not sCheckBox1.Checked) then
SQL.TExt:= 'Select * from [Товары]';
и ещё 50 возможных вариантов можно придумать как сделать

куда подставить надеюсь не нужно объяснять?
art-programs вне форума Ответить с цитированием
Старый 25.05.2011, 19:05   #10
Alex Jordan
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 20
По умолчанию

Давай обьясни!!!!
Alex Jordan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CheckBox`ы new player Общие вопросы Delphi 3 15.10.2010 09:32
Ассемблер. Отсеивание емайл адресов sergey_k Помощь студентам 4 15.04.2010 20:37
накопление+отсеивание xxxxx0111 Microsoft Office Excel 4 09.02.2010 13:32
Отсеивание лишних строк V@mpir Общие вопросы Delphi 3 08.06.2009 16:35
DB checkbox Arsench PHP 6 09.10.2008 16:01