2016-12-12 9 views
1

My visual basic 6 переводит на португальские логические переменные, когда я объединяюсь со строкой для вставки в таблицу базы данных.My visual basic 6 переводит на португальские логические переменные, когда я объединяюсь со строкой для вставки в таблицу базы данных

Пример: "установленное значение Updata tableX =" & истинно

В VB6 интерпретирует: "Updata tableX установлено значение = verdadeiro"

В португальском верно, verdadeiro, который вызывает ошибку для вставки в база данных

+0

Что вы используете в качестве бэкэнд? Вместо этого вы можете просто «установить значение = 1». –

ответ

1

Что вы используете в качестве бэкэнд? Если SQL Server, вы можете просто хотеть:

"Update tableX set value = " & iif(value, 1, 0) 

вместо этого.

В качестве альтернативы, если вы можете использовать:

"Update tableX set value = " & iif(value, "true", "false") 

который является по существу уплотненный, если заявление. Это приведет к преобразованию строк из состава, что и является причиной вашей проблемы.

0

Вы неявно вызываете функцию CStr(), которая находится в , с учетом локали.

Может попробовать:

"Updata tableX set value = " & Str$(True) 

Str$() функция всегда использует инвариантного Locale.

Er, или просто:

"Updata tableX set value = True" 
1

Это bug из Visual Basic 6:

Когда Булевы константы или переменные объединяются в строку и региональные настройки не английский, Visual Basic 6.0 принудительно возвращает логическое значение в строку, содержащую текст значения. Например, когда региональные настройки установлены на французский язык, вы увидите строку «Vrai» для True. К сожалению, «Vrai» не будет преобразован обратно в Boolean True даже при применении CBool. Если CBool ​​применяется к строке, содержащей локализованное слово, возникает ошибка несоответствия типа.

Он был установлен в пакете обновления 3

Эта ошибка была исправлена ​​в Visual Studio 6.0 с пакетом обновления 3.

Я рекомендую установить все доступные обновления: