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.

Preguntas similare

Leer las respuestas

#6 Jose Alfredo
20/08/2004 - 12:37 | Informe spam
Hola Oriol

Si trabajas con valores nulos con DateTime te vas a encontrar un millon de
problemas, en general la fecha es algo que existe (si usas algo con tiempo,
tiene que existir tiempo), y lo ideal es que ese campo siempre tome un valor
por defecto cuando haces el diseño del programa. Puede haber momentos muy
contados que pueda no existir, pero siempre se debe tratar de poner una
fecha por defecto, es por eso que muchos DateTimepicker no te dejan escribir
la fecha y siempre requieren una. En la base de datos es más eficiente
colocar una fecha que te signifique nula que dejar el campo null, en general
no se aconseja (por terminos de eficiencia) dejar campos con posibilidad de
valores nulos. http://www.codeproject.com/cs/datab...dodont.asp

Mi técnica cuando uso un datapicker es por defecto cargarlo con la fecha de
hoy, si el usuario confirma la acción leo los valores si no los ignoro
todos.

En lo que escribes abajo el parser debe fallar al encontrarse una instancia
no válida de fecha, es decir una fecha nula

Saludos

Jose Alfredo


"Oriol" <intranet[arroba]rvsa-itv.com> schrieb im Newsbeitrag
news:
Mostrar la cita
vez
Mostrar la cita
es
Mostrar la cita
System.DateTime.Parse(dsInforme.Tables["Informes"].Rows[i]["inf_FechaInforme
Mostrar la cita
System.DateTime.Parse(dsInforme.Tables["Informes"].Rows[i]["inf_FechaInforme
Mostrar la cita
System.DateTime.Parse(dsInforme.Tables["Informes"].Rows[i]["inf_FechaInforme
Mostrar la cita
Ads by Google
Search Busqueda sugerida