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

Ms access MS Access-根据语言使用布尔变量的SQL命令,ms-access,localization,Ms Access,Localization,在我的工作站上,我一直在用英语访问。其他一些使用我的表格的计算机有法语版本。最近测试它时,我发现布尔变量,即使声明为True/False,也显示为Vrai/Faux 当我需要在文本中使用变量,比如插入或仅仅是请求时,就会出现问题 我现在唯一的解决方法是使用另一个String类型的变量,并将其从法语替换为英语。这个问题是。。。这是两条难看的线。我的意思是,除了每次在请求中使用布尔变量时都必须这样做之外,还有其他方法吗 编辑:这里有两个例子 SELECT [...] FROM [...] WHERE

在我的工作站上,我一直在用英语访问。其他一些使用我的表格的计算机有法语版本。最近测试它时,我发现布尔变量,即使声明为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

您可以使用此格式表达式强制执行
True/False
输出字符串:

UKTrueFalse = Format(YourBooleanValue, "True;True;Fal\se")
对于SQL,您可以只使用数值:

SELECT [...] FROM [...] WHERE [...]  IN (0 , " & Str(Abs(SomeBooleanValue)) & ");

您可以使用此格式表达式强制执行
True/False
输出字符串:

UKTrueFalse = Format(YourBooleanValue, "True;True;Fal\se")
对于SQL,您可以只使用数值:

SELECT [...] FROM [...] WHERE [...]  IN (0 , " & Str(Abs(SomeBooleanValue)) & ");

您可以在两个示例中使用参数,然后不必担心连接到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


您可以在两个示例中使用参数,然后不必担心连接到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


你能给我们举一个你什么时候在文本中使用变量的例子吗?通常,例如,我会给我的布尔字段起一个名字,比如
HasQuit
,然后写一些类似
WHERE HasQuit
,不必担心
=TRUE
位,但我不认为你是这样使用它的……你说“…布尔变量,即使声明为TRUE/False…”是什么意思?变量声明为数据类型,而不是值。您可以将数字与
TRUE
/
FALSE
互换使用
True=-1
False=0
将变量转换为字符串(例如通过连接)时会出现问题。德语访问示例:
?“真的是”&True
->
真的是Wahr
我编辑了我的答案,以包含您问题的直接解决方案。也就是说,考虑戴伦的扩展代码。你能给我们一个例子,当你在文本中使用变量时?通常,例如,我会给我的布尔字段起一个名字,比如
HasQuit
,然后写一些类似
WHERE HasQuit
,不必担心
=TRUE
位,但我不认为你是这样使用它的……你说“…布尔变量,即使声明为TRUE/False…”是什么意思?变量声明为数据类型,而不是值。您可以将数字与
TRUE
/
FALSE
互换使用
True=-1
False=0
将变量转换为字符串(例如通过连接)时会出现问题。德语访问示例:
?“真的是”&True
->
真的是Wahr
我编辑了我的答案,以包含您问题的直接解决方案。也就是说,考虑戴伦的扩展代码。我猜格式化有2个真值,因为复选框有3个状态的可能性。那么'Fal\se'呢?不,它代表“正;负;零”,因为VBA也将正值计算为真。事实上只有零是假的。需要转义的s,否则s将被读取为秒,因此将返回零。我猜该格式有2个true,因为复选框可能有3个状态?那么'Fal\se'呢?不,它代表“正;负;零”,因为VBA也将正值计算为真。事实上只有零是假的。需要转义的s,否则s将被读取为秒,因此将返回零。