martes, 28 de octubre de 2014

Mapear un campo numerico que puede ser nulo a un atributo de un objeto

Cuando tenemos un código como el siguiente:
if (dt.Rows.Count > 0)
     {
      this._holderID = int.Parse(dt.Rows[0]["holder_id"].ToString());
      this._item = int.Parse(dt.Rows[0]["item"].ToString());
      this._holderType = dt.Rows[0]["htype_id"].ToString();
      this._qty = int.Parse(dt.Rows[0]["qty"].ToString());
      this
._prodID =int.Parse(dt.Rows[0]["prod_id"].ToString());
      this._woID =int.Parse(dt.Rows[0]["wo_id"].ToString());
      this._stat = Stat.Loaded;
     }


en el cual tratamos de mapear los campos prod_id y wo_id a las variables _prodID y _woID de un objeto nos provoca un error al tratar de pasar un string vacio a entero en el caso de que ese campo de la tabla este vacío.
La solución es muy simple solo hay que comprobar primero si el campo esta vacío, en ese caso le ponemos un valor por omisión (en este caso 0), y en caso de que el campo no este vacio lo convertimos a entero y lo asignamos a la variable de nuestro objeto:


El codigo resultante quedaría asi:


if (dt.Rows.Count > 0)
     {
      this._holderID = int.Parse(dt.Rows[0]["holder_id"].ToString());
      this._item = int.Parse(dt.Rows[0]["item"].ToString());
      this._holderType = dt.Rows[0]["htype_id"].ToString();
      this._qty = int.Parse(dt.Rows[0]["qty"].ToString());
      this._prodID = dt.Rows[0]["prod_id"].ToString().Trim() == string.Empty ? 0 : int.Parse(dt.Rows[0]["prod_id"].ToString());
      this._woID = dt.Rows[0]["wo_id"].ToString().Trim() == string.Empty ? 0 : int.Parse(dt.Rows[0]["wo_id"].ToString());
      this._stat = Stat.Loaded;

     }



Como podemos observar la solución es simple.
Happy Coding!!!

No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.

Mover mensajes seleccionados a un personal folder en Oulook 2016

Este es un ejemplo de como mover los mensajes seleccionados a un personal folder (pst) en Outlook 2016 usando VBA. Sub MoveInbox()     Mov...