Отчет о доступе не позволит мне ссылаться на поле в VBA, если оно не включено в отчет самостоятельно - PullRequest
3 голосов
/ 15 октября 2010

Итак, в форме доступа или отчете хороший способ показать что-то динамическое на экране, более сложное, чем =[UnitPrice]*[Quantity], - перейти в VBA.

например. в этом упрощенном примере базовая таблица для этого отчета имеет два поля ShowTax и TaxRate . Создавая элемент управления TextBox =GetTaxInfo, я ввожу некоторую сложность в VBA:

Public Function GetTaxInfo() As String

    Dim result As String
    If Me!ShowTax = 0 Then
        result = "Tax included @ " & Me!TaxRate

    Else
        result = ""
    End If

    GetTaxInfo = result

End Function

ОК, это работает ... пока у меня есть поле где-то еще, которое ссылается на TaxRate. В противном случае он просто печатает #Error. Как будто ему нужно предварительно загрузить поле, прежде чем его можно будет использовать в коде VBA. Это не конец света, потому что у меня в отчете могут быть поля, настроенные так, чтобы они не были видны, но это неопрятно.

Так что это тот случай, когда вы не можете ссылаться на поле в коде VBA, поддерживающем отчет , если уже не ссылался на поле обычным способом как поле, запеченное в отчет?

Я не помню, чтобы раньше сталкивался с этим ограничением. Или у меня есть испорченный отчет? (Я пробовал обычное сжатие / восстановление, экспорт / реимпорт отчета и т. Д.)

Edit:

странная вещь ... теперь она снова работает. И - я почти уверен - в отчете нет контроля. вот почему я думал, что это было коррупцией в отчете.

1 Ответ

4 голосов
/ 15 октября 2010

Вам понадобится элемент управления в форме / отчете.

Если это слишком запутанно, вы можете поместить функцию в модуль и использовать в RecordSource (на основе запроса).Нет смысла спрятать всю эту логику в отчете, когда она может быть использована и в других местах.

Public Function GetTaxInfo(ShowTax as Boolean, TaxRate as Single) As String 

    Dim result As String 
    If ShowTax = 0 Then 
        result = "Tax included @ " & TaxRate 

    Else 
        result = "" 
    End If 

    GetTaxInfo = result 

End Function 

Тогда для этого поля и в этом отчете, и в других настройках будет установлено управление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...