在我的工作站上,我一直在使用英语的Access。其他将使用我的表格的计算机也使用法语。最近对其进行测试,我发现即使声明为True / False,布尔变量也将作为Vrai / Faux出现。
当我需要在文本中使用变量(例如插入或仅是请求)时,就会出现问题。
我现在唯一的解决方法是使用另一个String类型的变量并将其从法语替换为英语。问题是...这是两条丑陋的线。我的意思是,除了我每次可能在请求中使用布尔变量之外,还必须有另一种方法?
编辑:这是两个示例。
SELECT [...] FROM [...] WHERE [...] in (false , " & SomeBooleanValue & ");
-- OR --
str_Sql = "INSERT INTO [...] VALUES ('" & form_Name & "', " & is_something & ")"
DoCmd.RunSQL str_Sql
答案 0 :(得分:3)
您可以在两个示例中使用参数,然后不必担心串联到您的SQL字符串中:
Sub Test_1()
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("", _
"PARAMETERS SomeBooleanValue BIT; " & _
"SELECT * FROM Table1 WHERE Field_2 = SomeBooleanValue")
With qdf
.Parameters("SomeBooleanValue") = True
Set rst = .OpenRecordset
End With
With rst
If Not (.BOF And .EOF) Then
.MoveFirst
Do
Debug.Print .Fields("Field_1") & " - " & .Fields("Field_2")
.MoveNext
Loop While Not .EOF
End If
End With
End Sub
和
Sub Test_2()
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.CreateQueryDef("", _
"PARAMETERS some_text TEXT(255), is_something BIT; " & _
"INSERT INTO Table1 VALUES (some_text, is_something)")
With qdf
.Parameters("some_text") = "Some random text"
.Parameters("is_something") = True
.Execute
End With
End Sub
答案 1 :(得分:1)
您可以使用以下格式表达式来强制True/False
输出字符串:
UKTrueFalse = Format(YourBooleanValue, "True;True;Fal\se")
对于您的SQL,您可以只使用数字值:
SELECT [...] FROM [...] WHERE [...] IN (0 , " & Str(Abs(SomeBooleanValue)) & ");