Проблема локализации логических значений MS Access VBA - PullRequest
3 голосов
/ 28 марта 2020

Я строю несколько SQL строк запроса в VBA в базе данных MS Access (текущая версия Office 365 Access), и я столкнулся со странной проблемой локализации с логическими значениями, считанными из элементов управления формы : Me.MyBooleanControl возвращает «Wahr» (по-немецки «True») => сгенерированный SQL терпит неудачу.

Сейчас я использую обходной путь, оборачивая каждый запрос значения функцией, чтобы преобразовать значения в -1 / 0 вроде бы предложено здесь , но мне очень хотелось бы знать, есть ли прямой способ избежать этого. Я использовал ту же структуру кода в прошлом году в другой базе данных Access, не сталкиваясь с той же проблемой - и я абсолютно не представляю, что отличается (кроме MS Office, мой был обновлен).

Редактировать : Я нашел решение, см. Ответ ниже.

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Я не могу повторить это с моей локализацией Dani sh:

Me!UnboundCheckbox01 = True
Debug.Print Me!UnboundCheckbox01 ' returns String: "True"

Однако, похоже, что вы можете назначить практически любое значение любого типа данных для несвязанного флажка:

Me!UnboundCheckbox01 = "Martin"
Debug.Print Me!UnboundCheckbox01 ' returns String: "Martin"

Me!UnboundCheckbox01 = Now
Debug.Print Me!UnboundCheckbox01 ' returns Date like: 2020-03-29 13.45.23

Я не уверен, предназначено ли это - хотя свойство Value, как говорят, имеет тип данных Variant :

Свойство CheckBox.Value ( Доступ)

1 голос
/ 29 марта 2020

Пытаясь воспроизвести проблему независимо от остальной части моего кода, я прибил ее и обнаружил, что это моя ошибка: я установил флажок для несвязанных сообщений как True, который, казалось, работал нормально, но вызывает проблему:

Private Sub Form_Load()
    Me.UnboundCheckbox01 = True
    Me.UnboundCheckbox02 = -1
End Sub

Private Sub ReadCheckBox()
    Debug.Print Me.UnboundCheckbox01 ' returns localized value "Wahr"
    Debug.Print Me.UnboundCheckbox02 ' returns -1 as expected

    ' after manually toggeling UnboundCheckbox01 to unchecked
    ' and back to checked again, the value returns as -1 too
End Sub

Извините! В следующий раз я буду соблюдать правила и предоставлю некоторый код - иногда вопрос исчезает, просто делая это ...

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