elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Criterios en Sql.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Criterios en Sql.  (Leído 1,170 veces)
mdg

Desconectado Desconectado

Mensajes: 73


Ver Perfil
Criterios en Sql.
« en: 18 Octubre 2007, 22:50 pm »

Hola foreros, nuevamente apelo a su conocimiento, de antemano gracias por su tiempo y por su ayuda.

El asunto es que tengo un procedimiento que me filtra registros y los inserta en un listview, el problema lo tengo en las opciones del filtrado, en el formulario tengo un Chek, alhacer ckick en este se habilita o deshabilita un combo en el cual tengo los datos de la tabla categorias en formato 001 - Administracion, 002 - Trafico, Etc , lo que pretendo es que si el chek esta en False que me filtre todos los registros y si esta en true me filtre los registros para la categoria seleccionada del combo, he simplificado en este caso por que a demas de opcion por categoria tengo 7 opciones mas por lo que no se me hace facil hacer una sql por que tendria que realizar una combinacion terrible de datos por lo que se me ocurrio lo que les marco en rojo pero no me da error pero tampoco funciona, o sea no me devuelve todos los registros.



Sub Filtrar()
On Error GoTo Hay_err_err

Dim Categoria As Variant

If Me.Check2.Enabled = True Then
Categoria = "*"
end If

If Me.Check2.Enabled = false Then
Categoria = Mid(Me.Combo4,1,3)
end If


Dbpath = App.Path & "\" & DirectorioBase & "\" & Db_A_Name
         
   StrSql = "SELECT * FROM tbl_Empleados WHERE categoria=" & Categoria
       
               
        Set Db = DBEngine.OpenDatabase(Dbpath, False, False, ";pwd=" & StrPass)
     
          Set Rst = Db.OpenRecordset(StrSql)
       
               
While Not Rst.EOF
       
          Set Item = Me.ListView2.ListItems.Add(, , Rst!legajo)
           Item.SubItems(1) = Rst!nombres '& ", " & Rst!Apelldos
              Rst.MoveNext
       
        Wend
       
Hay_err_exit:
   
 Rst.Close
 Db.Close
 
 Set Rst = Nothing
 Set Db = Nothing
 
Hay_err_err:
   
 Select Case Err.Number
 Case 3024
 
            MsgBox "Es imposible encontrar la base de datos. " & vbCrLf & vbCrLf & "Verifique que exista o que se encuentre en la ruta:" & App.Path & "\bases" & "  e intente nuevamente", vbInformation + vbOKOnly, "Aviso!"
'            Exit Function
           
 Case 3078
            MsgBox "Es imposible encontrar la tabla: " & vbCrLf & vbCrLf & "Verifique que exista o que se encuentre en la base de datos" & "Base_Actual.mdb" & "e intente nuevamente", vbInformation + vbOKOnly, "Aviso!"
            'Exit Function
 End Select
 
End Sub


Bueno, nuevamente gracias y disculpen si olvido algo es que lo escribo comoforme se me cruzan las palabras.


En línea

CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Criterios en Sql.
« Respuesta #1 en: 19 Octubre 2007, 03:03 am »

pues podrias "jugar" con una cadena de texto que vaya formando la consulta, por ejemplo al cargar el form pon el inicio de la sentencia SQL

Código:
'variable global en el form
Dim Consulta as String
dim Cons1 as string
dim Cons2 as String
dim Cons3 as string
dim Cons4 as string

Private sub  Form_Load()
    Consulta = "SELECT * FROM tbl_Empleados WHERE "
end sub



en caso de que deshabilites un check quitas cosas
Código:
Private Sub Check1_Click()
     if check1.value = 0 then cons1 = ""
End Sub

Private Sub Check2_Click()
     if check2.value = 0 then cons2 = ""
End Sub

Private Sub Check3_Click()
     if check3.value = 0 then cons3 = ""
End Sub

Private Sub Check4_Click()
     if check1.value = 0 then cons4 = ""
End Sub

y en cada Combo le pones le pones cosas
Código:
Private sub Combo1_Click()
    Cons1 = "categoria = " & mid(combo1, 1, 3) 
end sub

Private sub Combo2_Click()
    Cons2 = "Otracategoria" & mid(combo2, 1, 3)
end sub

Private sub Combo3_Click()
    Cons3 = "Otracategoria" & mid(combo3, 1, 3)
end sub

Private sub Combo4_Click()
    Cons4 = "Otracategoria" & mid(combo4, 1, 3)
end sub

y ya en el procedimiento de filtrar pegas todo.
Código:

if cons1 <> "" then consulta = consulta & cons1 & " AND "
if cons1 <> "" then consulta = consulta & cons2 & " AND "
if cons1 <> "" then consulta = consulta & cons3 & " AND "
if cons1 <> "" then consulta = consulta & cons4

' Esto es por si la cadena terminara en " AND "
if right(Consulta, 5) = " AND " then consulta = left(Consulta, len(consulta)-5)

consulta = consulta & " ORDER BY uncampo;"

' y ahora si haces la consulta
Dbpath = App.Path & "\" & DirectorioBase & "\" & Db_A_Name
Set Db = DBEngine.OpenDatabase(Dbpath, False, False, ";pwd=" & StrPass)
Set Rst = Db.OpenRecordset(Consulta)
             
While Not Rst.EOF     
          Set Item = Me.ListView2.ListItems.Add(, , Rst!legajo)
          Item.SubItems(1) = Rst!nombres '& ", " & Rst!Apelldos
          Rst.MoveNext
Wend
       
Hay_err_exit:
   
 Rst.Close
 Db.Close
 
 Set Rst = Nothing
 Set Db = Nothing
 
Hay_err_err:
   
 Select Case Err.Number
 Case 3024
 
            MsgBox "Es imposible encontrar la base de datos. " & vbCrLf & vbCrLf & "Verifique que exista o que se encuentre en la ruta:" & App.Path & "\bases" & "  e intente nuevamente", vbInformation + vbOKOnly, "Aviso!"
'            Exit Function
           
 Case 3078
            MsgBox "Es imposible encontrar la tabla: " & vbCrLf & vbCrLf & "Verifique que exista o que se encuentre en la base de datos" & "Base_Actual.mdb" & "e intente nuevamente", vbInformation + vbOKOnly, "Aviso!"
            'Exit Function
 End Select
 
End Sub







« Última modificación: 19 Octubre 2007, 16:38 pm por CeLaYa » En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Reclamar por no entregar los criterios mínimos?
Foro Libre
Psyke1 0 1,339 Último mensaje 15 Diciembre 2011, 12:02 pm
por Psyke1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines