vba - 如何在查询中使用多个复选框值

标签 vba ms-access checkbox

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

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

5 个复选框如下:

Checkbox picture

我当前必须记录是否选择了文本框,并将值(例如: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 部分。

我知道我使用的方法虽然有效,但效率不高。

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

任何帮助将不胜感激。

最佳答案

这两个 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 = ""(空字符串)。如果我猜错了,您将需要做更多工作,但希望这仍然会给您带来一些有用的东西。

关于vba - 如何在查询中使用多个复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13433740/

相关文章:

excel - 使用 vba 插入公式的结果

vba - 将多个工作表导出为 CSV 并指定保存文件夹

excel - 使用 VBA 循环使用特定名称的工作表

ms-access - 你如何在 VBA 中重新定义一个数组?

JavaFX TableView CheckBoxTableCell 使用 boolean 值而不是 SimpleBooleanProperty

sharepoint - 使用 Excel VBA 获取共享点文件夹的内容

excel - 如何将 Excel 工作表名称传递给 Access 子例程?

sql - MS Access SQL 参数太少错误

使用checked属性动态创建的jQuery复选框

css - MVC 中的默认 CSS3 复选框模板