Можно как-нибудь запретить вызов отчета? Отчет вызывается из формы. Можно как-нибудь запретить вызов отчета из отчетов?
Nina 13.07.2001
Подробнее Если форма не открыта отчет открываться не должен, т.к. из формы туда параметры передаются. Т.е. если пытаться открыть отчет не открывая формы, то отчет требует ввести параметры. Я пробовала завести какую-нибудь общую переменную, которая при открытии формы становится TRUE, а если не открыта FALSE. Потом на открытие отчета ее проверяю. Если FALSE отчет не открывать. Но почему-то ничего не выходит. Отчет все равно запрашивает параметры из формы.
MonstrAccessa :)) 13.07.2001
Re: Подробнее а ты перед открытием отчета смотри - загружена форма или нет напиши функцию например RepOpen(repnam,howopen) :)) и в ней проверяй! вот тебе функция :))
Public Function IsFormLoaded!(FrmName$) As Boolean Dim c As Object On Error GoTo errIsFormLoaded
'Для каждой из форм For Each c In Forms
'Проверяем открыта ли форма If c.name Like FrmName Then IsFormLoaded = True: Exit Function Next For Each c In Reports
'Проверяем для одноименного отчета If c.name Like FrmName Then IsFormLoaded = True: Exit Function
Next 'Если что-то не срослось - всё нафих... IsFormLoaded = False Exit Function errIsFormLoaded: MsgBox Err.Description IsFormLoaded = False Exit Function End Function
Nina 13.07.2001
Поясните Что-то не совсем понимаю. В какой момент должна вызываться функция RepOpen(repnam,howopen)? Ведь если я из окна базы данных вызываю отчет(например двойн. щелчком мыши) происходит событие OpenReport! Как же перед открытием отчета смотреть открыта ли форма!?
MonstrAccessa :)) 13.07.2001
If Not IsFormLoaded("НУЖНАЯ ВАМ ФОРМА") Then Cancel = True
напишите это в отчете на событии OnOpen (Открытие) а саму функцию "затусуйте" в модуль
ДиД 13.07.2001
Вариант Возьмите функцию IsLoaded из примерной базы "Борей" вставьте себе в модуль (она в дальнейшем пригодится). Как сказано выше "запихните" варажение на событие OnOpen :
If IsLoaded("НУЖНАЯ ВАМ ФОРМА") Then Else If MsgBox("Для открытия отчета необходимо задать параметры в форме 'Нужная Вам форма', vbCritical+vbOKOnly,"Ошибка!")=vbOK Then Cancel = True End If End If