Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Какие есть комбинации запросов?  [new]
Алексей17
Guest
В форме Access есть шесть выпадающих списков:
1.Курс
2.Факультет
3.Группа
4.Тип Студента
5.Специальность
6.Форма обучения

Необходимо обеспечить запросы как по отдельному любому полю, так и по нескольким любым полям.
Каким образом обойти все комбинации запросов, можно в цифрах (например 1,12,123,1234, и т.д.) и не пропустить не одной комбинации?
Или ссылку где можно почитать.
22 май 06, 17:12    [2692535]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Вообще-то это 2 в степени 6. Но, имхо, этого считать не нужно - можно просто составлять строку запроса динамически.
22 май 06, 17:15    [2692556]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Алексей17
Guest
Каким образом?
22 май 06, 17:16    [2692561]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
https://www.sql.ru/faq/faq_topic.aspx?fid=157
22 май 06, 17:17    [2692569]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Алексей17
Guest
Про динамическое формирование там ничего не сказано, если не ошибаюсь, вы имели ввиду динамически формировать WHERE, или имели ввиду написать 64 запроса?
22 май 06, 17:21    [2692592]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Dim qd As QueryDef: Set qd = CurrentDb.QueryDefs("MyReportQuery")
Dim sql As String, Crit As String

sql = "SELECT * FROM MyReport"

If Not IsNull(Me.[Курс]) Then Crit = "And [Курс] = " & Me.[Курс]
If Not IsNull(Me.[Факультет]) Then Crit = Crit & "And [Факультет] = " & Me.[Факультет]
If Not IsNull(Me.[Группа]) Then Crit = Crit & "And [Группа] = " & Me.[Группа]
If Not IsNull(Me.[Тип Студента]) Then Crit = Crit & "And [Тип Студента] = " & Me.[Тип Студента]
If Not IsNull(Me.[Специальность]) Then Crit = Crit & "And [Специальность] = " & Me.[Специальность]
If Not IsNull(Me.[Форма обучения]) Then Crit = Crit & "And [Форма обучения] = " & Me.[Форма обучения]

If Crit <> "" Then
Crit = Mid(Crit, 5)
sql = sql & " WHERE (" & Crit & ")"
En If

qd.SQL = sql

Я исходил из того, что все фильтры - числовые
22 май 06, 17:33    [2692678]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
пробелы надо добавить перед каждым " And "
22 май 06, 17:36    [2692691]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
2 Rivkin Dmytry
Вместо
If Crit <> "" Then 
Crit = Mid(Crit, 5)
sql = sql & " WHERE (" & Crit & ")"
End If
можно
sql = sql & " WHERE 1=1 " & Crit 
22 май 06, 17:50    [2692781]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
4321
Member [заблокирован]

Откуда:
Сообщений: 3573
Владимир Саныч
Вообще-то это 2 в степени 6. Но, имхо, этого считать не нужно - можно просто составлять строку запроса динамически.
вообще то возможен и статический запрос (если нет задачи писать запрос по сложным условиям вида ~{( и и и ) или ((и и ) или ( и и )}

например так:
PARAMETERS p1 Long
, p2 Long
, p3 Long
....
, pN Long
;
SELECT * FROM table t
WHERE
([p1] IS NULL OR t.f1 = [p1]) 
AND ([p2] IS NULL OR t.f2 = [p2]) 
...
AND ([pN] IS NULL OR t.fN = [pN]) 
22 май 06, 18:21    [2692917]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
(c)VIG
2 Rivkin Dmytry
Вместо
If Crit <> "" Then 
Crit = Mid(Crit, 5)
sql = sql & " WHERE (" & Crit & ")"
End If
можно
sql = sql & " WHERE 1=1 " & Crit 

Красиво!
22 май 06, 18:22    [2692924]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть комбинации запросов?  [new]
Алексей17
Guest
Спасибо всем, завтра приду на работу и испробую
22 май 06, 21:09    [2693335]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить