Problemas con Fechas y DateTime

19/08/2004 - 13:32 por Oriol | Informe spam
Hola a todos,

Tengo un pequeño problema y supongo que no se encontrar la solucion.

Tengo unos datos en una Base de datos MS SQL en formato SmallDateTime.
Algunos estan llenos con fecha y otros contienen NULL.

Cuando intento recuperar esos datos de la Base de datos mediante un
StoredProcedure (el cual funciona bien, testeado con el Query Analizer), me
da problemas con los valores null al intentar ponerlos en una variable de
tipo DateTime.

El proceso de recuperacion de datos es este: (Trabajo en C# y Winforms)

public static ArrayList ListarInformesPorCliente(string IdCliente)
{
ArrayList arData = new ArrayList();
SqlCommand cmdInforme= new SqlCommand();
cmdInforme.Connection = Sistema.conexionLocal;
cmdInforme.CommandType = CommandType.StoredProcedure;
cmdInforme.CommandText = "ListarInformesPorCliente";
SqlParameter myParam;
myParam = cmdInforme.Parameters.Add("@IdCliente",SqlDbType.Char,16);
myParam.Value = IdCliente;
SqlDataAdapter daInforme = new SqlDataAdapter(cmdInforme);
DataSet dsInforme = new DataSet();
daInforme.Fill(dsInforme,"Informes");
for (int i = 0; i<dsInforme.Tables["Informes"].Rows.Count; i++)
{
Informe cItem = new Informe();
cItem.IdInforme dsInforme.Tables["Informes"].Rows[i]["inf_IdInforme"].ToString();
cItem.FechaInforme System.DateTime.Parse(dsInforme.Tables["Informes"].Rows[i]["inf_FechaInforme
"].ToString());
arData.Add(cItem);
}
cmdInforme.Dispose();
daInforme.Dispose();
dsInforme.Dispose();
return arData;
}

Donde cItem.FechaInforme es del tipo DateTime. He solucionado esto por parte
del SQL donde pongo la opcion "ISNULL(FechaInforme,01/01/2000)", pero esto
solo me sirve para que no me de error, pero los datos no son buenos, ya que
se muestra 01/01/2000 cuando deberia mostrarse NADA. Alguna forma de
conseguir que un valor NULL no de error al asociarlo a una variable
DateTime?

Gracias!

Saludos
Oriol.
 

Leer las respuestas

#1 Jose Alfredo
19/08/2004 - 14:29 | Informe spam
Hola!

A lo que yo pienso, no se puede convertir a string un valor null y por eso
debe saltar un error en

cItem.FechaInforme >
System.DateTime.Parse(dsInforme.Tables["Informes"].Rows[i]["inf_FechaInforme
"].ToString());



pudieras testear primeramente si el valor es null y si es null, guardas una
cadena vacia...

Saludos

Jose Alfredo


"Oriol" <intranet[arroba]rvsa-itv.com> schrieb im Newsbeitrag
news:
Hola a todos,

Tengo un pequeño problema y supongo que no se encontrar la solucion.

Tengo unos datos en una Base de datos MS SQL en formato SmallDateTime.
Algunos estan llenos con fecha y otros contienen NULL.

Cuando intento recuperar esos datos de la Base de datos mediante un
StoredProcedure (el cual funciona bien, testeado con el Query Analizer),


me
da problemas con los valores null al intentar ponerlos en una variable de
tipo DateTime.

El proceso de recuperacion de datos es este: (Trabajo en C# y Winforms)

public static ArrayList ListarInformesPorCliente(string IdCliente)
{
ArrayList arData = new ArrayList();
SqlCommand cmdInforme= new SqlCommand();
cmdInforme.Connection = Sistema.conexionLocal;
cmdInforme.CommandType = CommandType.StoredProcedure;
cmdInforme.CommandText = "ListarInformesPorCliente";
SqlParameter myParam;
myParam = cmdInforme.Parameters.Add("@IdCliente",SqlDbType.Char,16);
myParam.Value = IdCliente;
SqlDataAdapter daInforme = new SqlDataAdapter(cmdInforme);
DataSet dsInforme = new DataSet();
daInforme.Fill(dsInforme,"Informes");
for (int i = 0; i<dsInforme.Tables["Informes"].Rows.Count; i++)
{
Informe cItem = new Informe();
cItem.IdInforme > dsInforme.Tables["Informes"].Rows[i]["inf_IdInforme"].ToString();
cItem.FechaInforme >


System.DateTime.Parse(dsInforme.Tables["Informes"].Rows[i]["inf_FechaInforme
"].ToString());
arData.Add(cItem);
}
cmdInforme.Dispose();
daInforme.Dispose();
dsInforme.Dispose();
return arData;
}

Donde cItem.FechaInforme es del tipo DateTime. He solucionado esto por


parte
del SQL donde pongo la opcion "ISNULL(FechaInforme,01/01/2000)", pero esto
solo me sirve para que no me de error, pero los datos no son buenos, ya


que
se muestra 01/01/2000 cuando deberia mostrarse NADA. Alguna forma de
conseguir que un valor NULL no de error al asociarlo a una variable
DateTime?

Gracias!

Saludos
Oriol.


Preguntas similares