0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый вечер уважаемые гуру 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2014, 01:09
Ответы с готовыми решениями:

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

Выбор по нескольким полям таблицы
Всем привет! Вот такая вот задача у меня... Есть таблица (cents) вот такого вида: ...

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

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

8
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
05.11.2014, 02:32 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
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 4
Цитата Сообщение от 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  [ТС] 5
Цитата Сообщение от minob Посмотреть сообщение
2. Если нужно выбрать приборы, у которых хотя бы один из параметров, соответствующих отмеченным в форме, имеет значение True, то почему в выборке отсутствует прибор 4.
вы правы, в ТЗ должен участвовать еще и 4.
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
05.11.2014, 08:00 6
Определитесь как-нибудь, какой из двух Ваших ответов истинный
Цитата Сообщение от Remediator Посмотреть сообщение
Спасибо большое, так вроде работает
Цитата Сообщение от Remediator Посмотреть сообщение
вы правы, в ТЗ должен участвовать еще и 4
0
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
05.11.2014, 08:15  [ТС] 7
Первый вариант кода работает, но проверить все параметры смогу только вечером. На работе ноутбук запрещён.
0
Модератор
Эксперт MS Access
11957 / 4825 / 779
Регистрация: 07.08.2010
Сообщений: 14,132
Записей в блоге: 4
05.11.2014, 08:56 8
Лучший ответ Сообщение было отмечено Remediator как решение

Решение

более удобный вариант поиска
Миниатюры
Выбор из таблицы по нескольким логическим критериям  
Вложения
Тип файла: zip Тест1105.zip (53.3 Кб, 14 просмотров)
1
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 5
06.11.2014, 20:50  [ТС] 9
Последний вариант идеально подходит. Огромное спасибо.
0
06.11.2014, 20:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2014, 20:50
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru