2011-03-01 6 views
0

VB6을 사용하여모든 값을 표시하는 방법

나는 폼의 확인란과 콤보 박스를 사용하고 있습니다.

체크 박스를 클릭하면 기본적으로 콤보 박스가 비활성화됩니다.

코드.

Private Sub chkbox1_Click() 
    combobox1.enable = true 
End Sub 

Private Sub chkbox2_Click() 
    combobox2.enable = true 
End Sub 

출력 코드는 위의 코드가 작동,하지만 난 두 개의 체크 박스를 클릭하면, 두 개의 콤보가 그럼 난 쿼리가 콤보 상자의 값을 보여주는를 실행하여 사용할 수 있습니다

If chkbox1.Value = 1 Then 
    sql2 = "Select * from table1 where value = '" & combobox1 & "' " 
ElseIf chkbox2.Value = 1 Then 

    sql2 = "Select * from table1 where value = '" & combobox2 & "'" 
Else 
    sql2 = "Select * from table1" 
End If 

입니다.

I selected the value = 50 from combobox1 (checkbox1 clicked) 
I selected the value = 100 from combobox2 (checkbox2 clicked) 

나 출력 코드를 실행하는 예를 들어

후 출력 값 = 50, 또한 = 100의 값을 도시하지되는 위치 값을 표시한다.

출력 코드에 두 값이 모두 표시되어야합니다.

이 문제를 해결하는 방법.

은 VB6 코드 도움을 필요

모두 그래서 당신이 다른 확인란이 선택되어 있는지 확인하기 위해 확인해야 chkcombin1.Value = 1 이후, 첫 번째 경우에 해당하는 확인하는 경우 무엇 일어나고
+1

감소 것을 시도 할 수 -ElseIf' 중 하나의 조건이 충족되면 나머지 조건문은 실행되지 않습니다. 둘 다 얻으려면 if 문으로'chkcombin.Value = 1' 조건을 유지하십시오. – Mahesh

+0

설명이 명확하지 않습니다. 예를 들어, "chkcombin1"은 무엇입니까? 추가 설명을 위해 양식의 스크린 샷을 추가하는 것이 좋습니다. – Abbas

답변

2
If chkcombin1.Value = 1 And chkcombin2.Value = 0 Then 
    sql2 = "Select * from table1 where value = '" & combobox1 & "' " 
ElseIf chkcombin2.Value = 1 And chkcombin1.Value = 1 Then 

    sql2 = "Select * from table1 where value = '" & combobox2 & "'" 
ElseIf chckcombin1.Value = And chkcombin2.Value = 1 
    sql2 = "Select * from table 1 Where value = '" & combobox1 & "' and value = '" & combobox2 & "'" 
Else 
    sql2 = "Select * from table1" 
End If 

.

편집 영업 이익은 여러 확인란을 가지고 있기 때문에 나는 이것을 제안

논평 :이 테스트되지 않은 상태입니다

않으며 최적이지만 아이디어

Dim select As String = "Select * from table 1" 

'This needs to be a field for the whole class 
Dim where As String = "" 

If chkcombin1.Value = 1 Then 
    where += CreateCaluse(combobox1) 
End If 

'Then do that for each of your comboboxes 

'Then 
sql2 = select + where 

Private Function CreateClause(ByVal comboboxValue As String) As String 
    If where = "" Then 
     Return " Where value = '" & comboboxValue & "'" 
    Else 
     Return " and value = '" & comboboxValue & "'" 
    End If 
End Function 
당신에게 제공한다

그렇다면 구문의 no checkboxes checked 부분을 작성한 다음 필요한 부분을 생성하는 함수를 사용하여 where 절을 준비합니다 where 절이 빈 문자열이면 1에 대한 내용을 기록한 다음 필요한 모든 and 절을 추가합니다. 마지막으로이 명령문은 함께 결합됩니다. WHERE 절에 아무것도없는 경우에 당신은이 Select * from table1

+0

나는 10 개 이상의 체크 박스를 가지고있다. 그래서 대체 코드가 있거나 이걸해야만한다. ...? – Gopal

+0

@ Gopal 그럼 어떻게하면이 일을 완전히 바꾸어야 하는지를 바꿀 수 있습니다. 약간의 수정과 제안을 드리겠습니다 – msarchet

+0

코드를 설명해 주시겠습니까? 나는 혼란 스럽다 ... – Gopal

0

당신이

sql2 = "SELECT * FROM table1 WHERE 0=1" 
If chkbox1.Value = vbChecked Then 
    sql2 = sql2 & " OR value = '" & Replace(combobox1.Text, "'", "''") & "'" 
End If 
If chkbox2.Value = vbChecked Then 
    sql2 = sql2 & " OR value = '" & Replace(combobox2.Text, "'", "''") & "'" 
End If 
If chkbox3.Value = vbChecked Then 
    ... 

아니면 컨트롤 배열을 사용하는 경우 코드가 많은`만약에

sql2 = "SELECT * FROM table1 WHERE 0=1" 
For i = 1 To 10 
    If chkbox(i).Value = vbChecked Then 
     sql2 = sql2 & " OR value = '" & Replace(ComboBox(i).Text, "'", "''") & "'" 
    End If 
Next 
관련 문제