usando between
TRANSCRIPT
usando Between
Como alternativa al método anterior se podría lograr usando el Between en la query para filtrar por el rango de fechas.
En el Form2 del ejemplo se podrá encontrar la implementación de este caso.
public static LogActividades.RegistroActividadesDataTable GetFilterByDateRangeWithBetween(DateTime desde, DateTime hasta)
{
LogActividades.RegistroActividadesDataTable dt = new LogActividades.RegistroActividadesDataTable();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
{
string sql = @"SELECT Id, Descripcion, fecharegistro, usuario
FROM RegistroActividades
WHERE CAST(CONVERT(CHAR(8), fecharegistro, 112) AS INT) BETWEEN CAST(CONVERT(CHAR(8), @desde, 112) AS INT)
AND CAST(CONVERT(CHAR(8), @hasta, 112) AS INT)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@desde", desde);
cmd.Parameters.AddWithValue("@hasta", hasta);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
return dt;
}
Ayuda con filtro por rango de fechas...Hola experto... necesito ayuda sobre vb6 con access... tengo problemas con la búsqueda de
pacientes por rango de fecha, lo que tengo lo de intentado de las siguientes formas:
1.- busca = "SELECT * FROM paciente where fecha >= #" & Format(fecinicio, "dd-mm-yyyy")
& "# and fecha <= #" & Format(fectermino, "dd-mm-yyyy") & "#"
Set rst = Base.OpenRecordset(busca)
2.- busca = "SELECT * FROM paciente where fecha >= '" & Format(fecinicio, "dd-mm-yyyy") &
"' and fecha <= '" & Format(fectermino, "dd-mm-yyyy") & "'"
Set rst = Base.OpenRecordset(busca)
3.- busca = "SELECT * FROM paciente where fecha >= #" & fecinicio & "# and fecha <= #" &
fectermino & "#"
Set rst = Base.OpenRecordset(busca)
4.- busca = "SELECT * FROM paciente where fecha >= '" & fecinicio & "' and fecha <= '" &
fectermino & "'"
Set rst = Base.OpenRecordset(busca)
5.- busca = "SELECT * FROM paciente where fecha between #" & fecinicio & "# and #" &
fectermino & "#"
Set rst = Base.OpenRecordset(busca)
6.- busca = "SELECT * FROM paciente where fecha between '" & fecinicio & "' and '" &
fectermino & "'"
Set rst = Base.OpenRecordset(busca)
Y me filtra, pero solo con el día, no con la fecha completa, por ejemplo ingreso:
08-10-2007
12-11-2007
15-12-2007
22-01-2008
03-02-2008
Y si busco desde: 01-10-2007 hasta: 30-10-2007, me muestra todos los datos y si lo filtro
desde: 01-10-2007 hasta: 14-11-2007, me muestra:
08-10-2007
12-11-2007
03-02-2008
Entonces queda demostrado que esta solo filtrando por el día..
Bueno y la pregunta del millón sería ¿cómo busco entre dos fechas completas, día, mes y
año?... ahh.. y estoy utilizando DTPicker para la fecha de inicio y termino..
Ojala allá sido claro con mi duda y espero me pueda y quiera ayudarme...
De antemano muchas gracias...Experto
Hola:
busca = "SELECT * FROM paciente where fecha >= ' " & FechaInicio & " ' And fecha <= ' " &
FechaFinal & " ' "
Así queda tu búsqueda:
Te puedo decir que cuando empecé con la rpogramacion me costo mucho la forma en que
metía el valor de las variables y pues así quedaría.
aclarro que el valor de la variable debe ser tipo fecha de lo contrario puede o no funcionar si la
varable es tipo string . Ojo en eso que no es lo mismo.
Si no te funciona hazlo de esta forma.
"SELECT * FROM paciente Where fecha Between DateValue('" & FechaInicio & "' ) And
DateValue('" & FechaFinal & "')"
Suerte y no dudes en volver a preguntar.Usuario
Hola, muchas gracias... era como me decías, pero con algunos cambios, por que cuando
consultas con comillas simples (') arroja el error '3464' "no coinciden los tipos de datos en la
expresión de criterios", por lo cual cambie de comilla simple a #. Ej.
asi me decias:
busca = "SELECT * FROM paciente where fecha >= ' " & FechaInicio & " ' And fecha <= ' " &
FechaFinal & " ' "
asi lo deje:
"select * from paciente where fecha >= #" & FechaInicio & "# and fecha <= #" & FechaFinal &
"#"
codigo que me funciono correctamente:
'***********************************************
'para mostrar las fechas de inicio y termino utilice la herramienta DTPicker
dim rst as recordset 'variable que almacenara todos los registros de la tabla
Dim fi, ft As Date 'importante declarar las variables como 'date'
fi = Format(fecinicio, "mm-dd-yyyy") 'muy importante este formato de fecha para buscar en
access 'mm-dd-yyyy'
ft = Format(fectermino, "mm-dd-yyyy")
'la variable 'Base' es la variable de conexion que utilice en el modulo
Set rst = Base.OpenRecordset("select * from paciente where fecha >= #" & fi & "# and fecha
<= #" & ft & "#")
'************************************************
Eso fue lo que realice... ojala le ayude a otro con la misma duda que yo tenia...
Muchas gracias experto por la gran ayuda brindada!..
Saludos a todos...