Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 48

Фильтрация по нескольким значениям из нескольких CheckListBox

10.02.2012, 15:18. Показов 2851. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица, заполнянемы по запросу
Delphi
1
SELECT * FROM ZAYAVKA;
Есть несколько чеклистбоксов.
По нажатию кнопки надо выбрать из таблицы записи по значениям нескольких чекбоксов.

Есть такой код

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TForm1.BitBtn1Click(Sender: TObject);
var n, s: string;
  i : integer;
  begin
  inherited;
  s := ' ';
  if CheckBox2.Checked then
  begin
    n := '';
    for i := 0 to CheckListBox1.Items.Count - 1 do
      if CheckListBox1.Checked[i] then n := n + ',' + inttostr(integer(CheckListBox1.items.objects[i]));
    if Length(n) > 1 then
    begin
      n[1] := ' ';
      if s <> '' then s := s + ' and ';
      s := s + ' IZAYAVKASTATUSID in (' + n + ')'
    end;
  end;
 
  if CheckBox3.Checked then
  begin
    n := '';
    for i := 0 to CheckListBox2.Items.Count - 1 do
      if CheckListBox2.Checked[i] then n := n + ',' + inttostr(integer(CheckListBox2.items.objects[i]));
    if Length(n) > 1 then
    begin
      n[1] := ' ';
      if s <> '' then s := s + ' and ';
      s := s + ' ISTAFFID IN (' + n + ')'
    end;
  end;
fDM.ADOQ_GET_Z.Close;
  fDM.ADOQ_GET_Z.Open;
  if s <> '' then
     fDM.ADOQ_GET_Z.SQL.Add('WHERE' + s);
Ничего не выбирает (показывает все пустое)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2012, 15:18
Ответы с готовыми решениями:

Фильтрация по нескольким значениям
Я хочу провести фильтрацию поля таблицы TDB по нескольким значениям. Есть Dbf1.Filter:='AVERAGESCORE = '+DBComboBox2.Text; Как...

AdoQuery И поиск по нескольким значениям
Добрый день Имеется у меня на форме ADOConnection1 который подключен к Бд, ADOTable1 которые подключен к ADOConnection1, DataSource1...

Обработка по нескольким значениям из ADOQuery (для выделенной в DBGrid строки)
Здравствуйте, возникли затруднения при выполнении определенной задачи в приложении. Есть небольшая БД, содержащая данные по...

10
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
10.02.2012, 16:02
Вы попробуйте после формирования текста SQL выдать его на экран или в лог и посмотрите, что получится.
0
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 48
10.02.2012, 16:30  [ТС]
я не знаю как это сделать -_-
0
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
10.02.2012, 19:23
кладете на форму компонент memo,
после формирования строки запроса записываете ее в мемо - сразу станет понятно где накосячили.
Delphi
1
memo1.lines.add(s);
1
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 48
10.02.2012, 23:01  [ТС]
Пабеда! Спасибо большое )
А не подскажете, как можно программно снять выделения в CheckListBox?
Как-то так? Если да, то что вместо многоточек?)
Delphi
1
2
for i := 0 to CheckListBox1.Items.Count - 1 do
      if CheckListBox1.Checked[i] then CheckListBox1.........
0
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
10.02.2012, 23:51
вроде, работает так

Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Btn1Click(Sender: TObject);
var i: Integer;
begin
    For i:=0 to checklistbox1.Items.Count-1 do
      begin
        If checklistbox1.Checked[i] then checklistbox1.Checked[i]:=False;
      end;
end;
1
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 48
11.02.2012, 00:07  [ТС]
Спасибо еще раз)
А не подскажете, что с датами может быть? У меня есть фильтр по дате:

Delphi
1
2
3
4
5
6
 if CheckBox1.Checked then
  begin
    if s <> '' then s := s + ' and ';
    s := s + '(' + ' DTCREATE >''' + DateToStr(DateTimePicker1.Date) + ''''
      + 'and' + ' DTCREATE <''' + DateToStr(DateTimePicker2.Date) + ''')';
      end;
Я проверила - запрос правильно пишет. Вот строчка запроса, которую выводит
Delphi
1
( DTCREATE >'03.02.2012'and DTCREATE <'10.02.2012')
Но выдает ошибку о несоответствии форматов.
В базе поле DTCREATE имеет формат короткой даты (dd.MM.yyyy)
DateTimePicker1.Date тот же формат.
В чем может быть дело?
0
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
11.02.2012, 00:13
Обычно такая проблема в несоответствии настроек самой системы windows.
Посмотрите в каком формате винда хочет видеть даты в региональных настройках
0
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 48
11.02.2012, 00:47  [ТС]
Даже если поставить региональные MM.dd.yy все равно ошибка..
Миниатюры
Фильтрация по нескольким значениям из нескольких CheckListBox  
0
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
11.02.2012, 01:43
выдавите тут строку sql запроса, которая получается (из memo блока скопируйте).
0
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 48
11.02.2012, 01:45  [ТС]
И снова пабеда!

Delphi
1
2
3
4
5
6
7
8
9
10
11
  begin
    if s <> '' then s := s + ' and ';
       s := s + 'INT ([DTCREATE])BETWEEN :date1 and :date2';
   end;
 
 ...
 
     fDM.ADOQ_GET_Z.Parameters.ParamByName('date1').DataType := ftDateTime;
     fDM.ADOQ_GET_Z.Parameters.ParamByName('date2').DataType := ftDateTime;
     fDM.ADOQ_GET_Z.Parameters.ParamByName('date1').Value:=trunc(DateTimePicker1.Date);
     fDM.ADOQ_GET_Z.Parameters.ParamByName('date2').Value:=trunc(DateTimePicker2.Date);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2012, 01:45
Помогаю со студенческими работами здесь

QSortFilterProxyModel фильтрация по нескольким значениям столбца
Есть модель. В одном из столбцов могут быть данные - 1, 2 или 3. Есть форма. На ней tableView, menuBar c добавленными Action типа...

Фильтрация DataGridView по нескольким значениям в одной строке
Есть дата грид со множеством столбцов однородных по содержимому (например ингредиенты для рецептов блюд), как сделать фильтрацию например...

Фильтрация datqagridView по нескольким параметрам, из нескольких столбцов
Здравствйте, собественно по названию понятен вопрос, есть таблица с 5 колноками и мне необходимо что бы производилась фильтрация по...

Фильтрация из нескольких столбцов таблицы по нескольким условиям!
Всех приветствую! Имеется файл MS Access, в нем таблица с 10-ю столбцами. Обращение к таблице через ADOTable. Искомое значение вводим...

Фильтр по нескольким значениям
Здравствуйте, возникла проблема с фильтрацией таблицы. Имеется грид и 6 комбобоксов. Задача: при выборе значений комбобоксов в любых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru