Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: #Aitor en 8 Marzo 2018, 03:10 AM

Título: Eficiencia para filtros
Publicado por: #Aitor en 8 Marzo 2018, 03:10 AM
Buenas, necesito filtrar en una base de datos según las opciones que doy en la imagen.

(https://image.ibb.co/mGPo3S/subir1.png)

Viendo todas las posibilidades he hecho una mega chapuza con if/elseif/else, ya que no veo una forma amigable de poner unos select case ahi.

El resultado es el siguiente:

Código (vb.net) [Seleccionar]

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If ComboBox1.Text <> "Seleccionar usuario" Then
           If (DateTimePicker1.Enabled) Then
               If (No.Checked = False And Si.Checked) Then
                   ' Query con usuario, fecha, y giros (solo los dados)
               ElseIf (No.Checked And Si.Checked = False) Then
                   ' Query con usuario, fecha, y giros (solo los NO dados)
               Else
                   'Query con usuario y fecha
               End If
           Else
               If (No.Checked = False And Si.Checked) Then
                   ' Query con usuario, y giros (solo los dados)
               ElseIf (No.Checked And Si.Checked = False) Then
                   ' Query con usuario, y giros (solo los NO dados)
               Else
                   ' Query con usuario
               End If
           End If
       Else
           If (DateTimePicker1.Enabled) Then
               If (No.Checked = False And Si.Checked) Then
                   ' Query con fecha, y giros (solo los dados)
               ElseIf (No.Checked And Si.Checked = False) Then
                   ' Query con fecha, y giros (solo los NO dados)
               Else
                   ' Query  fecha.
               End If
           Else
               If (No.Checked = False And Si.Checked) Then
                   ' Query con giros (solo los dados)
               ElseIf (No.Checked And Si.Checked = False) Then
                   ' Query con giros (solo los NO dados)
               End If
           End If
       End If
   End Sub


La idea es mandar una consulta diferente a la base de datos en función de que fue lo que se filtró.

Mi pregunta es, ¿hay alguna forma de hacer más eficiente todo esto?