Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: FranciskoAsdf en 21 Noviembre 2014, 00:00 am



Título: [VB6]Filtro por fechas en DataGrid
Publicado por: FranciskoAsdf en 21 Noviembre 2014, 00:00 am
Estimados, buenas tardes (dias, noches, etc)

Hoy vengo a solicitar su ayuda para hacer un filtro a un DataGrid que me esta quebrado la cabeza xD.

Uso el siguiente codigo para cargar los datos al DataGrid:

Código
  1. Sub Conexion()
  2.   Set cn = New ADODB.Connection
  3.   cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataAndStuff\cllbd.mdb;Persist Security Info=False"
  4.   Set rs = New ADODB.Recordset
  5.   rs.ActiveConnection = cn
  6.   rs.CursorLocation = adUseClient
  7.   rs.CursorType = adOpenDynamic
  8.   rs.LockType = adLockOptimistic
  9.   rs.Source = "Select * From BDOfertas"
  10.   rs.Open
  11.  
  12. End Sub
  13.  

Hasta ahí todo bien.
Ahora, lo que quiero hacer es (con dos TextBox y un CommandButton) un filtro por rango de fechas. PERO (¬¬) no me funciona y no me arroja ningún error ni nada D:.

Para hacer el filtro tengo el siguiente codigo:

Código
  1. Sub ConsultaFechas()
  2.  
  3.   SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > " & txtFechaUno.Text & " And F_Hasta < " & txtFechaDos.Text & ""
  4.   Set rs = New ADODB.Recordset
  5.   rs.CursorLocation = adUseClient
  6.   rs.Open SqlDos, cn, adOpenStatic, , adCmdText
  7.  
  8. End Sub
  9.  

Se supone que ahí debería filtrar solo ese rango de fechas, pero no me funciona, no se porque, y como dije antes, tampoco me da ningún error. Solo no filtra.

Si alguno de uds me pudiese ayudar con esto. En realidad nunca he sido bueno con las consultas xD.

Saludos y gracias de ante mano!.

PD: Probe con RS.Update al final del Sub, pero me da el error: "El recorset actual no permite actualizaciones asdf"


Título: Re: [VB6]Filtro por fechas en DataGrid
Publicado por: Shell Root en 21 Noviembre 2014, 20:36 pm
Es mejor comprobar las querys que se construyen, es decir,

En ConsultasFechas(), realizas un printeo de la variable SqlDos con el fin de verificar los datos que se ingresan, de esta forma puedes coger la misma query y verificarla en el motor de bases de datos, que en este caso es Access y ver si la query arroja valores, para tú caso sería!

Código
  1. Sub ConsultaFechas()
  2.  
  3.  SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > " & txtFechaUno.Text & " And F_Hasta < " & txtFechaDos.Text & ""
  4.  MsgBox "Query: " & SqlDos
  5.  'Set rs = New ADODB.Recordset
  6.  'rs.CursorLocation = adUseClient
  7.  'rs.Open SqlDos, cn, adOpenStatic, , adCmdText
  8.  
  9. End Sub

Lo que te salga lo ejecutas en Access, pero de primera vista supongo que es por el dato de los text, intenta con esto
Código
  1. Sub ConsultaFechas()
  2.  
  3.  SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > '" & txtFechaUno.Text & "' And F_Hasta < '" & txtFechaDos.Text & "'"
  4.  Set rs = New ADODB.Recordset
  5.  rs.CursorLocation = adUseClient
  6.  rs.Open SqlDos, cn, adOpenStatic, , adCmdText
  7.  
  8. End Sub


Título: Re: [VB6]Filtro por fechas en DataGrid
Publicado por: FranciskoAsdf en 23 Noviembre 2014, 21:27 pm
Gracias por tu respuesta Shell, pero no eran las comillas. Me faltaba actualizar el RS ¬¬ xD.

Dejo la solucion por si alguien mas le sirve.-
Código
  1. Sub ConsultaFechas()
  2.  
  3.   SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde >= # " & Trim$(txtFechaUno.Text) & " # AND F_Hasta <= # " & Trim$(txtFechaDos.Text) & " #"
  4.  
  5.   Set rs = New ADODB.Recordset
  6.   rs.CursorLocation = adUseClient
  7.   rs.Open SqlDos, cn, adOpenStatic, , adCmdText
  8.   Set DataGrid1.DataSource = rs
  9.   ModificaColumnas
  10. End Sub
  11.  

Saludos!!