powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Установка фильтра во вложенном отчете
25 сообщений из 28, страница 1 из 2
Установка фильтра во вложенном отчете
    #32188729
Cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cab
Гость
Использую MS ACCESS.
При попытке установить значение фильтра во вложенном отчете таким образом:

Код: plaintext
Me.Filter = Forms![frm_Main].Form.Filter

Или, например, так:

Код: plaintext
Me.Filter =  "Код=14 "

, вылетает сообщение об ошибке:

Код: plaintext
1.
Run-time error ‘ 2101 ’
Введенное значение не подходит для данного свойства.

А в отчете, который не является вложенным, установка значения фильтра, приведенным выше образом, не вызывает сообщения об ошибке.

В чем тут дело?
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32188764
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему "Form", если в отчете?
Вообще, спросонья могу порекомендовать передовать твой параметр через функцию в условии в источнике данных подотчета:
"select * frmo balabala where balabala.Код=GetTargetCode();" или даже так
"select * frmo balabala where (balabala.Код=GetTargetCode()) or (GetTargetCode()=-1);" (вместо -1 можно написать любое значение которого заведомо не бывает).
С добрым утром.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32188891
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Вы все правильно советуете, но
в моем случае строка фильтра может состоять
из выражений с несколькими операторами AND.
Я привел простой пример:

Me.Filter = "Код=14"

А может быть и так, на количество кавычек не обращайте внимания:

Me.Filter = "Отправитель=Москва" AND "Контейнер=123456789"

Неужели вложенные отчеты не допускают установку фильтра?
Знатоки, посоветуйте что-нибудь.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32188902
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РОдный!
Кажется, адресоваться нада чуть по-другому:
для формы оно было бы вроде такого:
forms!ГлавнаяФорма!ПодчиненнаяФорма!form!Filter
(могут быть где-то точки вместо "!").
Теоретически то же самое д.б. и для отчета, тока form заменить на report
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189127
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Я пробовал устанавливать значение фильтра для вложенного отчета таким образом:

Код: plaintext
Reports!ГлавнаяФорма!ПодчиненнаяФорма!form!Filter 


В итоге то-же самое сообщение об ошибке. Проверю еще раз, может я ошибаюсь.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189137
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да почему же
Reports!ГлавнаяФорма!ПодчиненнаяФорма!form!Filter
когда надо
Код: plaintext
.Report.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189138
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теоретически то же самое д.б. и для отчета, тока form заменить на report (Alexus12)
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189164
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Теперь я сделал в событии Open вложенного отчета так:

Reports!ГлавнаяФорма!ПодчиненнаяФорма.report.Filter = "Код=14"

И в итоге, то же сообщение об ошибке.
Что-то я не понимаю или что-то не так делаю. Попробую еще повозиться.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189303
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189323
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тита т ы слушают и рекомендуют
Почему у тебя отчеты называются "ГлавнаяФорма" и "ПодчиненнаяФорма"? Ты ничего не перепутал?
Что выводит такой код
Код: plaintext
1.
2.
3.
4.
Debug.Print TypeName(Reports!ГлавнаяФорма)
Debug.Print TypeName(Reports!ГлавнаяФорма!ПодчиненнаяФорма)
Debug.Print TypeName(Reports!ГлавнаяФорма!ПодчиненнаяФорма.Report)
Debug.Print TypeName(Reports!ГлавнаяФорма!ПодчиненнаяФорма.Report.Filter)
Debug.Print Reports!ГлавнаяФорма!ПодчиненнаяФорма.Report.Filter
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189348
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Уважаемые Титаны! Сейчас я приеду домой с работы, и напишу Вам ответ.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189502
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
В соответствии с вашим кодом я сделал так:

Код: plaintext
1.
2.
3.
4.
Debug.Print TypeName(Reports!rpt_ПароходноеДело1)
Debug.Print TypeName(Reports!rpt_ПароходноеДело1!Контейнеры)
Debug.Print TypeName(Reports!rpt_ПароходноеДело1!Контейнеры.Report)
Debug.Print TypeName(Reports!rpt_ПароходноеДело1!Контейнеры.Report.Filter)
Debug.Print Reports!rpt_ПароходноеДело1!Контейнеры.Report.Filter


А вот его вывод:

Код: plaintext
1.
2.
3.
Report_rpt_ПароходноеДело1
SubForm
Report_rpt_ПароходноеДелоКонт1
String


Строка

Код: plaintext
Debug.Print Reports!rpt_ПароходноеДело1!Контейнеры.Report.Filter


ничего не вывела. Ну я думаю - это правильно.

Жду ответа.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189508
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
А это полный текст процедуры для вложенного отчета.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Report_Open(Cancel As Integer)
    
Debug.Print TypeName(Reports!rpt_ПароходноеДело1)
Debug.Print TypeName(Reports!rpt_ПароходноеДело1!Контейнеры)
Debug.Print TypeName(Reports!rpt_ПароходноеДело1!Контейнеры.Report)
Debug.Print TypeName(Reports!rpt_ПароходноеДело1!Контейнеры.Report.Filter)
Debug.Print Reports!rpt_ПароходноеДело1!Контейнеры.Report.Filter
 
End Sub


Что делаем дальше?
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189579
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Что-то титаны молчат?
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189587
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Титаны не молчат. Титаны думают. Думают над тем, как бы эту фигню логично объяснить. Ибо у меня такая же фигня.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189594
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Ибо у меня такая же фигня.

Лох, стихи пишешь!
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189635
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст процедуры во вложенном отчете.

если так, идет сообщение об ошибке, но если сделать точку останова, и проигнорировать ошибку, то фильтр накладывается

Код: plaintext
1.
2.
3.
4.
Private Sub Report_Open(Cancel As Integer)
    If Len(Me.Filter) =  0  Then
        Me.Filter =  "Код=10 "
    End If
End Sub


а если так

Код: plaintext
1.
2.
3.
4.
5.
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
    If Len(Me.Filter) =  0  Then
        Me.Filter =  "Код=10 "
    End If
End Sub


работает нормально :-/

Что/как/почему пока не знаю, можно попробовать поискать у мелких на сайте.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189659
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Спасибо за рабочий вариант с использованием

Код: plaintext
On Error Resume Next 'так фильтр работает нормально

Нужно будет потестировать это решение.

Я обошел эту проблему так:

Код: 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.
Private Sub FilterCont()
On Error GoTo Err_999

        'создадим фильтр если нужно в скрытом режиме для контейнеров
        If Forms![frm_ГлавнаяФорма]![CargoWindowDestination]![СписокКонтейнеров].Form.FilterOn = True Then
            MyFilter = Forms![frm_ГлавнаяФорма]![CargoWindowDestination]![СписокКонтейнеров].Form.Filter
            DoCmd.OpenReport  "rpt_ПароходноеДелоКонт1" , acViewDesign, , , acHidden
            Reports!rpt_ПароходноеДелоКонт1.Filter = MyFilter
            Reports!rpt_ПароходноеДелоКонт1.FilterOn = True
            DoCmd.Close acReport,  "rpt_ПароходноеДелоКонт1" , acSaveYes
        Else
            DoCmd.OpenReport  "rpt_ПароходноеДелоКонт1" , acViewDesign, , , acHidden
            Reports!rpt_ПароходноеДелоКонт1.Filter =  ""
            Reports!rpt_ПароходноеДелоКонт1.FilterOn = False
            DoCmd.Close acReport, " rpt_ПароходноеДелоКонт1", acSaveYes
        End If
        
    
Exit_999:

    Exit Sub

Err_999:

    MsgBox Err.Description
    Resume Exit_999
    
End Sub


Но при этом слегка увеличивается mdb файл.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189800
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В рипортах еще с 2000 в ADP куча глюков. Поэтому я работаю как правило по одной схеме, на OPEN делаю Me.Recordsource=Me.OpenArgs. А в OpenArgs передаю полный запрос (с условием WHERE). Все работает нормально, думаю в MDB тоже должно работать отлично.
Вопрос, зачем в скрытом режиме менять фильтр и сохранять отчет? Что-то мне кажется лишнее это.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189803
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Так потому и приходится менять в скрытом режиме фильтр (для вложенного отчета) и сохранять отчет если бы можно было менять его нормальным образом.
Знатоки, так все-таки существует эта проблема с установкой значения фильтра во вложенном отчете?
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189838
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему же нельзя обойтись без фильтра, задав просто
recordsource="Select * from Table where Тото=тото and Тото=тото"
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189866
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знатоки, так все-таки существует эта проблема с установкой значения фильтра во вложенном отчете?
Видимо существует. Кажись таким способом мало кто програмит, потому и неизвестна эта проблема широко, но она есть
Трабл какой-то аксесовский. Даже в отладчике, когда в ошибку валится и высвечивает строку с установкой фильтра, видно, что фильтр уже установлен . Т.е. он сначала установился, потом аксес обосрался. С помощью On Error Resume Next получается, что и фильтр установится, и аксес не обострется (вернее, сделает это бесшумно).
Вот такие пироги.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189900
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Спасибо Всем, особенно последнему автору, за то, что выяснили в чем дело. Действительно, может быть надо программировать по другому. В данном случае так применять фильтр (фильтрация по выделенному) удобно для клиента, а вот у меня это вызвало вопросы.
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189905
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2V. Motchulsky
>А почему же нельзя обойтись без фильтра, задав просто
recordsource="Select * from Table where Тото=тото and Тото=тото"

Наверное, человеку так интересней. Помучаться пару дней, напихать нестабильного кода, и заснуть счастливым :)
Правильно Лох сказл - этим фильтром на отчет никто не пользуется, потому что есть более приятные пути (и производительней) решения этой задачи
...
Рейтинг: 0 / 0
Установка фильтра во вложенном отчете
    #32189925
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Хорошо.

Причем тут нестабильный код?
Объясняю:
есть таблица на экране с числом колонок около 15.

Пользователь, последовательно, фильтрует эту таблицу (или другие таблицы) по любому столбцу, задавая при этом, достаточно сложное условие фильтра.


В итоге получается строка фильтра, которую я считаю не грех применить при построении отчета, основанного на том же запросе, что и отфильтрованная таблица.

Зачем я буду создавать кучу выпадающих списков или что-еще. Ведь данные вот они, рядом. Только фильтруй правой кнопкой мыши да распечатывай.
Где здесь плохой стиль программирования?

Может быть Вы правы в том, что нужно объединять условие для запроса, на котором строится отчет, с фильтром, получаемым при фильтрации данных в форме. В итоге должно получится длинное предложение WHERE.
Попробую, может быть это будет кравивое решение.

А мучаться никто не собирается. И потом, кто из нас не мучался, пытаясь понять что-то? Ничего не вижу страшного в такого-рода мучениях. Зато приобретается бесценный опыт.

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


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