2

私の目標は、クエリ文字列を変数に組み込むことにより、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セクションに入ります。

私が使用している方法は、機能していても効率的ではないことを知っています。

私の問題は、これを別の方法で行う方法がわからないことです。チェックボックスがチェックされていないときにクエリ文字列に入らないようにコードを機能させたいです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

これらの2つのWHERE句は、同等の結果を生成するはずです。2番目の形式に切り替えることを検討してください。

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 = ""条件(空の文字列)を実際に含めたくないと思いました。私が間違っていると推測した場合、あなたはもっとやるべきことがあるでしょうが、うまくいけば、これはあなたに何か有用なことを教えてくれるでしょう。

于 2012-11-17T19:29:30.947 に答える