Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 70
1

Запрос с несколькими условиями

18.01.2018, 17:19. Показов 6093. Ответов 11

Author24 — интернет-сервис помощи студентам
Здравствуйте Уважаемые! Необходимо опять Ваша помощь и вот в чем:
Уважаемые знатоки:
однажды ученик накидал маленькую учебную базу где условием отбора в запросе есть значение комбобокса переданное в переменную (VBA Modules), а вот создать граммотный запрос чтобы можно было делать выборку по значению

1. любого комбобокса
2. двух любых комбобоксов
3. всех трех комбобоксов

не получаеться от слова совсем(не могу найти использование условия для переменной без значения). Помогите кто чем может-кто временем, кто подсказкой, кто кодом запроса, а кто и редактированием/администрированием сообщения или шуткой доморощенной. Вообщем буду рад любой науке!

архивчик прилагается.
Вложения
Тип файла: zip Database171.zip (29.0 Кб, 13 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2018, 17:19
Ответы с готовыми решениями:

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

Запрос с несколькими условиями бд Состав блюд
Здравствуйте! Имею таблицы Продуктов, Блюд и Состав блюд. Мне нужно при добавлении блюда в...

Обноление с несколькими условиями
День добрый, уважаемые форумчане. Пользуюсь Access 2010. Пытаюсь сделать запрос на обновление...

Select с несколькими условиями
Добрый день, форумчане. Прошу помочь с формулой. Нужно получить значение в таблицу tblOrders из...

11
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
18.01.2018, 17:31 2
Предложение:
не использовать функции, а в условиях запроса задать, например:
SQL
1
(T1.ФАМИЛИЯ)=[Forms]![F1]![Combo0]) OR ([Forms]![F1]![Combo0]) IS NULL)
1
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 70
18.01.2018, 18:05  [ТС] 3
Спасибо принцип наверное понял, а нельзя как то оптимизировать - в боевой базе будут до 10 различных переменных(значений комбобокса) и варировать для каждого вариантами условия с "is null" наверное не совсем правильно
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,468
18.01.2018, 18:27 4
Цитата Сообщение от el_virun Посмотреть сообщение
а нельзя как то оптимизировать - в боевой базе будут до 10 различных переменных(значений комбобокса) и варировать для каждого вариантами условия с "is null" наверное не совсем правильно
Можно!
Тогда фильтр или условие отбора строить нужно на VBA.

Вот пример (из рабочего приложения):
Visual Basic
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Private Sub Form_Change_Refilter()
'Рефильтрация формы по значениям полей в заголовке формы.
'--------------------------------------------------------------------------
Dim s$
On Error GoTo Form_Change_Refilter_Err
    
    If IsNull(Me!txtSearch) = False Then
        If IsNumeric(Me!txtSearch) = True Then 'если номер дела
            s = " AND Обч_Номер_Дела = " & Me!txtSearch
            GoTo Form_Change_Refilter_Start 'указан номер - остальное игнорируем!!!!!
        Else 'Часть ФИО
            s = " AND Студент_Имя Like '*" & Me!txtSearch & "*'"
        End If
    End If
    
    If Me!cbSelectLearnType.ListIndex <> -1 Then 'Значение выбрано (ПО ТЕКСТУ пока!)
        s = s & " AND фо_Название = '" & Me!cbSelectLearnType & "'"
    End If
    
    If Me!cbSelectDirection.ListIndex <> -1 Then 'Значение выбрано
        s = s & " AND Гр_Направление_SID = " & Me!cbSelectDirection
    End If
 
'СТАТУС
    If Me!cbSelectStatus.ListIndex <> -1 Then 'Значение выбрано
        s = s & " AND Обч_Статус_SID = " & Me!cbSelectStatus
    End If
    
'
    If Me!cbSelectCurse.ListIndex <> -1 Then 'Значение выбрано
        If IsNull(Me!cbSelectCurse) = False Then
            s = s & " AND Гр_Курс = " & Me!cbSelectCurse
        End If
    End If
    
'Семестр
    If Me!cbSelectSemester.ListIndex <> -1 Then 'Значение выбрано
        If IsNull(Me!cbSelectSemester) = False Then
            s = s & " AND Гр_Семестр = " & Me!cbSelectSemester
        End If
    End If
 
'Оплата
    If Me!cbSelectPaymentStatus.ListIndex <> -1 Then 'Значение выбрано
        s = s & " AND GetPayment = " & Me!cbSelectPaymentStatus
    End If
    
    
Form_Change_Refilter_Start:
    If s <> "" Then
        s = Mid(s, 6)
        'Debug.Print s
        Me.Filter = s
        Me.FilterOn = True
    Else 'Отмена фильтра
        Me.Filter = ""
        Me.FilterOn = False
    End If
 
Form_Change_Refilter_Bye:
    On Error Resume Next
    Me!txtUnderLine.SetFocus
    Err.Clear
    Exit Sub
 
Form_Change_Refilter_Err:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Sub: Form_Change_Refilter in module: Form_Студенты", _
    vbCritical, "Error in Application: " & Err.Source
    Err.Clear
    Resume Form_Change_Refilter_Bye
 
End Sub
2
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 70
18.01.2018, 18:36  [ТС] 5
,,,Говорил мне учитель информатики в школе Не сачкуй сынок школу,,,

Спасибо пойду разбираться что это и как мне его на свои надобности прикрутить)))
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,139
Записей в блоге: 4
18.01.2018, 18:46 6
примерно так
Миниатюры
Запрос с несколькими условиями  
Вложения
Тип файла: zip ученики3.zip (42.4 Кб, 12 просмотров)
2
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 70
18.01.2018, 19:29  [ТС] 7
Спасибо,да фильтры работают...но все таки не совсем то что хотелось бы(
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,139
Записей в блоге: 4
18.01.2018, 19:55 8
можно сделать ведь без кнопки фильтр
сделать обработку и по выбору в любом окошечке
1
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.01.2018, 20:03 9
Лучший ответ Сообщение было отмечено el_virun как решение

Решение

el_virun, попробуйте с одной публичной функцией в запросе на все поисковые поля
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function getData(fldTab, fldFrm)
'fldTab - Имя поля таблицы
'fldFrm - Имя поля формы
    Dim frm
    Set frm = Forms![F1]
    If frm(fldFrm) = fldTab Or IsNull(frm(fldFrm)) Then
        getData = True
    Else
        getData = False
    End If
End Function
Запрос Запрос1
SQL
1
2
3
4
SELECT T1.ФАМИЛИЯ, T1.ЦВЕТ, T1.ФИГУРА
FROM T1
WHERE getData(T1.ФАМИЛИЯ,"Combo0") AND getData(T1.ЦВЕТ,"Combo4") AND getData(T1.ФИГУРА,"Combo6")
GROUP BY T1.ФАМИЛИЯ, T1.ЦВЕТ, T1.ФИГУРА;
В форму F1 вставлена табличная подформа на основе Запрос1. При любом изменении комбо, ее набор данных тоже меняется
Вложения
Тип файла: rar Database171.rar (33.0 Кб, 17 просмотров)
3
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,468
18.01.2018, 20:07 10
Цитата Сообщение от shanemac51 Посмотреть сообщение
можно сделать ведь без кнопки фильтр
...
Чем дальше в лес - тем толще партизаны.
...
Аппетит приходит во время еды ...

Я бы оставил ТС простор для проб и ошибок (оно иногда и полезно, думаю)
--------------------------
О сколько нам открытий чудных
Готовит просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг,
И случай, бог изобретатель.
--------------------------
А.С.П.
1
Эксперт MS Access
7398 / 4535 / 295
Регистрация: 12.08.2011
Сообщений: 14,023
19.01.2018, 08:50 11
На форуме ни тем про фильтры, ни самих фильтров совсем нет. Бедные мы несчастные!!! 8 лет ерундой маялись, а тут пришёл человек и показал нам наши недоработки!
1
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 70
19.01.2018, 10:13  [ТС] 12
Уважаемый mobile! Вы как всегда меня выручаете! Спасибо за помощь!
0
19.01.2018, 10:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2018, 10:13
Помогаю со студенческими работами здесь

Запрос с противоположными условиями
Существует база с двумя таблицами один ко многим. Создаю запрос для выборки из главной таблицы...

Запрос на выборку с двумя условиями
Всем доброго времени суток, столкнулся с проблемой на выборку имеется таблица с основными полями...

В процедуре Sub не открывется запрос с условиями
Здравствуйте, коллеги! У меня интересная ситуация. Запрос &quot;УспеваемостьГруппы&quot; открывается...

Объединение запрос с условиями в один!
Всем доброго времени суток! Ситуация следующая: Есть таблица (назовем Kv), в ней есть поля -...


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

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