Является ли источник управления текстовым полем и / или синтаксис вызова функции недействительным или это ошибка MS Access?Есть ли обходной путь? - PullRequest
2 голосов
/ 26 апреля 2019

У меня есть функция, которая прекрасно работает при вызове из VBA независимо от того, в какие аргументы я передаю значения или не передаю значения.

Функция также работает при вызове из источника управления текстового поля в непрерывной форме, если я передаю значения всем аргументам.

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

Я попытался указать ByVal для аргументов и не использовать значения по умолчанию для необязательных аргументов, но это не сработало. Я проверил, что функция общедоступна и что нет ошибок или типов несоответствий. Это определенно связано с синтаксисом, когда не передается значение в первый необязательный аргумент (две запятые рядом друг с другом)

Источник управления, который работает:

=GetProfile(Nz([FieldName],0),"",Forms("FormName"))

Источник управления, который вызывает ошибку:

=GetProfile(Nz([FieldName],0),,Forms("FormName"))

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

Функция указана ниже и находится внутри модуля, а не модуля класса. Я упростил кишки функции для краткости:

Public Function GetProfile(varPerson as Variant, Optional strLName as string = "", Optional frm as Access.Form = Nothing) as string
GetProfile = "Test"
End Function

Я почти уверен, что это ошибка. Может кто-нибудь подтвердить или указать на мою ошибку? Если это ошибка, есть ли обходной путь?

...