0

Tengo una consulta y es la siguiente:

Tengo un método que registra un usuario pero tengo un campo fechaFin de tipo string que cuando el valor recibe null se pasa al catch y quisiera saber como hacer para que acepte null.

En sql server ya esta validado para que acepte @FECHA_FIN = NULL

    public string InsertarMantUsuario(Usuario usu)
    {
        string resultadoInsertar = "";

        DatabaseHelper helper = null;
        try
        {
            helper = new DatabaseHelper(Conexion.Instancia.CadenaConexionDS());
            helper.BeginTransaction();

            helper.AddParameter("@USUARIO", usu.User);
            helper.AddParameter("@CLAVE", usu.Password);
            helper.AddParameter("@NOMBRE", usu.persona.Nombre);
            helper.AddParameter("@APELLIDO_PATERNO", usu.persona.ApPaterno);
            helper.AddParameter("@APELLIDO_MATERNO", usu.persona.ApMaterno);
            helper.AddParameter("@CORREO", usu.Correo);
            helper.AddParameter("@FECHA_INICIO", usu.fechaInicio.ToString());
            helper.AddParameter("@FECHA_FIN", string.IsNullOrEmpty(usu.fechaFin.ToString())?DBNull.Value`introducir el código aquí`:(object)usu.fechaFin.ToString());
            helper.AddParameter("@ID_PERFIL", usu.perfil.idPerfil);

            resultadoInsertar = Convert.ToString(helper.ExecuteScalar("PA_USUARIO_MANTENIMIENTO_I", CommandType.StoredProcedure, BinaryIntellect.DataAccess.ConnectionState.KeepOpen));

            helper.CommitTransaction();
        }
        catch (Exception ex)
        {
            helper.RollbackTransaction();
            resultadoInsertar = "";
            throw ex;
        }
        finally
        {
            if (helper != null)
                helper.Dispose();
        }
        return resultadoInsertar;
    }

El error me muestra lo siguiente

{"Referencia a objeto no establecida como instancia de un objeto."}
Usuario.FechaFin.get Returned null
System.NullReferenceException
Dum
  • 511
  • 6
  • 16
  • 1
    que error tira? – gbianchi Jan 09 '20 at 14:27
  • 1
    Te debe de dar algun error puesto que si fechaFin es NULL, no podrias ejecutar usu.fechaFin.ToString() – Alexmaister Jan 09 '20 at 14:28
  • FechaInicio si te acepta nulos, verdad? El error ese ese que te comentaba, si fechaFin es nulo, no puedes ejecutar fechaFin.ToString(), ese es el metodo que da error puesto que fechafin es nulo y no encuentra el metodo ToString(). Dejandolo como tienes fechaInicio , estaría bien. Si es NULL, se pondra NULL, y si es otro valor se pondra otro valor. O cambiar tu validacion por string.IsNullOrEmpty(usu.fechaFin)?DBNull.Value`introducir el código aquí`:(object)usu.fechaFin); – Alexmaister Jan 09 '20 at 14:41
  • Creo que el error es string.IsNullOrEmpty(usu.fechaFin.ToString()), tendria que ser string.IsNullOrEmpty(usu.fechaFin) y si es un Datetime declaralo como nulleable asi datetime? – J4ime Jan 09 '20 at 14:46

2 Answers2

1

Simplemente deja :

helper.AddParameter("@FECHA_FIN", string.IsNullOrEmpty(usu.fechaFin)?DBNull.Value`introducir el código aquí`:(object)usu.fechaFin);

o :

helper.AddParameter("@FECHA_FIN", usu.fechaFin);
Alexmaister
  • 765
  • 3
  • 14
0

me da que el fallo está aquí:

helper.AddParameter("@FECHA_FIN", string.IsNullOrEmpty(usu.fechaFin.ToString())?DBNull.Value`introducir el código aquí`:(object)usu.fechaFin.ToString());

sustituye lo anterior por

helper.AddParameter("@FECHA_FIN", string.IsNullOrEmpty(usu.fechaFin.ToString())?DBNull.Value:(object)usu.fechaFin.ToString());
Iria
  • 620
  • 3
  • 19