|
|
|
| Добрый вечер
Имеется отчет - источником записей (RecordSource) в котором могут быть раные запросы (запрос1] или [запрос2])
Из формы [a] нужно открыть этот отчет и задать RecordSource = [запрос1]
Из формы [b] нужно открыть этот отчет и задать RecordSource = [запрос2]
Убил 2 часа ничего не смог придумать | |
|
| |
|
|
|
| меняйте recordsource в самом отчете на событие Open | |
|
| |
|
|
|
| В том то и проблема что туда можно написать только один запрос
Ме.recordsource = "запрос1"
или
Ме.recordsource = "запрос2"
Мне почему то кажется что задавать recordsource нужно в форме примерно как-то так:
Private Sub Кнопка1_Click()
Reports.[отчет1].recordsource = "запрос1"
DoCmd.OpenReport "отчет1", acPreview, "", ""
End Sub
Но не работает - Reports.[отчет1].recordsource = "запрос1" | |
|
| |
|
|
|
| >В том то и проблема что туда можно написать только один запрос
Куда туда?
А один открытый отчет может использовать два запроса? Мне кажется, что вы меня не поняли.
Форма открывает отчет, отчет на открытие проверяет необходимые поля формы и устанавливает необходимый Recordsource. | |
|
| |
|
14 Кб. |
|
| Пока действительно не понимаю. Проблема в том что на событие "открытие отчета" в Recordsource этого отчета могу написать только один запрос а именно:
Private Sub Report_Open(Cancel As Integer)
Me.Recordsource = "Z1"
End Sub
В результате открывается отчет [О1] Recordsource в котором может быть только = "Z1"
Задача в том чтобы при нажатии в форме кнопки "Z1" открылся отчет [О1] с Recordsource = "Z1".
А при нажатии в форме кнопки "Z2" открылся тот же отчет [О1] но с Recordsource = "Z2".
Вообще это нужно для того чтобы не создавать несколько одинаковых отчетов только с разными Recordsource. Мне кажется что лучше иметь один отчет в Recordsource которого при открытии задавать нужный запрос.
Надеюсь что прилож.пример нагляднне покажет суть вопроса
Благодарен за предыдущие советы | |
|
| |
|
12 Кб. |
|
| хотя бы так | |
|
| |
|
13 Кб. |
|
| Извиняюсь но я несвсем коректно составил предыдущий пример.
Отчет нужно открывать из разных форм (не думал что это будет принципиально)
Из формы [F1] нужно открыть отчет [O1] и задать RecordSource = "Z1"
Из формы [F2] нужно открыть отчет [O1] и задать RecordSource = "Z2"
Спасибо за помощь, но в этом случае предложенное Вами решение не работает.
Прикладываю скоректированный пример | |
|
| |
|
|
|
| но что вам мешает, например, использовать публичную переменную, задаваемую в любой форме и считываемую отчетом? Так что все работает, просто вы заблудились в трех соснах :-) | |
|
| |
|
|
|
| Да и теперь параметр отчету можно передать через OpenArgs.
Еще одним вариантом является изменение свойства SQL запроса, прописанного в свойстве Recordsource отчета. Т.е. вариантов достаточно много, есть из чего выбрать ... | |
|
| |
|
|
|
| ...исправлено... (т.к. уже ответили выше) | |
|
| |
|
|
|
| Я конечно понимаю, что вопрос несложный.
Но решить его не получается не хватает опыта
Если можно объясните на примере | |
|
| |
|
|
|
| ок
создай модуль Global в нем объяви переменную
Dim lReportSelect AS Long
|
в форме перед вызовом отчета
(для другой формы другое значение)
в отчете на событие открытие
Select Case
Case 1
Me.RecordSource ="......текст запроса1"
Case 2
Me.RecordSource ="......текст запроса2"
и т.д.
End Select
|
| |
|
| |
|
|
|
| Cпасибо за пример
Вопрос решается если в модуле Global переменную объявлять так:
Public lReportSelect As Long
но не так
Dim lReportSelect AS Long
Спасибо всем | |
|
| |
|
|
|
| Точно, спутал | |
|
| |
|
|
|
| Добрый день
Появился вопрос
Есть отчет [O1] в котором RecordSource задается вышеописанным способом
Этот отчет помещаю как подчиненный на другом отчете [O2]
Соответственно в форме открываю не подчиненный отчет [O1], но главный отчет [O2].
Отчет [O2] не открывается (открывается модуль подчиненного отчета [O1] на этой строке
Case 1: Me.RecordSource ="Z1"
Главный отчет [O2] основан на таблице с большим числом записей.
Главный отчет [O2] без подчиненного открывается 15 сек.
Подчиненный отчет [O1] на других главных отчетах (не такие объемные) открывается нормально - в том смысле что не мешает открывать Главный отчет.
Попробовал напрямую в Подчиненном отчете [O1] на его открытие задать
Me.RecordSource ="Z1" (без выполнения дейсвий в раннее предложенном примере)
Результат такой же.
Я так понимаю если отчет объемный, то RecordSource должен быть установлен постоянный, а не задаваться при открытии.
Так ли это и можно ли решить эту проблему | |
|
| |