VBA Access 2016 IDE капитализирует свойство объекта - PullRequest
0 голосов
/ 15 октября 2018

Я работаю с блоком кода в VBA (Access 2016), чтобы получить статус контакта MailChimp через их API:

With CreateObject("MSXML2.ServerXMLHTTP")
    .Open Request, APIUrl & APIString & Criteria, False
    .setrequestheader "Authorization", "Basic " & APIAuth
    .send
    APIResponse = .responsetext
    If InStr(APIResponse, "{""exact_matches"":{""members"":[]") > 0 Then
        MailExist = False
        Else
        MailExist = True
        Set JSONControl = CreateObject("MSScriptControl.ScriptControl")
        JSONControl.language = "Jscript"
        APIString = "XXXXXXX"
        .Open Request, APIUrl & APIString & Criteria, False
        .setrequestheader "Authorization", "Basic " & APIAuth
        .send
        Set Subber = JSONControl.Eval("(" + .responsetext + ")")
        If Subber.status = "subscribed" Then
            MailSub = True
            Else
            MailSub = False
        End If
    End If
End With

К концу я использую объект Subber дляпосмотрите, подписан ли контакт или нет

Если Subber.status = "подписан", то

До недавнего времени это работало нормально, когда свойство 'status' имеет значениевнезапно заглавная IDE, приводящая к ошибке с сообщением «Объект не поддерживает это свойство или метод».

Я провел некоторое копание и нашел похожую проблему с решением здесь, но после выполнения решений «статус» все еще пишется с заглавной буквы.Я пытался проверить весь проект на наличие слова «Статус» безрезультатно, и ни один из элементов управления в моих формах также не использует его.У меня действительно было поле таблицы с именем «Status», но с тех пор я переименовал его, чтобы оно не влияло на него, и я также попытался установить публичную переменную под названием «status».Это сработало, чтобы установить свойство обратно в нижний регистр, но после запуска кода свойство возвращается к «Status» вместе с именем переменной.Я сейчас застрял и не могу понять, почему происходит капитализация!

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете попробовать CallByName

Функция CallByName используется для получения или установки свойства или для вызова метода во время выполнения с использованием строкового имени.Это означает, что вы можете передать требуемое свойство в качестве аргумента без этой заглавной буквы.Используйте vbGet для получения значения.

...