Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Установка фильтра во вложенном отчете / 25 сообщений из 28, страница 1 из 2
23.06.2003, 05:52
    #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
23.06.2003, 08:36
    #32188764
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
А почему "Form", если в отчете?
Вообще, спросонья могу порекомендовать передовать твой параметр через функцию в условии в источнике данных подотчета:
"select * frmo balabala where balabala.Код=GetTargetCode();" или даже так
"select * frmo balabala where (balabala.Код=GetTargetCode()) or (GetTargetCode()=-1);" (вместо -1 можно написать любое значение которого заведомо не бывает).
С добрым утром.
...
Рейтинг: 0 / 0
23.06.2003, 11:18
    #32188891
cab
cab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Вы все правильно советуете, но
в моем случае строка фильтра может состоять
из выражений с несколькими операторами AND.
Я привел простой пример:

Me.Filter = "Код=14"

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

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

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

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


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

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

И в итоге, то же сообщение об ошибке.
Что-то я не понимаю или что-то не так делаю. Попробую еще повозиться.
...
Рейтинг: 0 / 0
23.06.2003, 15:32
    #32189303
cab
cab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
...
Рейтинг: 0 / 0
23.06.2003, 15:41
    #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
23.06.2003, 15:55
    #32189348
cab
cab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Уважаемые Титаны! Сейчас я приеду домой с работы, и напишу Вам ответ.
...
Рейтинг: 0 / 0
23.06.2003, 17:19
    #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
23.06.2003, 17:21
    #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
23.06.2003, 17:51
    #32189579
cab
cab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Что-то титаны молчат?
...
Рейтинг: 0 / 0
23.06.2003, 17:54
    #32189587
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Титаны не молчат. Титаны думают. Думают над тем, как бы эту фигню логично объяснить. Ибо у меня такая же фигня.
...
Рейтинг: 0 / 0
23.06.2003, 17:55
    #32189594
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
> Ибо у меня такая же фигня.

Лох, стихи пишешь!
...
Рейтинг: 0 / 0
23.06.2003, 18:30
    #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
23.06.2003, 18:46
    #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
24.06.2003, 01:05
    #32189800
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
В рипортах еще с 2000 в ADP куча глюков. Поэтому я работаю как правило по одной схеме, на OPEN делаю Me.Recordsource=Me.OpenArgs. А в OpenArgs передаю полный запрос (с условием WHERE). Все работает нормально, думаю в MDB тоже должно работать отлично.
Вопрос, зачем в скрытом режиме менять фильтр и сохранять отчет? Что-то мне кажется лишнее это.
...
Рейтинг: 0 / 0
24.06.2003, 01:39
    #32189803
cab
cab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Так потому и приходится менять в скрытом режиме фильтр (для вложенного отчета) и сохранять отчет если бы можно было менять его нормальным образом.
Знатоки, так все-таки существует эта проблема с установкой значения фильтра во вложенном отчете?
...
Рейтинг: 0 / 0
24.06.2003, 08:23
    #32189838
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
А почему же нельзя обойтись без фильтра, задав просто
recordsource="Select * from Table where Тото=тото and Тото=тото"
...
Рейтинг: 0 / 0
24.06.2003, 09:09
    #32189866
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Знатоки, так все-таки существует эта проблема с установкой значения фильтра во вложенном отчете?
Видимо существует. Кажись таким способом мало кто програмит, потому и неизвестна эта проблема широко, но она есть
Трабл какой-то аксесовский. Даже в отладчике, когда в ошибку валится и высвечивает строку с установкой фильтра, видно, что фильтр уже установлен . Т.е. он сначала установился, потом аксес обосрался. С помощью On Error Resume Next получается, что и фильтр установится, и аксес не обострется (вернее, сделает это бесшумно).
Вот такие пироги.
...
Рейтинг: 0 / 0
24.06.2003, 09:45
    #32189900
cab
cab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
Спасибо Всем, особенно последнему автору, за то, что выяснили в чем дело. Действительно, может быть надо программировать по другому. В данном случае так применять фильтр (фильтрация по выделенному) удобно для клиента, а вот у меня это вызвало вопросы.
...
Рейтинг: 0 / 0
24.06.2003, 09:49
    #32189905
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра во вложенном отчете
2V. Motchulsky
>А почему же нельзя обойтись без фильтра, задав просто
recordsource="Select * from Table where Тото=тото and Тото=тото"

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

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

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


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

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

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

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

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


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