У меня есть отчет, зависящий от запроса. Отчет отображается правильно, но я пытаюсь сделать так, чтобы видимость метки зависела от поля да / нет в запросе.
Следующее производит ошибка 2424, что поле не найдено:
Private Sub Report_Open(Cancel As Integer)
lblUppersIncluded.Visible = ysnUppersIncluded
End Sub
Альтернативно:
Private Sub Report_Activate()
lblUppersIncluded.Visible = ysnUppersIncluded
End Sub
Дает ошибка 2427 выражение не имеет значения. Аналогично для Report_Load.
Однако поле команд, созданное в отчете, которое выполняет ту же строку кода, выполняется правильно.
Я подозреваю, что все события отчета запускаются до выполнения запроса, поэтому эти поля не были заполнены. Есть ли событие, которое я могу использовать после выполнения запроса?
Я обнаружил, что код, зависящий от полей запроса, будет работать, если используется событие Detail_Format. Это событие запускается в представлении предварительного просмотра печати, но не в представлении отчета.
Иногда лучший способ обойти подобные проблемы - преобразовать метку в текстовое поле и использовать условное форматирование. Если ваши потребности в форматировании не удовлетворяются тем, что может быть выполнено с помощью условного форматирования, вы можете изучить код.
Специально для того, чтобы метка была видимой или нет, вам даже не нужно условное форматирование. Преобразуйте в текстовое поле и используйте:
=IIF([My condition for visible label],"My Label text:","")
в качестве источника управления.
Спасибо за совет @ SunKnight0, ваш подход намного надежнее.