MS-Access-根据语言使用布尔变量的SQL命令

时间:2018-07-09 13:20:31

标签: ms-access localization

在我的工作站上,我一直在使用英语的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

2 个答案:

答案 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)) & ");