Запуск отчета напрямую и из формы навигации - проблема с ссылками - PullRequest
0 голосов
/ 31 августа 2018

У меня есть форма в MS Access (365), которая принимает различные критерии выбора и запускает отчет с этими критериями, встроенными в условие where команды DoCmd.OpenReport. Отчет запускается с помощью кнопки с кодом VBA On Click, поскольку необходимо создать условие, в соответствии с которым, если таковые имеются, были выбраны критерии. Это все работает нормально, когда я открываю форму выбора критериев напрямую. Я хочу открыть форму критериев выбора через форму навигации, поскольку в той же форме навигации будут запускаться другие похожие отчеты с критериями выбора.

Как указано выше, все работает, когда я непосредственно открываю форму критериев выбора и запускаю отчет, но когда я пробовал его через форму навигации, он не работал. Это нормально, я нашел решение на сайте MS Dev Center , которое работает, когда я запускаю форму критериев выбора (а затем и отчет) из формы навигации. Все хорошо. Но тогда (конечно) ссылки в кнопке «Код щелчка» не работают, когда я непосредственно открываю форму критериев выбора и запускаю отчет. Я хотел бы иметь возможность запустить форму критериев выбора, а затем отчет с обеих позиций - непосредственно из MS Access и через форму навигации. Вероятно, будет какой-то способ достичь этого, но (как я уже говорил выше, я новичок в MS Access и VBA), я мог бы потратить много времени, цепляясь за тени. Надеюсь, кто-нибудь сможет подсказать мне самый простой способ сделать это?

Пример кода с соответствующими комментариями ниже. При запуске критериев выбора формируются и сообщаются напрямую, строка прокомментирована как AAA работает нормально, MsgBox ABB и DDD и те, которые за пределами всего шоу; при запуске их через навигационную форму строка BBB работает нормально, MsgBox ABB и DDD и все, что за пределами этого показано (ну, они бы хотели, за исключением того, что я еще не закодировал опцию [NavigationSubform] во всех других компонентах, где строится вторая часть). Когда я переключаю линии AAA и BBB (т.е. комментирую другую), MsgBox AAA показывает нормально, тогда происходит сбой с:

Не удается найти ссылочную форму "frmSelectSpeciesSiteDates"

до достижения MsgBox DDD.

MsgBox "ABB"

'If Not Forms![frmSelectSpeciesSiteDates]![cboCommonName] = "" Then 
         ' AAA Works when frmSelectSpeciesSiteDates is run directly

If Not Forms![frmNavSelectiveReports]![NavigationSubform].[Form]![cboCommonName] = "" Then
         ' BBB Works when frmSelectSpeciesSiteDates is called from a navigation form

   strWhereCondition = strWhereCondition & "[common name] = " & Chr(34) & Me![cboCommonName] & Chr(34)

End If

MsgBox "DDD"

1 Ответ

0 голосов
/ 31 августа 2018

У вас есть форма с именем frmSelectSpeciesSiteDates, в которой есть поле со списком с именем cboCommonName. Форма также включает код VBA, который использует значение поля со списком для изменения строковой переменной ...

strWhereCondition = strWhereCondition & "[common name] = " & Chr(34) & Me![cboCommonName] & Chr(34)

Однако вы хотите изменить строку только тогда, когда в выпадающем списке есть что-то, кроме пустой строки. И именно здесь вы боретесь. Вы ссылаетесь на комбинированный список одним способом, когда форма открывается непосредственно как форма верхнего уровня, и другим способом, когда он содержится в форме навигации ...

Forms![frmSelectSpeciesSiteDates]![cboCommonName]
Forms![frmNavSelectiveReports]![NavigationSubform].[Form]![cboCommonName]

Я предлагаю вам отказаться от обоих и ссылаться на комбинированный список так же, как и на то, где вы изменяете строку (Me!cboCommonName) ...

If Not Me!cboCommonName = "" Then
    strWhereCondition = strWhereCondition & "[common name] = " & Chr(34) & Me!cboCommonName & Chr(34)
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...