当我与字符串连接以插入数据库表时,我的visual basic 6转换为葡萄牙语布尔变量。
实施例: " Updata tableX set value =" &安培;真
正如vb6解释: " Updata tableX set value = verdadeiro"
在葡萄牙语中,true是verdadeiro,导致错误插入数据库
答案 0 :(得分:1)
你用什么作为后端?如果是SQL Server,您可能只想:
// attempt initialization
if let foo = Foo(.asDegree(11.0)) {
// getter
if case .asString(let windDirection) = foo.windDirection {
print(windDirection) // N
}
// setter
foo.windDirection = .asDegree(15.75)
// getter
if case .asString(let windDirection) = foo.windDirection {
print(windDirection) // NE
}
}
代替。
或者,如果您可以使用:
"Update tableX set value = " & iif(value, 1, 0)
这本质上是一个压缩的if语句。这将需要从混合中取出字符串转换,这正是导致问题的原因。
答案 1 :(得分:1)
这是Visual Basic 6的bug:
当布尔常量或变量连接成字符串且区域设置不是英语时,Visual Basic 6.0会将布尔值强制转换为包含值文本的字符串。例如,当“区域设置”设置为“法语”时,您会看到字符串" Vrai"为真。不幸的是," Vrai"即使应用了CBool,也不会将其转换回布尔值True。如果将CBool应用于包含本地化字的字符串,则会发生类型不匹配错误。
已在Service Pack 3中修复
此错误已在Visual Studio 6.0 Service Pack 3中得到纠正。
我建议安装所有可用的更新:
答案 2 :(得分:0)
您隐式调用CStr()
函数,区域设置感知。
也许试试:
"Updata tableX set value = " & Str$(True)
Str$()
函数始终使用不变区域设置。
呃,或者只是:
"Updata tableX set value = True"