[VB6]Filtro por fechas en DataGrid

Iniciado por FranciskoAsdf, 21 Noviembre 2014, 00:00 AM

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

FranciskoAsdf

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 (vb) [Seleccionar]

Sub Conexion()
   Set cn = New ADODB.Connection
   cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataAndStuff\cllbd.mdb;Persist Security Info=False"
   Set rs = New ADODB.Recordset
   rs.ActiveConnection = cn
   rs.CursorLocation = adUseClient
   rs.CursorType = adOpenDynamic
   rs.LockType = adLockOptimistic
   rs.Source = "Select * From BDOfertas"
   rs.Open
   
End Sub


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 (vb) [Seleccionar]

Sub ConsultaFechas()

   SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > " & txtFechaUno.Text & " And F_Hasta < " & txtFechaDos.Text & ""
   Set rs = New ADODB.Recordset
   rs.CursorLocation = adUseClient
   rs.Open SqlDos, cn, adOpenStatic, , adCmdText

End Sub


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"
Asdf debería ser algún tipo de función.

Shell Root

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 (vb) [Seleccionar]
Sub ConsultaFechas()

 SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > " & txtFechaUno.Text & " And F_Hasta < " & txtFechaDos.Text & ""
 MsgBox "Query: " & SqlDos
 'Set rs = New ADODB.Recordset
 'rs.CursorLocation = adUseClient
 'rs.Open SqlDos, cn, adOpenStatic, , adCmdText

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 (vb) [Seleccionar]
Sub ConsultaFechas()

 SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > '" & txtFechaUno.Text & "' And F_Hasta < '" & txtFechaDos.Text & "'"
 Set rs = New ADODB.Recordset
 rs.CursorLocation = adUseClient
 rs.Open SqlDos, cn, adOpenStatic, , adCmdText

End Sub
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

FranciskoAsdf

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 (vb) [Seleccionar]

Sub ConsultaFechas()
   
   SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde >= # " & Trim$(txtFechaUno.Text) & " # AND F_Hasta <= # " & Trim$(txtFechaDos.Text) & " #"
   
   Set rs = New ADODB.Recordset
   rs.CursorLocation = adUseClient
   rs.Open SqlDos, cn, adOpenStatic, , adCmdText
   Set DataGrid1.DataSource = rs
   ModificaColumnas
End Sub


Saludos!!
Asdf debería ser algún tipo de función.