Vba 如何在查询中使用多个复选框值
我的目标是通过将查询字符串与变量合并,将5个文本框的结果返回到SQL查询中 如何使代码正常工作,以便在选中复选框时,记录值(例如:ID,SC…)并将其放入查询中?如果未选中复选框,则不会将其放入查询中 5个复选框如下所示:Vba 如何在查询中使用多个复选框值,vba,ms-access,checkbox,Vba,Ms Access,Checkbox,我的目标是通过将查询字符串与变量合并,将5个文本框的结果返回到SQL查询中 如何使代码正常工作,以便在选中复选框时,记录值(例如:ID,SC…)并将其放入查询中?如果未选中复选框,则不会将其放入查询中 5个复选框如下所示: If (Me.BoxID = False) And (Me.BoxSC = False) And (Me.BoxASSC = False) And (Me.BoxAS = False) And (Me.BoxEH = False) Then MsgBox "You must
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 & ")))"
当前代码必须记录是否选择了文本框,并将值(例如: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 & ")))"
FonctionQRysting进入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=“”
(一个空字符串)。如果我猜错了,您将有更多的工作要做,但希望这仍然会为您指出一些有用的内容。您正确地假设我不想包含空字符串(tblF.f1=“
)。我不知道表达式中的,您的代码非常有用,谢谢!