【问题标题】:How to use many checkbox values in a Query如何在查询中使用多个复选框值
【发布时间】:2012-11-18 03:29:30
【问题描述】:

我的目标是通过将查询字符串与变量合并,将 5 个文本框的结果返回到 SQL 查询中。

如何让我的代码正常工作,以便在选中复选框时记录值(例如:ID、SC...)并将其放入查询中?如果未选中复选框,则不会将其放入查询中。

5个复选框如下:

我目前要记录一个文本框是否被选中,并将值(例如:ID、SC、AS...)放入变量的代码如下:

If (Me.BoxID = False) And (Me.BoxSC = False) And (Me.BoxASSC = False) And (Me.BoxAS = False) And (Me.BoxEH = False) Then
MsgBox "You must check a Fonction Checkbox", 0
Exit Sub
Else
    If (Me.BoxID= True) Then IDValue = Chr(34) & "ID" & Chr(34) Else IDValue = """"""
    If (Me.BoxSC= True) Then SCValue = Chr(34) & "SC" & Chr(34) Else SCValue = """"""
    If (Me.BoxASSC= True) Then ASSCValue = Chr(34) & "ASSC" & Chr(34) Else ASSCValue = """"""
    If (Me.BoxAS= True) Then ASValue = Chr(34) & "AS" & Chr(34) Else ASValue = """"""
    If (Me.BoxEH= True) Then EHValue = Chr(34) & "EH" & Chr(34) Else EHValue = """"""
End If

fonctionQryString = "(((tblF.f1)=" & IDValue & ") OR " + "((tblF.f1)=" & SCValue & ") OR " + "((tblF.f1)=" & ASSCValue & ") OR " + "(tblF.f1)=" & ASValue & ") OR " + "(tblF.f1)=" & EHValue & ")))"

fonctionQryString 进入 SQL 查询的 WHERE 部分。

我知道我使用的方法效率不高,即使它有效。

我的问题是我不知道如何以另一种方式做到这一点。我希望我的代码能够正常工作,以便在未选中复选框时,它不会进入查询字符串。

任何帮助将不胜感激。

【问题讨论】:

    标签: vba ms-access checkbox


    【解决方案1】:

    这两个WHERE 子句应该产生相同的结果。考虑切换到第二种形式。

    WHERE tblF.f1 = "ID" OR tblF.f1 = "SC" OR tblF.f1 = "AS"
    WHERE tblF.f1 IN ("ID","SC","AS")
    

    根据我对您要达到的目标的理解,这是一个粗略且未经测试的代码示例,用于生成类似的 WHERE 子句。

    Dim fonctionQryString As String
    Dim lngLoopNum As Long
    Dim strControlName As String
    Dim strValueList As String
    For lngLoopNum = 1 To 5
        Select Case lngLoopNum
        Case 1
            strControlName = "ID"
        Case 2
            strControlName = "SC"
        Case 3
            strControlName = "ASSC"
        Case 4
            strControlName = "AS"
        Case 5
            strControlName = "EH"
        End Select
        If Me.Controls("Box" & strControlName) = True Then
            strValueList = strValueList & "," & Chr(34) & _
                strControlName & Chr(34)
        End If
    Next
    If Len(strValueList) > 0 Then
        fonctionQryString = "tblF.f1 IN (" & Mid(strValueList, 2) & ")"
    Else
        MsgBox "You must check a Fonction Checkbox"
    End If
    

    我假设您实际上并不想包含条件WHERE tblF.f1 = ""(一个空字符串)。如果我猜错了,您还有更多工作要做,但希望这仍然会为您指出一些有用的东西。

    【讨论】:

    • 您假设我不想包含空字符串 (tblF.f1 = "") 是正确的。我不知道IN这个表达式,你的代码很有帮助,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多