Ahora una de Fechas con C#

02/02/2006 - 21:14 por Pablo Cesar | Informe spam
Tengo esta función (la que puse mas abajo), en la linea donde lleno el
DataSet con el DataAdapter me salta un error que dice...

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value

Si yo inspecciono los valores de las variables FechaFiltroInicio y
FechaFiltroFin antes de armar el WhereStatement veo que estan bien, pero me
tira eso...alguna sugerencia?

public static DataSet ObtenerRegistrosPorUsuario(string NombreDeUsuario,
string Mes, string Anio, bool SoloTarde)
{
string WhereStatement = " where nombredeusuario = '" + NombreDeUsuario + "'
";
DateTime FechaFiltroInicio;
DateTime FechaFiltroFin;

if (Mes != "0")
{
FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);
FechaFiltroFin DateTime.Parse(Convert.ToString(System.DateTime.DaysInMonth(Convert.ToInt32(
Anio), Convert.ToInt32(Mes)),10) + "/" + Mes + "/" + Anio);
}
else
{
FechaFiltroInicio = DateTime.Parse("01/01/" + Anio);
FechaFiltroFin = DateTime.Parse("31/12/" + Anio);
}

WhereStatement = WhereStatement + " and fechayhora between '" +
Convert.ToString(FechaFiltroInicio,System.IFormatProvider) + "' and '" +
Convert.ToString(FechaFiltroFin, System.IFormatProvider + "'";

SqlConnection myConnection = new SqlConnection(myStringConnection);
SqlCommand myCommand = new SqlCommand("Select * from logueos " +
WhereStatement, myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter(myCommand);

DataSet myDataSet = new DataSet();
myCommand.Connection.Open();
myDataAdapter.SelectCommand = myCommand;

myDataAdapter.Fill(myDataSet);
myCommand.Connection.Close();

return myDataSet;
}


Sugerencias???

Pablo Cesharp

.::...Sabía Ud. que los Onas (Indios que habitaban Tierra del Fuego), en
épocas de hambre, antes que a los perros...se comían a las mujeres viejas!?
::.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
03/02/2006 - 01:32 | Informe spam
Pablo,

En la línea:

FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);

te sobra un '/' al principio de la cadena, ¿no será eso?

Slds - Octavio

"Pablo Cesar" escribió en el mensaje
news:%
Tengo esta función (la que puse mas abajo), en la linea donde lleno el
DataSet con el DataAdapter me salta un error que dice...

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value

Si yo inspecciono los valores de las variables FechaFiltroInicio y
FechaFiltroFin antes de armar el WhereStatement veo que estan bien, pero
me
tira eso...alguna sugerencia?

public static DataSet ObtenerRegistrosPorUsuario(string NombreDeUsuario,
string Mes, string Anio, bool SoloTarde)
{
string WhereStatement = " where nombredeusuario = '" + NombreDeUsuario +
"'
";
DateTime FechaFiltroInicio;
DateTime FechaFiltroFin;

if (Mes != "0")
{
FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);
FechaFiltroFin > DateTime.Parse(Convert.ToString(System.DateTime.DaysInMonth(Convert.ToInt32(
Anio), Convert.ToInt32(Mes)),10) + "/" + Mes + "/" + Anio);
}
else
{
FechaFiltroInicio = DateTime.Parse("01/01/" + Anio);
FechaFiltroFin = DateTime.Parse("31/12/" + Anio);
}

WhereStatement = WhereStatement + " and fechayhora between '" +
Convert.ToString(FechaFiltroInicio,System.IFormatProvider) + "' and '" +
Convert.ToString(FechaFiltroFin, System.IFormatProvider + "'";

SqlConnection myConnection = new SqlConnection(myStringConnection);
SqlCommand myCommand = new SqlCommand("Select * from logueos " +
WhereStatement, myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter(myCommand);

DataSet myDataSet = new DataSet();
myCommand.Connection.Open();
myDataAdapter.SelectCommand = myCommand;

myDataAdapter.Fill(myDataSet);
myCommand.Connection.Close();

return myDataSet;
}


Sugerencias???

Pablo Cesharp

.::...Sabía Ud. que los Onas (Indios que habitaban Tierra del Fuego),
en
épocas de hambre, antes que a los perros...se comían a las mujeres
viejas!?
::.


Respuesta Responder a este mensaje
#2 Pablo Cesar
03/02/2006 - 15:05 | Informe spam
Nop, no era eso, ya lo saqué y seguimos en la misma, igual si ves ahí hay un
if que de acuerdo el valor que tiene Mes entra a uno u otro lado, les paso a
continuación el valor del comando a ejecutar por el DataAdapter según la
depuración que vengo haciendo...

"Select * from logueos where nombredeusuario = 'Administrador' and
fechayhora between '1/1/2006' and '12/31/2006'"

Con esos valores me tira el error mencionado antes..

Saludos y gracias por su tiempo!

Pablo Cesharp.

"Octavio Hernandez" escribió en el mensaje
news:
Pablo,

En la línea:

FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);

te sobra un '/' al principio de la cadena, ¿no será eso?

Slds - Octavio

"Pablo Cesar" escribió en el mensaje
news:%
> Tengo esta función (la que puse mas abajo), en la linea donde lleno el
> DataSet con el DataAdapter me salta un error que dice...
>
> The conversion of a char data type to a datetime data type resulted in


an
> out-of-range datetime value
>
> Si yo inspecciono los valores de las variables FechaFiltroInicio y
> FechaFiltroFin antes de armar el WhereStatement veo que estan bien, pero
> me
> tira eso...alguna sugerencia?
>
> public static DataSet ObtenerRegistrosPorUsuario(string NombreDeUsuario,
> string Mes, string Anio, bool SoloTarde)
> {
> string WhereStatement = " where nombredeusuario = '" + NombreDeUsuario +
> "'
> ";
> DateTime FechaFiltroInicio;
> DateTime FechaFiltroFin;
>
> if (Mes != "0")
> {
> FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);
> FechaFiltroFin > >


DateTime.Parse(Convert.ToString(System.DateTime.DaysInMonth(Convert.ToInt32(
> Anio), Convert.ToInt32(Mes)),10) + "/" + Mes + "/" + Anio);
> }
> else
> {
> FechaFiltroInicio = DateTime.Parse("01/01/" + Anio);
> FechaFiltroFin = DateTime.Parse("31/12/" + Anio);
> }
>
> WhereStatement = WhereStatement + " and fechayhora between '" +
> Convert.ToString(FechaFiltroInicio,System.IFormatProvider) + "' and '" +
> Convert.ToString(FechaFiltroFin, System.IFormatProvider + "'";
>
> SqlConnection myConnection = new SqlConnection(myStringConnection);
> SqlCommand myCommand = new SqlCommand("Select * from logueos " +
> WhereStatement, myConnection);
> SqlDataAdapter myDataAdapter = new SqlDataAdapter(myCommand);
>
> DataSet myDataSet = new DataSet();
> myCommand.Connection.Open();
> myDataAdapter.SelectCommand = myCommand;
>
> myDataAdapter.Fill(myDataSet);
> myCommand.Connection.Close();
>
> return myDataSet;
> }
>
>
> Sugerencias???
>
> Pablo Cesharp
>
> .::...Sabía Ud. que los Onas (Indios que habitaban Tierra del


Fuego),
> en
> épocas de hambre, antes que a los perros...se comían a las mujeres
> viejas!?
> ::.
>
>


Respuesta Responder a este mensaje
#3 Pablo Cesar
03/02/2006 - 15:13 | Informe spam
Tambien faltaba un paréntesis acá...

WhereStatement = WhereStatement + " and fechayhora between '" +
Convert.ToString(FechaFiltroInicio,System.IFormatProvider) + "' and '" +
Convert.ToString(FechaFiltroFin, System.IFormatProvider) + "'"; <-- el
último

pero así y todo sigo recibiendo el mismo error


"Octavio Hernandez" escribió en el mensaje
news:
Pablo,

En la línea:

FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);

te sobra un '/' al principio de la cadena, ¿no será eso?

Slds - Octavio

"Pablo Cesar" escribió en el mensaje
news:%
> Tengo esta función (la que puse mas abajo), en la linea donde lleno el
> DataSet con el DataAdapter me salta un error que dice...
>
> The conversion of a char data type to a datetime data type resulted in


an
> out-of-range datetime value
>
> Si yo inspecciono los valores de las variables FechaFiltroInicio y
> FechaFiltroFin antes de armar el WhereStatement veo que estan bien, pero
> me
> tira eso...alguna sugerencia?
>
> public static DataSet ObtenerRegistrosPorUsuario(string NombreDeUsuario,
> string Mes, string Anio, bool SoloTarde)
> {
> string WhereStatement = " where nombredeusuario = '" + NombreDeUsuario +
> "'
> ";
> DateTime FechaFiltroInicio;
> DateTime FechaFiltroFin;
>
> if (Mes != "0")
> {
> FechaFiltroInicio = DateTime.Parse("/01/" + Mes + "/" + Anio);
> FechaFiltroFin > >


DateTime.Parse(Convert.ToString(System.DateTime.DaysInMonth(Convert.ToInt32(
> Anio), Convert.ToInt32(Mes)),10) + "/" + Mes + "/" + Anio);
> }
> else
> {
> FechaFiltroInicio = DateTime.Parse("01/01/" + Anio);
> FechaFiltroFin = DateTime.Parse("31/12/" + Anio);
> }
>
> WhereStatement = WhereStatement + " and fechayhora between '" +
> Convert.ToString(FechaFiltroInicio,System.IFormatProvider) + "' and '" +
> Convert.ToString(FechaFiltroFin, System.IFormatProvider + "'";
>
> SqlConnection myConnection = new SqlConnection(myStringConnection);
> SqlCommand myCommand = new SqlCommand("Select * from logueos " +
> WhereStatement, myConnection);
> SqlDataAdapter myDataAdapter = new SqlDataAdapter(myCommand);
>
> DataSet myDataSet = new DataSet();
> myCommand.Connection.Open();
> myDataAdapter.SelectCommand = myCommand;
>
> myDataAdapter.Fill(myDataSet);
> myCommand.Connection.Close();
>
> return myDataSet;
> }
>
>
> Sugerencias???
>
> Pablo Cesharp
>
> .::...Sabía Ud. que los Onas (Indios que habitaban Tierra del


Fuego),
> en
> épocas de hambre, antes que a los perros...se comían a las mujeres
> viejas!?
> ::.
>
>


Respuesta Responder a este mensaje
#4 Eduardo A. Morcillo [MS MVP VB]
03/02/2006 - 15:45 | Informe spam
El error puede estar causado por '12/31/2006', dependiendo de como este
tomando el orden en las fechas, puede significar el dia 12 del mes 31 que no
es valido. Para evitar este tipo de problemas y no complicarse con SET
DATEFORMAT u otras cosas lo mejor es usar parametros:

public static DataSet ObtenerRegistrosPorUsuario(
string nombreDeUsuario,
string mes, string año, bool soloTarde) {

DateTime fechaFiltroInicio;
DateTime fechaFiltroFin;

if (Mes != "0") {
fechaFiltroInicio = DateTime.Parse("01/" + mes + "/" + año);
fechaFiltroFin =
DateTime.Parse(DateTime.DaysInMonth(Convert.ToInt32(año),
Convert.ToInt32(mes)) + "/" + mes + "/" + año);
} else {
fechaFiltroInicio = DateTime.Parse("01/01/" + año);
fechaFiltroFin = DateTime.Parse("31/12/" + año);
}

SqlConnection myConnection = new
SqlConnection(myStringConnection);
SqlCommand myCommand = new SqlCommand(
"SELECT * FROM logueos WHERE nombredeusuario=@USUARIO AND
fechayhora BETWEEN @FECHAINI AND @FECHAFIN");
SqlDataAdapter myDataAdapter = new SqlDataAdapter(myCommand);

myCommand.Parameters.Add("@USUARIO", NombreDeUsuario);
myCommand.Parameters.Add("@FECHAINI", fechaFiltroInicio);
myCommand.Parameters.Add("@FECHAFIN", fechaFiltroFin);

DataSet myDataSet = new DataSet();

myDataAdapter.Fill(myDataSet);

return myDataSet;

}

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#5 Pablo Cesar
03/02/2006 - 16:00 | Informe spam
Mil gracias Eduardo!!!! eso si es simplificar la cosa!

Bueno, salimos de donde me había atoradoa seguir con el aprendizaje...

Abrazo enorme y nuevamente gracias por tu tiempo!!!!

Pablo Cesharp.

"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:%
El error puede estar causado por '12/31/2006', dependiendo de como este
tomando el orden en las fechas, puede significar el dia 12 del mes 31 que


no
es valido. Para evitar este tipo de problemas y no complicarse con SET
DATEFORMAT u otras cosas lo mejor es usar parametros:

public static DataSet ObtenerRegistrosPorUsuario(
string nombreDeUsuario,
string mes, string año, bool soloTarde) {

DateTime fechaFiltroInicio;
DateTime fechaFiltroFin;

if (Mes != "0") {
fechaFiltroInicio = DateTime.Parse("01/" + mes + "/" +


año);
fechaFiltroFin > DateTime.Parse(DateTime.DaysInMonth(Convert.ToInt32(año),
Convert.ToInt32(mes)) + "/" + mes + "/" + año);
} else {
fechaFiltroInicio = DateTime.Parse("01/01/" + año);
fechaFiltroFin = DateTime.Parse("31/12/" + año);
}

SqlConnection myConnection = new
SqlConnection(myStringConnection);
SqlCommand myCommand = new SqlCommand(
"SELECT * FROM logueos WHERE nombredeusuario=@USUARIO AND
fechayhora BETWEEN @FECHAINI AND @FECHAFIN");
SqlDataAdapter myDataAdapter = new SqlDataAdapter(myCommand);

myCommand.Parameters.Add("@USUARIO", NombreDeUsuario);
myCommand.Parameters.Add("@FECHAINI", fechaFiltroInicio);
myCommand.Parameters.Add("@FECHAFIN", fechaFiltroFin);

DataSet myDataSet = new DataSet();

myDataAdapter.Fill(myDataSet);

return myDataSet;

}

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo



http://mvp.support.microsoft.com/pr...4EF5A4191C


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida