powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / критерии для запроса отчета
25 сообщений из 37, страница 1 из 2
критерии для запроса отчета
    #34254425
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня следующий вопрос
есть запрос на основании которого делается отчет.
По сути на основании одного запроса нужно сделать несколько отчетов
в одном из них к примеру нужно отсортировать данные по дате, в другом на основании фамилии и тд как делать в запросе критерии - понятно, потом можно при помощи формы вносить этот критерий в запрос в поле "условие отбора". Например на событие контрола [полекритерия] формы (ИмяФормы) который выбирает критерий для отчета, на событие "после обновления" повесить открытие отчета в запрос которого вствлен в условия отбора Forms![ИмяФормы]![полекритерия]

Запрос один критериев - несколько, как осуществить механизм подстановки значений для критериев из разных форм при определенных событиях при чем, чтобы в одном случае можно было бы использовать один критерий в другом -2 а в третьем вообще неодного!
Понятно, что можно написать несколько по сути одинаковых запросов с разными именами и сделать их источниками для нескольких запросов, но это сильно увеличит размер БД, а как сделать чтобы при работе с формами для выбора критериев для отчета работать с одним запросом!
Я думаю это можно каким то образом осуществить через ВБА но незнаю как, я например делал в ВБА запросы для заполнения списка с выбором параметров из полей со списком, а как данное действие осуществить для запроса отчета!
Спасибо за ответ!
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254439
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При нажатии на кнопку можно использовать DoCmd.OpenReport - команду открытия отчета, у нее есть параметр "условие открытия отчета". В зависимости от ваших замыслов, передавайте туда нужные критерии (значения для них можно брать из этой же формы), например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
'отбор записей по текущему коду
DoCmd.OpenReport "ИмяОтчета", acViewNormal, , "код=" & Me("код")

'отбор записей по текущему имени (строка)
DoCmd.OpenReport "ИмяОтчета", acViewNormal, , "имя='" & Me("имя") & "'"

'отбор записей по двум критериям
DoCmd.OpenReport "ИмяОтчета", acViewNormal, , "тип=" & Me("тип") & " AND сумма>" & Me("summ")

А из самого запроса все такие (динамические) условия уберите. Они подставятся туда в момент открытия отчета в соответствии с заданным параметром.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254446
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня в модуле функция:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function ОткрытиеОтчета(stDocName As String) As Integer
On Error GoTo Err_ОткрытиеОтчета
' Функция связывается с событием "Нажатие кнопки" (Click) для открытия Отчета
    DoCmd.OpenReport stDocName, acPreview
Exit_ОткрытиеОтчета:
    Exit Function
Err_ОткрытиеОтчета:
    MsgBox Err.Description
    Resume Exit_ОткрытиеОтчета
End Function

в событиях нажатия кнопки на формах я потом вставляю =ОткрытиеОтчета("имя отчета")

как мне писать =ОткрытиеОтчета("имя отчета", acViewNormal, , "код=" & Me("код")) чтот попробовал не получается!
В чем ошибка?
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254448
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед вызовом отчета командой OpenReport, вы можете переопределить источник записей отчета, отсортировав его как надо. Это можно сделать на основе сохраненного запроса, а можно определить источник (RecordSource) в процедуре, например вот так
Код: plaintext
Reports("Накладные").RecordSource = "Select * From Накладные Order By Дата"
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254465
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metallУ меня в модуле функция...
в событиях нажатия кнопки на формах я потом вставляю =ОткрытиеОтчета("имя отчета")
как мне писать =ОткрытиеОтчета("имя отчета", acViewNormal, , "код=" & Me("код")) чтот попробовал не получается! В чем ошибка?Ошибок несколько.

При записи вызова функций в виде in-line вызовов (прямо в бланке свойств контрола) нельзя пользоваться константами vba (как в вашем случае acViewNormal) - вместо них нало писать их числовые значения. Также в таких вызовах нельзя писать Me (ссылку на текущую форму) - вместо этого надо полностью писать Forms![ИмяТекущейФормы]. Это первое.

Второе - в вашей функции ОткрытиеОтчета строка открытия отчета написана без параметра условия:DoCmd.OpenReport stDocName, acPreviewСравните с вариантом:
DoCmd.OpenReport stDocName, acPreview, , "код=" & Me("код")Выделенное красным - это то чего у вас нет, и это как раз то, из-за чего ваш сыр-бор в данной ветке. Поэтому, если вы хотите использовать всюду свою процедуру ОткрытиеОтчета для целей открытия отчетов с условиями, вам соответственно надо скорректировать там эту команду, ну и сделать параметр критерия в свой функции, естественно.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254495
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карфаген, пытаюсь вывести отчет по критерию год и месяц, предварительно просмотрел работающий запрос (запрос отчета) в СКЛ режиме пишу от туда........
WHERE (((Format([табКнигаПриходов]![датаПрихода],"yyyy-mm"))=[введите год и месяц в формате гггг-мм]))
перекидываю в указанный тобою код:
Код: plaintext
DoCmd.OpenReport "отчКнигаПриходов", acViewNormal, ,"(Format([табКнигаПриходов]![датаПрихода],"yyyy-mm"))=" &  2007 - 01 
но ругается на yyyy ошибка компиляции, я пробовал там скобки и т.д. но чтот не получается в чем ошибка?
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254509
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metallно ругается на yyyy ошибка компиляции, я пробовал там скобки и т.д. но чтот не получается в чем ошибка?Ну а как он ваши синие кавычки от красных будет отличать в выражении:"(Format([табКнигаПриходов]![датаПрихода],"yyyy-mm"))="Рекомендую красные кавычки там заменить на одинарные.

Заодно, возможно, предвосхищу ваш следующий вопрос. Format сконвертирует значение поля даты в строку, поэтому в вашем критерии результат этого Format следует сравнивать также со строкой.

То есть, надо не & 2007-01 (это у вас вообще означает 2007 минус 1), а & "'2007-01'"
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34254516
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Карфаген, именно в этом и была проблема Еще раз спасибо!
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34258776
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карфаген, в контексте вышеизложенного возникает вопрос а как при нажатии кнопки, которая открывает отчет с требуемыми параметрами програмно присвоить определенное значение названия отчета
то есть у меня проблемы с присвоением значения полю отчета
я пишу типа:
Reports!отчКнигаПриходов!Надпись33 = "124віаів"
но не работатет! вот код:

Код: plaintext
1.
2.
3.
Private Sub Кнопка24_Click()
DoCmd.OpenReport "отчКнигаПриходов", acPreview, , "[Название]='" & Me("ПолеСоСписком15") & "'"
Reports!отчКнигаПриходов!Надпись33 = "124віаів"
End Sub
что я не так делаю?
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34258902
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте делать в обработке событий самого отчета. Например, в событии "Форматирование" разделов отчета (т.е. в момент, когда поля отчета заполняются данными из его источника).

Либо можете написать свою функцию, которая возвращает это (текущее) название, а в источнике данных поля отчета написать вызов этой функции.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34259180
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KarfaqenПопробуйте делать в обработке событий самого отчета. Например, в событии "Форматирование" разделов отчета (т.е. в момент, когда поля отчета заполняются данными из его источника).

Либо можете написать свою функцию, которая возвращает это (текущее) название, а в источнике данных поля отчета написать вызов этой функции.
"Форматирование" разделов отчета - а как отследить разные моменты, то есть при нажатии кнопки 1 нужно название - Имя1, а при нажатии на кнопку 2 нужно название Имя2 ?
Посмотрел справку FormatCount исходя из этого мыслю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub ЗаголовокОтчета_Format(Cancel As Integer, FormatCount As Integer)
 If FormatCount =  1  Then
        Reports!отчКнигаПриходов!Надпись33 = "Название1"
        Else
            Reports!отчКнигаПриходов!Надпись33 = "Название2"
        End If
    End If
End Sub

как к этому FormatCount обратиться из процедуры нажатия кнопки для открытия отчета? Или я не так вообще мыслю.
по поводу 2го совета - функции - механизм вообще не представляю подскажи как делать!
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34259298
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metallИли я не так вообще мыслюВообще не так.
metallпо поводу 2го совета - функции - механизм вообще не представляю подскажи как делать!Тогда самый простой и понятный вам вариант:
1) объявить глобальную переменную в общем модуле;
2) в нажатиях кнопок перед открытием отчета записывать в эту переменную нужное назвнание;
3) в общем модуле написать функцию которая возвращает эту переменную;
4) в отчете у контрола в свойстве "данные" написать вызов этой функции.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34259462
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karfaqen
1) объявить глобальную переменную в общем модуле;
2) в нажатиях кнопок перед открытием отчета записывать в эту переменную нужное назвнание;
3) в общем модуле написать функцию которая возвращает эту переменную;
4) в отчете у контрола в свойстве "данные" написать вызов этой функции.

1) в модуле пишу:
Код: plaintext
Dim Имя As String
2) в обработчике Нажатия кнопки открытия отчета пишу перед командой открытия отчета:
Код: plaintext
1.
2.
3.
Private Sub Кнопка24_Click()
Me.ПолеИмя = Имя
DoCmd.OpenReport.....
End Sub
3) в модуле пишу:
Код: plaintext
1.
2.
Function Имя as variant
  Имя
end function
4) Это сделаю
Логика правильная? Где неточности?
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34259538
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'1) объявить глобальную переменную в общем модуле;
Public rTitle As String 

'3) написать функцию которая возвращает эту переменную;
Function GetReportTitle() As String
    GetReportTitle = rTitle
End Function

В модулях форм:
Код: plaintext
1.
2.
3.
'2) в нажатиях кнопок перед открытием отчета записывать в эту переменную нужное название;
rTitle = "Название1"
DoCmd.OpenReport "ИмяОтчета", acViewNormal, , "код=" & Me("код")

В отчете:
4) у контрола в свойстве "данные" написать вызов этой функции:=GetReportTitle()
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #34259563
metall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Карфаген! Все работает! Я понял где допустил просчеты (не хватает базовых знаний)!
Еще раз спасибо за помощь!!!!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
критерии для запроса отчета
    #39929950
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пж, где ошибка порылась?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Select Case Me.Группа4.Value
Case 1
    rTitle = "Дебиторские договоры"
        DoCmd.OpenReport "uContract", acPreview, , "Закрыт=" & False & " Not ([Предмет договора]=)&" Like "Сервисное обслуживание"
Case 2
    rTitle = "Закрытые договоры"
        DoCmd.OpenReport "uContract", acPreview, , "Закрыт=" & True & "[Предмет договора]=&" Like "Сервисное обслуживание"
Case 3
    rTitle = "Все договоры"
        DoCmd.OpenReport "uContract", acPreview



Причем "Сервисное обслуживание" это не название поля, а значение в поле. Т.е. хочу сделать выборку в отчете без этих данных.
При таком коде Сase 1 и 2 выдают пустой отчет, третий норм.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39929958
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga
Подскажите, пж, где ошибка порылась.
Много где.
Попробуйте так:
Код: vbnet
1.
2.
DoCmd.OpenReport "uContract", acPreview, , "Закрыт AND [Предмет договора]<>""Сервисное обслуживание"""
DoCmd.OpenReport "uContract", acPreview, , "Not Закрыт AND [Предмет договора]<>""Сервисное обслуживание"""
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39929988
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle,

Спасибо за вариант, извиняюсь, но я наверно не совсем правильно сформулировал свою задачу.

Вот до этого момента код выдает правильные результаты:

Код: vbnet
1.
DoCmd.OpenReport "uContract", acPreview, , "Закрыт=" & False



т.е. отдельное логическое поле в отчете или false или true у меня, но к этому еще хочу добавить условие, чтобы в отчете не показывались записи, где поле [Предмет договора] имеет значение "Сервисное обслуживание" (кстати, как в VBA маску написать, как в запросе Like "Сервис*"? т.е. дальше может быть продолжение)

В предложенном вами коде в отчете все равно выходят записи с "Сервисным обслуживанием" и фильтрация по полю [Закрыт] не идет правильно (
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930005
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga
В предложенном вами коде в отчете все равно выходят записи с "Сервисным обслуживанием" и фильтрация по полю [Закрыт] не идет правильно (

выложите пример базы, не заставляйте угадывать вашу конкретику
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930008
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga,

Код: vbnet
1.
DoCmd.OpenReport "uContract", acPreview, WhereCondition:= "Not [Закрыт] AND Not [Предмет договора] Like 'Сервисное*'"
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930009
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930128
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все фильтрует как задумывалось! Спасибо, и за ссылку тоже!
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930129
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

ну я бы конечно выложил пример, если возникло дальнейшее недоразумение )
Просто с рабочей БД выдергивать формы, отчеты, редактировать данные дольше было. Я ее все еще с 2007 года все дорабатываю, дорабатываю, вот решил сократить кол-во отчетов с 11 (!) до 1 (одни и те же данные, только условия отбора разные))
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930164
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga,
В таком случае,по моему,лучше всего сделать свободную форму открытия с группами переключателей (полейСоСписком),в зависимости от состояния (значений) которых формировать строку WHERE, которую использовать в OpenReport (нажатие кнопки на этой форме)
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39930309
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

да, я так и сделал, в свободной форме группа переключателей, спасибо Панургу, помог с кодом. Теперь у меня один отчет!)
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / критерии для запроса отчета
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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