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
Что происходит, если оба проверены, первый случай истинен, так как chkcombin1.Value = 1
Так что вам нужно проверить, что другой флажок не установлен.
Редактировать опкомментарии
Поскольку у вас есть несколько флажков, я бы посоветовал:
это не проверено и не оптимально, но оно должно дать вам представление
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
SO то, что он делает, записывает флажок no, отмеченный частью вашего оператора, затем он подготавливает предложение where, используя функцию для генерации необходимых частей, если предложение where является пустой строкой, он пишет чтоэто должно быть для 1, где, затем добавляет все необходимые пункты and
.Наконец, это объединяет утверждение вместе.Если в предложении where ничего нет, вы получите Select * from table1