powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Условие отбора в запросе задаваемое набором флажков.
8 сообщений из 8, страница 1 из 1
Условие отбора в запросе задаваемое набором флажков.
    #32349140
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме - 5 флажков(не группа!) и кнопка "Показать".
Задача: установив нужные флажки, кнопкой обновить сведения в форме.
Условие отбора задаётся в одном поле запроса. Поместил на форму свободное поле и указал его в условии отбора. Написал код, который пробегает по флажкам и собирает в свободном поле строку типа: "5 or 8 or 9". Данные в форме меняются, но соблюдается только одно условие отбора, первое, в приведённом условии это значение 5. Остальные - игнорируются.
Как быть?
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349168
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Чтобы найти в программе баг, надо видеть программу. Я прав?

Могу протелепатить, что там получается что-то типа
where MyField = (5 or 8 or 9)
вместо правильного
where MyField=5 or MyField=8 or MyField=9
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349223
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шалом!
Всё так и есть!
А если набирать строку с повторением <Поле.Имя>, тогда и весь алгоритм поменяется? В свободное поле не надо будет строку заносить и вообще придётся убрать его из условия отбора, а уже что-то вроде:
select * from [Запрос-источник] where & <строка условий>.
Так или есть что-то менее громоздкое?
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349246
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Шалом у-враха!

Боюсь, что ничего менее громоздкого не будет...
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349358
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему же, а использовать In?
... where MyField In (5, 8, 9)
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349387
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но все равно это будет динамический селект, а не подстановка параметра.
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349460
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал как Игорь советует - всё работает, всем спасибо!
...
Рейтинг: 0 / 0
Условие отбора в запросе задаваемое набором флажков.
    #32349505
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сначала так, а потом в монстра вырастает:

Код: plaintext
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.
Private Sub setfilters

stroka =  " and "    ' Строка фильтра where для передачи в stored procedure через параметр'
stroka1 =  "" 'Название выборки для отчета'" 

If twFindepList <>  "" Then ' Список отмеченных чекбоксом подразделений в тривью'" 
    stroka = stroka &  "    dbo.get_sotr_lastfindepid(pr.curator, pr.OpenDate) in ("  & twFindepList &  ") and " 
    stroka1 = stroka1 + twFilter
End If

If twCuratorList <>  "" Then  ' Список отмеченных чекбоксом руководителей в тривью'" 

stroka = stroka &  "    pr.curator in ("  & twCuratorList &  ") and " 
stroka1 = stroka1 + twFiltercur

End If


'по полям даты'
If Not IsNull(Me.fopendatafrom) Then stroka = stroka +  "OpenDate >= "  & sqldata(Me.fopendatafrom) &  " AND " 
If Not IsNull(Me.fopendatafrom) Then stroka1 = stroka1 +  "открытые после "  & Me.fopendatafrom &  "; " 

If Not IsNull(Me.fopendatato) Then stroka = stroka +  "OpenDate <= "  & sqldata(Me.fopendatato) &  " AND " 
If Not IsNull(Me.fopendatato) Then stroka1 = stroka1 +  "открытые до "  & (Me.fopendatato) &  "; " 

If Not IsNull(Me.fclosedatafrom) Then stroka = stroka +  "[Close4 Date] >= "  & sqldata(Me.fclosedatafrom) &  " AND " 
If Not IsNull(Me.fclosedatafrom) Then stroka1 = stroka1 +  "закрытые после "  & (Me.fclosedatafrom) &  "; " 

If Not IsNull(Me.fclosedatato) Then stroka = stroka +  "[Close4 Date] <= "  & sqldata(Me.fclosedatato) &  " AND " 
If Not IsNull(Me.fclosedatato) Then stroka1 = stroka1 +  "закрытые до "  & (Me.fclosedatato) &  "; " 

' по флажкам'
If Me.farchive =  2  Then stroka = stroka +  "archive <> 0   AND "
If Me.farchive =  2  Then stroka1 = stroka1 +  "Архивные " 

If Me.farchive =  3  Then stroka = stroka +  "archive = 0  AND "
If Me.farchive =  3  Then stroka1 = stroka1 +  "неархивные " 

If Me.sovmest Then stroka = stroka +  "[countfil] > 1  AND "
If Me.sovmest Then stroka1 = stroka1 +  " Только совместные " 



If Len(stroka) >  5  Then
stroka = Mid(stroka,  1 , Len(stroka) -  5 )
Me.pfilter = stroka &  " "  & stroka1
Else
stroka =  ""
stroka1 = " Все  "
Me.pfilter = stroka & "  " & stroka1
End If

'Глобальные переменные'
SQLReportFilterName = stroka1
SQLReportFilter = stroka

End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Условие отбора в запросе задаваемое набором флажков.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]