Foro de elhacker.net

Programación => .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
  1.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  2.        If ComboBox1.Text <> "Seleccionar usuario" Then
  3.            If (DateTimePicker1.Enabled) Then
  4.                If (No.Checked = False And Si.Checked) Then
  5.                    ' Query con usuario, fecha, y giros (solo los dados)
  6.                ElseIf (No.Checked And Si.Checked = False) Then
  7.                    ' Query con usuario, fecha, y giros (solo los NO dados)
  8.                Else
  9.                    'Query con usuario y fecha
  10.                End If
  11.            Else
  12.                If (No.Checked = False And Si.Checked) Then
  13.                    ' Query con usuario, y giros (solo los dados)
  14.                ElseIf (No.Checked And Si.Checked = False) Then
  15.                    ' Query con usuario, y giros (solo los NO dados)
  16.                Else
  17.                    ' Query con usuario
  18.                End If
  19.            End If
  20.        Else
  21.            If (DateTimePicker1.Enabled) Then
  22.                If (No.Checked = False And Si.Checked) Then
  23.                    ' Query con fecha, y giros (solo los dados)
  24.                ElseIf (No.Checked And Si.Checked = False) Then
  25.                    ' Query con fecha, y giros (solo los NO dados)
  26.                Else
  27.                    ' Query  fecha.
  28.                End If
  29.            Else
  30.                If (No.Checked = False And Si.Checked) Then
  31.                    ' Query con giros (solo los dados)
  32.                ElseIf (No.Checked And Si.Checked = False) Then
  33.                    ' Query con giros (solo los NO dados)
  34.                End If
  35.            End If
  36.        End If
  37.    End Sub
  38.  

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?