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:
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:
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"
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!
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
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
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.-
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!!