2012-11-17 3 views
2

목표는 변수와 함께 쿼리 문자열을 통합하여 5 개의 텍스트 상자 결과를 SQL 쿼리로 반환하는 것입니다.쿼리에서 많은 확인란 값을 사용하는 방법

확인란을 선택하면 값 (예 : ID, SC ...)이 기록되어 쿼리에 배치되도록 코드를 작동 시키려면 어떻게해야합니까? 그리고 체크 박스가 선택되지 않으면 쿼리에 포함되지 않습니다.

Checkbox picture

코드 I 전류가 텍스트 박스가 선택되어 있는지 여부를 기록하는, 상기 값을 배치 할 수있다 (예 : AS, 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 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' 표현에 대해 몰랐고, 코드가 매우 유용합니다. 감사합니다! –

관련 문제