2012-11-17 41 views
2

我的目標是通過將Query字符串與變量合併,將5個文本框的結果返回到SQL查詢中。如何在查詢中使用許多複選框值

如何讓我的代碼運行,以便在複選框被選中時,值(例如:ID,SC ...)被記錄並放入Query中?如果複選框未被選中,則不會將其置於查詢中。

5個複選框如下:

Checkbox picture

代碼I電流有記錄一個文本框是否被選中,並把值(例如: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部分。

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

我的問題是,我不知道如何以另一種方式做到這一點。我希望我的代碼能夠運行,以便在複選框未選中時不會進入查詢字符串。

任何幫助將不勝感激。

回答

2

這兩個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 = ""(一個空字符串)。如果我猜錯了,你會有更多的工作要做,但希望這仍然會指向你一些有用的東西。

+0

假設我不想包含空字符串('tblF.f1 =「」''),你是對的。我不知道「IN」表達式,並且您的代碼非常有用,謝謝! –

相關問題