Как установить переменную в значение поля, полученное в запросе - PullRequest
1 голос
/ 12 марта 2019

Обновлено 3/14/19, чтобы включить код для установки переменной, и ошибка времени выполнения равна '2427' 'Вы ввели выражение, которое не имеет значения.' по установке переменной outCome1

Private 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
    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    

Кроме того, я замечаю, что когда я запускаю, bInReportOpenEvent не остается True, когда в диалоговой форме, и поэтому он не кажется публичным, даже если я запускаю Sub Report Open с Public, и он все еще не остается True, когда в Диалоговая форма.


Я новичок, но довольно долго пытался установить переменную в значение поля, полученное в запросе, поэтому подумал, что смогу найти облегчение.

Я пишу отчет о доступе, который использует диалоговую форму, чтобы предложить пользователю, какую запись в базе данных отображать в отчете.

Я использую запрос в качестве источника записи для отчета. Одним из полей, которые я получаю с помощью запроса, является googleoutcome. Я хочу установить переменную на значение googleoutcome, чтобы я мог выполнить тестирование и отобразить результат в своем отчете.

Я пытался:

Dim outCome1 As String  
outCome1=Me!googleoutcome  
Dim outCome1 As String  
outCome1=[googleoutcome]  
Dim outCome1 As String  
outCome1=Me.googleoutcome  

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

ошибка '2427; Вы ввели выражение, которое не имеет значения.

Любая помощь приветствуется.

Лора

1 Ответ

1 голос
/ 13 марта 2019

В VBA ключевое слово Me относится к экземпляру класса, в котором выполняется текущий код.Например, в MS Access, если вы используете Me в модуле формы , он вернет экземпляр активной формы ;если вы используете его в модуле отчетов , он вернет экземпляр активного отчета .

Следовательно, вы используете Me в On OpenОбработчик события для отчета возвращает экземпляр открываемого отчета , а не открытую форму .

Вместо этого вы можете ссылаться на значениеуправление формой путем обхода объектной модели следующим образом:

Forms("YourFormName").Controls("YourControlName").Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...