sábado 8 de agosto de 2009

Lidiando con campos NULL

Hola amigos:
Me van a permitir relatarles mi reciente experiencia con campos NULL, en otra entrada habíamos comentado algo al respecto pero creo que esta experiencia puede ser de mucho provecho para que no se den los frentazos que yo me di.

Todo comenzó cuando uno de mis clientes pidió modificarle una aplicación, el cambio era sencillo, “simplemente agregar dos campos (o columnas) más a una tabla”, HDR_FDI (Fecha de inicio) y HDR_FDT (Fecha de terminación).

Evidentemente los campos debían ser de tipo DATE con la peculiaridad de que NO todos los registros llevarían valores en esos dos campos (HDR_FDI y HDR_FDT), el clásico NULL o NOT NULL, ni tardo ni perezoso puse manos a la obra, abrí NAVICAT y modifique la estructura de la tabla para adicionar dos campos más a la tabla de ordenes de compra de la siguiente forma:

HDR_FDI DATE 0 0 NOT NULL
HDR_FDT DATE 0 0 NOT NULL

Todo se veía tan sencillo pero, oh sorpresa !, cuando abrí la aplicación para crear un browse simplemente el browse se mostraba vacio, sí amigos lo primero que hice fue verificar que la tabla tuviera registros y sí, sí tenia registros.

Todo compilaba bien, no me tiraba error alguno, simplemente el browse se mostraba vacio.

Modifique la tabla eliminado los dos campos recién agregados y ahora el browse se mostraba con registros, pensando que NAVICAT me estaba jugando una mala pasada modifique la tabla nuevamente pero ahora usando el ADMINISTRATOR de MySql y qué creen?, el problema era el mismo, el %$/(“%”# browse se mostraba vacio.

Dándome un tiempo para servirme una rica taza de café chiapaneco (de Chiapas, Méx), mientras me la preparaba razoné que no todos los registros tendrían valores por lo tanto debí definir los campos como NULL:

HDR_FDI DATE 0 0 NULL
HDR_FDT DATE 0 0 NULL

Y ahora ya todo funcionó al 100%.

Como ven, parecía una tontería pero en realidad era una estupidez! (no sé quien lo dijo pero lo dijo).

Lo rescatable de esta mala experiencia no es mi estupidez sino saber que al modificar la estructura de una tabla y cuando los campos sean de tipo DATE éstos quedan con valores NIL que al crear el record set no hay protestas simplemente el record set se crea vacio y por consecuencia el browse también.

También tuve que modificar la aplicación para probar si los campos tienen valor comparando el campo contra NIL. Arrrrrgggg, algo que se veía tan sencillo, jejejeje.

Amigos, ahí les dejo esta experiencia para que sea una piedra menos en su camino al lado de ADO.

Hasta la próxima.