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

Выбор из таблицы по нескольким логическим критериям

05.11.2014, 01:09. Показов 1835. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер уважаемые гуру MS Access. У меня возникла проблема с формированием данных из таблицы с несколькими критериями. У меня есть таблица с приборами и их параметрами. Суть в том, что выборка должна происходить одновременно по всем параметрам, но учитываться должны лишь те, что имеют значение True.

Пример:

Модель Ra RZ Rmax Rq Rt  
1 + - - + +  
2 - - - + -  
3 + + + + +  
4 - + - - -  

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

Например в форме мы выбираем что Ra + и Rz +, то в таблицу должны добавиться только приборы 1 и 3,
Если Rmax +, то только прибор прибор 3 и так далее.

Я пытался сделать:
SQL
1
2
3
4
5
6
7
SELECT *
FROM [выбор приборов тест]
WHERE ((([выбор приборов тест].Ra)=Forms!Form1!Ra)) OR (((Forms!Form1!Ra) IS NULL))
AND ((([выбор приборов тест].Rz)=Forms!Form1!Rz)) OR (((Forms!Form1!Rz) IS NULL))
AND ((([выбор приборов тест].Rmax)=[Forms]![Form1]![Rmax])) OR ((([Forms]![Form1]![Rmax]) IS NULL))
AND ((([выбор приборов тест].Rq)=[Forms]![Form1]![Rq])) OR ((([Forms]![Form1]![Rq]) IS NULL))
AND ((([выбор приборов тест].Rt)=[Forms]![Form1]![Rt])) OR ((([Forms]![Form1]![Rt]) IS NULL));
Но выбор не работает.

До того, как написать сюда, очень долго рыл просторы интернета и соответственно перечитывал форум, но так и не понял, как это сделать. Заранее спасибо за помощь.
Вложения
Тип файла: zip Тест.zip (83.4 Кб, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2014, 01:09
Ответы с готовыми решениями:

Выбор оптимального решения по нескольким критериям
Есть несколько решений, каждое решение оценивается по 4 параметрам A, B, C, D. Причем A самый главный параметр, B второстепенный и тд. ...

Выбор по нескольким полям таблицы
Всем привет! Вот такая вот задача у меня... Есть таблица (cents) вот такого вида: http://picone.ru/thumbs/20-aztdizrt.jpg И...

выбор строк из таблицы, одновременно по нескольким условиям
здравствуйте. есть таблица(t1) с полями: дата(формат дата/время), id_s(числовое), название(текстовое) и др. на форме есть Edit и...

8
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
05.11.2014, 02:32
Лучший ответ Сообщение было отмечено Remediator как решение

Решение

Если правильно понял ТЗ, то запрос должен быть такой
SQL
1
2
3
4
5
6
7
SELECT *
FROM [выбор приборов тест]
WHERE (([выбор приборов тест].Ra AND [Forms]![Form1]![Ra]) OR nz([Forms]![Form1]![Ra],0)=0) 
AND (([выбор приборов тест].Rz AND [Forms]![Form1]![Rz]) OR nz([Forms]![Form1]![Rz],0)=0 )
AND (([выбор приборов тест].Rmax AND [Forms]![Form1]![Rmax]) OR nz([Forms]![Form1]![Rmax],0)=0 )
AND (([выбор приборов тест].Rq AND [Forms]![Form1]![Rq]) OR nz([Forms]![Form1]![Rq],0)=0 )
AND (([выбор приборов тест].Rt AND [Forms]![Form1]![Rt]) OR nz([Forms]![Form1]![Rt],0)=0 )
Здесь учитывается условие выбора только тру-флажков. А также, с помощью функции NZ исправляется ситуация с повторным выбором флажка, когда в NULL его уже возвратить

Добавлено через 30 минут
Видимо, надо пояснить почему в качестве выполнения 2 условий - 1) равенство контрола формы значению поля таблицы и 2) могут быть выбраны только True значения - записано условие
SQL
1
[выбор приборов тест].ПолеТаблицы AND [Forms]![Form1]![ПолеФормы]
Можно было бы записать его в виде 2 условий
SQL
1
[выбор приборов тест].ПолеТаблицы=[Forms]![Form1]![ПолеФормы] AND [Forms]![Form1]![ПолеФормы]=TRUE
Но поскольку мы имеем дело с логическими выражениями, то, вспомнив, что только единственная комбинация TRUE AND TRUE дает True в результате (TRUE AND FALSE даст FALSE), можно заменить эти 2 условия в одно. Что и было сделано
1
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
05.11.2014, 05:44  [ТС]
SQL
1
2
3
4
5
6
7
SELECT *
FROM [выбор приборов тест]
WHERE (([выбор приборов тест].Ra AND [Forms]![Form1]![Ra]) OR nz([Forms]![Form1]![Ra],0)=0) 
AND (([выбор приборов тест].Rz AND [Forms]![Form1]![Rz]) OR nz([Forms]![Form1]![Rz],0)=0 )
AND (([выбор приборов тест].Rmax AND [Forms]![Form1]![Rmax]) OR nz([Forms]![Form1]![Rmax],0)=0 )
AND (([выбор приборов тест].Rq AND [Forms]![Form1]![Rq]) OR nz([Forms]![Form1]![Rq],0)=0 )
AND (([выбор приборов тест].Rt AND [Forms]![Form1]![Rt]) OR nz([Forms]![Form1]![Rt],0)=0 )
Спасибо большое, так вроде работает. Сегодня еще проверю и доделаю базу. Если вдруг что-то будет не так, напишу.
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
05.11.2014, 06:20
Цитата Сообщение от Remediator Посмотреть сообщение
Например в форме мы выбираем что Ra + и Rz +, то в таблицу должны добавиться только приборы 1 и 3,
Непонятен принцип выборки.
1. Если нужно выбрать приборы, у которых все параметры, соответствующие отмеченным в форме, имеют значение True, то причем здесь прибор 1.
2. Если нужно выбрать приборы, у которых хотя бы один из параметров, соответствующих отмеченным в форме, имеет значение True, то почему в выборке отсутствует прибор 4.

Если значение Null флажка в форме трактуется также, как значение False, то, чтобы не возиться с Null, достаточно для флажков формы задать значение по умолчанию False.

Предпочел бы, в любом случае, формировать запрос динамически.
0
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
05.11.2014, 06:32  [ТС]
Цитата Сообщение от minob Посмотреть сообщение
2. Если нужно выбрать приборы, у которых хотя бы один из параметров, соответствующих отмеченным в форме, имеет значение True, то почему в выборке отсутствует прибор 4.
вы правы, в ТЗ должен участвовать еще и 4.
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
05.11.2014, 08:00
Определитесь как-нибудь, какой из двух Ваших ответов истинный
Цитата Сообщение от Remediator Посмотреть сообщение
Спасибо большое, так вроде работает
Цитата Сообщение от Remediator Посмотреть сообщение
вы правы, в ТЗ должен участвовать еще и 4
0
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
05.11.2014, 08:15  [ТС]
Первый вариант кода работает, но проверить все параметры смогу только вечером. На работе ноутбук запрещён.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
05.11.2014, 08:56
Лучший ответ Сообщение было отмечено Remediator как решение

Решение

более удобный вариант поиска
Миниатюры
Выбор из таблицы по нескольким логическим критериям  
Вложения
Тип файла: zip Тест1105.zip (53.3 Кб, 14 просмотров)
1
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
06.11.2014, 20:50  [ТС]
Последний вариант идеально подходит. Огромное спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2014, 20:50
Помогаю со студенческими работами здесь

Подсчет по нескольким критериям
Есть таблица. Нужно посчитать через формулу, сколько раз Иван 11 месяца выезжал. какую формулу следует вбить в ячейку?

Выборка по нескольким критериям
суть такова - мне нужно выбрать с базы строки которые относятся к определенной категории но они так же содержат разные темы , но эти же...

Фильтрация по нескольким критериям
Приветствую всех. Столкнулась с такой проблемой - в основной таблице данных нужно вбить фильтры по нескольким значений, т.е: есть...

Выборка из бд по нескольким критериям
Здравствуйте. У меня есть две таблицы: Sfera и Users. Есть простой поиск пользователей в таблице Users: Форма: <form...

Суммирование по нескольким критериям
Здравствуйте, специалисты! Помогите, пожалуйста, с запросом. Надо одновременно просуммировать положительные и отрицательные суммы в...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru