Eficiencia para filtros

Iniciado por #Aitor, 8 Marzo 2018, 03:10 AM

0 Miembros y 1 Visitante están viendo este tema.

#Aitor

Buenas, necesito filtrar en una base de datos según las opciones que doy en la imagen.



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?
Mi algoritmo en PHP (estupideces y más).
Código (php) [Seleccionar]
while($Se_feliz){
  Piensa_un_OBJETIVO(); // Sin excusas!
  if($Tienes_un_objetivo){
    Suspira(); // Sé paciente.
    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
      //RETURN; ¿O volvemos a empezar?
    }else{
      Inténtalo_de_nuevo();
    }
  }
}