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

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

Боюсь, что ничего менее громоздкого не будет...
...
Рейтинг: 0 / 0
10.12.2003, 15:08
    #32349358
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие отбора в запросе задаваемое набором флажков.
Почему же, а использовать In?
... where MyField In (5, 8, 9)
...
Рейтинг: 0 / 0
10.12.2003, 15:19
    #32349387
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие отбора в запросе задаваемое набором флажков.
Но все равно это будет динамический селект, а не подстановка параметра.
...
Рейтинг: 0 / 0
10.12.2003, 15:52
    #32349460
АндрейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие отбора в запросе задаваемое набором флажков.
Сделал как Игорь советует - всё работает, всем спасибо!
...
Рейтинг: 0 / 0
10.12.2003, 16:23
    #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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Условие отбора в запросе задаваемое набором флажков. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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