Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 21.03.2020
Сообщений: 11

Фильтрация по нескольким полям с выпадающим списком

18.12.2020, 16:29. Показов 1020. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю курсовую работу в MS Access и столкнулся со следующей проблемой.
В моем приложении создана форма в которой есть 8 полей с выпадающим списком, к каждому из которых создан макрос на фильтрацию таблицы "преступники", например [Преступники].[Вид преступления]=[Формы]![Установление личности]![ВыборВидПреступления].
Подразумевается что по нажатию кнопки "поиск", должна происходить фильтрация по выбранным признакам, но после продолжительного поиска ответов на свою проблему не нашел ничего лучше чем применить макрос на нажатие кнопки
SQL
1
2
3
4
5
6
7
8
[Преступники].[Вид преступления]=[Формы]![Установление личности]![ВыборВидПреступления]
 AND [Преступники].[Шрамы]=[Формы]![Установление личности]![ВыборШрама]
 AND [Преступники].[Цвет глаз]=[Формы]![Установление личности]![ВыборЦветГлаз]
 AND [Преступники].[Телосложение]=[Формы]![Установление личности]![ВыборТелосложение]
 AND [Преступники].[Внешность]=[Формы]![Установление личности]![ВыборВнешность]
 AND [Преступники].[Татуировки]=[Формы]![Установление личности]![ВыборТатуировки]
 AND [Преступники].[Рост]=[Формы]![Установление личности]![ВыборРост]
 AND [Преступники].[Цвет волос]=[Формы]![Установление личности]![ВыборЦветВолос]
Но из-за длины макроса Access не дает его создать...
Что делать?
Миниатюры
Фильтрация по нескольким полям с выпадающим списком   Фильтрация по нескольким полям с выпадающим списком  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2020, 16:29
Ответы с готовыми решениями:

Фильтрация результатов формы по нескольким полям и полю со списком
Доброго времени суток! Понимаю, что вопросы по фильтрации поднимались не раз, но не знаю как решить проблему фильтрации либо одному из...

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

Фильтрация по нескольким полям
Есть БД в Access. На форме datagridview с данными о преподавателях. Нужно сделать поиск по всем полям(или по максимально возможному...

9
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
18.12.2020, 16:39
Цитата Сообщение от ganbgang Посмотреть сообщение
из-за длины макроса Access не дает его создать...
Что делать?
Использовать VBA.
0
1 / 1 / 1
Регистрация: 21.03.2020
Сообщений: 11
18.12.2020, 16:47  [ТС]
а можно как-то реализовать эту затею с помощью SQL запроса.
чтобы при нажатии кнопки выполнялся запрос на фильтрацию по данным из формы?
если да, то подскажите пожалуйста
0
385 / 86 / 16
Регистрация: 08.12.2012
Сообщений: 645
18.12.2020, 17:11
Цитата Сообщение от ganbgang Посмотреть сообщение
а можно как-то реализовать эту затею с помощью SQL запроса.
Сделать Запрос1, Запрос2 и потом Запрос3, где будут объединены Запрос1 и Запрос2. Тогда в одном Запросе длина не будет превышать 255 символов и во втором тоже, А в третьем и подавно.
P.S. Но хотелось бы образец БД увидеть, а не картинки.

Добавлено через 6 минут
Но лучше прислушайтесь к Capi, - это лучший вариант.
0
1 / 1 / 1
Регистрация: 21.03.2020
Сообщений: 11
18.12.2020, 17:13  [ТС]
Цитата Сообщение от matva Посмотреть сообщение
Но хотелось бы образец БД увидеть, а не картинки.
Прикрепляю
Вложения
Тип файла: rar Формы Спец. ИТ.rar (1.42 Мб, 4 просмотров)
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
18.12.2020, 18:00
Цитата Сообщение от matva Посмотреть сообщение
Сделать Запрос1, Запрос2 и потом Запрос3, где будут объединены Запрос1 и Запрос2. Тогда в одном Запросе длина не будет превышать 255 символов и во втором тоже, А в третьем и подавно.
Зачем это всё?
У запросов нет ограничения в 255 символов, текст запроса может иметь несколько тысяч знаков.

У ТС макрос получился слишком длинный. Написано же
Цитата Сообщение от ganbgang Посмотреть сообщение
из-за длины макроса Access не дает его создать
ganbgang,

Формируйте строку и используйте её для фильтра формы.
Как-то так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim S As String
S = "True "
If Not IsNull(ВыборВидПреступления) Then
 S = S & "AND [Вид преступления] = " & ВыборВидПреступления
End If
If Not IsNull(ВыборШрама) Then
 S = S & "AND Шрамы = " & ВыборШрама
End If
 
' и так далее...
 
Me.Filter = S
Me.FilterOn = Len(S) > 5
1
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
18.12.2020, 18:08
или вот так
Вложения
Тип файла: rar Формы Спец. ИТ.rar (1.23 Мб, 46 просмотров)
2
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
18.12.2020, 19:15
Цитата Сообщение от Capi Посмотреть сообщение
Как-то так:
как вариант
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim S As String
S = True
S = S & (" and [Преступники].[Вид преступления]=" + Me.ВыборВидПреступления)
S = S & (" and [Преступники].[Шрамы]=" + Me.ВыборШрама)
S = S & (" and [Преступники].[Цвет глаз]=" + Me.ВыборЦветГлаз)
S = S & (" and [Преступники].[Телосложение]=" + Me.ВыборТелосложение)
S = S & (" and [Преступники].[Внешность]=" + Me.ВыборВнешность)
S = S & (" and [Преступники].[Татуировки]=" + Me.ВыборТатуировки)
S = S & (" and [Преступники].[Рост]=" + Me.ВыборРост)
S = S & (" and [Преступники].[Цвет волос]=" + Me.ВыборЦветВолос)
Me.Filter = S
Me.FilterOn = Len(S) > 5
при условии что на событии нажатия кнопки Удалить фильтры будет висеть код

Visual Basic
1
2
3
4
5
6
7
8
Me.ВыборВидПреступления = Null
Me.ВыборШрама = Null
Me.ВыборЦветГлаз = Null
Me.ВыборТелосложение = Null
Me.ВыборВнешность = Null
Me.ВыборТатуировки = Null
Me.ВыборРост = Null
Me.ВыборЦветВолос = Null
2
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
21.12.2020, 01:09
Цитата Сообщение от snipe Посмотреть сообщение
на событии нажатия кнопки Удалить фильтры будет висеть код
Очищающий поля выборки и всё? Последний фильтр останется?
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
21.12.2020, 03:32
alvk, конечно же Filter и FilterOn надо почистить (сбросить)
это как само собой разумеющееся

а вот на важном условии, а именно появление в поле значения Null, я акцентировал внимание
ибо связка
S = S & (" and [Преступники].[Вид преступления]=" + Me.ВыборВидПреступления)
без null может и не сработать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2020, 03:32
Помогаю со студенческими работами здесь

Фильтрация ленточной формы по нескольким полям
Добрый день. Помогите пожалуйста реализовать следующую задачу: Необходимо организовать фильтрацию формы по нескольким полям (8 шт), при...

Фильтрация по нескольким полям разделенной формы Access 2007
Задача в следующем: есть таблица Main, содержимое ее полей отображается в разделенной (Access 2007) форме Общий_ввод_данных. Фильтрация...

Фильтрация по нескольким полям
Помогите, надо сделать фильтрация по несколько полям (Фамилия, имя, отчество и телефон). Покидайте примеры,а то найти не могу. Задали по...

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

Фильтрация в БД по нескольким полям
Пытаюсь сделать фильтр о нескольким полям. выдаёт ошибку. помогите разобраться. void __fastcall TForm1::Button10Click(TObject *Sender) ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru