Моя глобальная переменная не переносится в диалоговую форму при вызове из отчета - PullRequest
0 голосов
/ 15 марта 2019

Обновление от 15.03.19 для добавления нового кода объявления в разделе общих объявлений:

Option Compare Database  
  ' Access global variables definition  
   Global bInReportOpenEvent As Boolean  

   Option Explicit

Я получаю сообщение об ошибке:

"Выражение При открытии вы ввели в качестве свойства событияустановка привела к следующей ошибке: константы, строки фиксированной длины, массивы, определяемые пользователем типы и операторы Declare не допускаются в качестве членов Pubblic объектных модулей. "

Обновление 3/15/19 для добавления кода объявления.Тем не менее значение bInReportOpenEvent потеряно при вызове диалоговой формы.

Option Compare Database    
   Dim bInReportOpenEvent As Boolean    

Function IsLoaded(strNme As String) As Boolean    

   IsLoaded = CurrentProject.AllForms(strNme).IsLoaded  

End Function  

Я создаю отчет о доступе, который вызывает диалоговую форму для запроса конкретной записи для отображения в отчете.В отчете в качестве источника записи используется запрос.Я устанавливаю глобальное поле в модуле «Открыть отчет», чтобы диалоговую форму нельзя было выполнить самостоятельно.Если вызывается диалоговая форма и глобальное поле, установленное в отчете, не задано, я хочу выйти с сообщением.Модуль "Открыть мой отчет" выглядит следующим образом:

Public Sub Report_Open(Cancel As Integer)
Dim outCome1 As String  
' Set public variable to true to indicate that the report  
' is in the Open event  
bInReportOpenEvent = True  
MsgBox (bInReportOpenEvent)  
' Open Appt Query Dialog  
DoCmd.OpenForm "craid CMM Client Report Dialog", , , , , acDialog  

' Cancel Report if User Clicked the Cancel Button  
If IsLoaded("craid CMM Client Report Dialog") = False Then Cancel = True

MsgBox ("Is Dialog Form Loaded?")  
 MsgBox (IsLoaded("craid CMM Client Report Dialog"))  
'outCome1 = (Reports("CMM Client Status    Report").Controls("googleoutcome").Value) 
'MsgBox (outCome1)    

' Set public variable to false to indicate that the  
' Open event is completed  

bInReportOpenEvent = False  
End Sub  

Моя форма, открытая для моей диалоговой формы, выглядит следующим образом:

Private Sub Form_Open(Cancel As Integer)    
If Not bInReportOpenEvent Then  
MsgBox ("In Not bInReportOpenEvent Logic")  
MsgBox (bInReportOpenEvent)  

' If we're not called from the report  
  MsgBox "For Use From CMM Client Status Report Only", _    
  vbOKOnly  
  Cancel = True  
End If  

End Sub    

Есть идеи, почему?Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 марта 2019

На мой вопрос ответили.Решение - поместить объявление глобальной переменной в модуль кода VBA.

...