entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Error converting data type nvarchar to date.

Al querer hacer una inserción de datos desde Visual Studio me marca este error, y la verdad no se a que se deba.
Este es mi procedimiento almacenado

ALTER PROCEDURE [sp_AGREGARLANZAMIENTO]
    @P_FEC_CREA DATE, 
    @P_USU_CREA VARCHAR(200),
    @P_PAIS VARCHAR(200),
    @P_FEC_ACT DATE,
    @P_FEC_VEN DATE,
    @P_TIT_LANZ VARCHAR(200),
    @P_NOM_BANN VARCHAR(200),
    @P_URL_IMG VARCHAR(200),
    @P_URL_HREF VARCHAR(200),
    @P_EST_DASH INTEGER
AS
BEGIN
INSERT INTO LANDINGPAGE.PORTAL
(
    NUMB_ID_DASHBOARD,
    FECHA_CREACION,
    USUARIO_CREACION,
    PAIS,
    FECHA_ACTIVACION,
    FECHA_VENCIMIENTO,
    TITULO_LANZAMIENTO,
    NOMBRE_BANNER,
    URL_IMG,
    URL_HREF,
    NUMB_ESTATUS
)
VALUES
(
    (SELECT ISNULL((MAX(NUMB_ID_DASHBOARD)+1),1)as IDPR FROM LANDINGPAGE.PORTAL),
    @P_FEC_CREA,
    @P_USU_CREA,
    @P_PAIS,
    @P_FEC_ACT,
    @P_FEC_VEN,
    @P_TIT_LANZ,
    @P_NOM_BANN,
    @P_URL_IMG,
    @P_URL_HREF,
    @P_EST_DASH
);
    SELECT @@ROWCOUNT as afectadas  
END

Y este es mi código de Visual Studio

public string AgregarRegistro_LandingPage(string usuario, string Pais, string fecAct, string fecVen, string tituloLanzamiento, string nombreBanner, string urlImg, string Url_Href)
        {
            string msj = "";
            DateTime fecha = DateTime.Now;
            string FechaAct = Convert.ToDateTime(fecAct).ToShortDateString();
            string FechaVen = Convert.ToDateTime(fecVen).ToShortDateString();
            //string fechaAct = Convert.ToDateTime(fecAct).ToShortDateString();
            try
            {

                SqlCommand cmd = new SqlCommand("LANDINGPAGE.sp_AGREGARLANZAMIENTO", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Clear();
                con.Open();
                cmd.Parameters.AddWithValue("@P_FEC_CREA", SqlDbType.Date).Value = fecha.ToShortDateString();
                cmd.Parameters.AddWithValue("@P_USU_CREA", SqlDbType.VarChar).Value = usuario;
                cmd.Parameters.AddWithValue("@P_PAIS", SqlDbType.VarChar).Value = Pais;
                //cmd.Parameters.AddWithValue("@P_TIPO_LANZ", SqlDbType.VarChar).Value = TipoUrl;
                cmd.Parameters.AddWithValue("@P_FEC_ACT", SqlDbType.Date).Value = FechaAct;
                cmd.Parameters.AddWithValue("@P_FEC_VEN", SqlDbType.Date).Value = FechaVen;
                cmd.Parameters.AddWithValue("@P_TIT_LANZ", SqlDbType.VarChar).Value = tituloLanzamiento;
                cmd.Parameters.AddWithValue("@P_NOM_BANN", SqlDbType.VarChar).Value = nombreBanner;
                cmd.Parameters.AddWithValue("@P_URL_IMG", SqlDbType.VarChar).Value = urlImg;
                cmd.Parameters.AddWithValue("@P_URL_HREF", SqlDbType.VarChar).Value = Url_Href;
                cmd.Parameters.AddWithValue("@P_EST_DASH", SqlDbType.Int).Value = 1;

                if (Convert.ToInt32(cmd.ExecuteScalar()) != 0)
                {
                    msj = "Banner agregado correctamente";
                }
                else
                {
                    msj = "Ningún cambio realizado";
                }
                con.Close();

                return msj;
            }
            catch
            {
                return "Error de conexión, intente de nuevo";
            }
        }

Si alguien podría orientarme se lo agradecería mucho.

1voto

carlossevi comentado

¿Y el mensaje de error no viene acompañado de nada más? ¿No dice en qué elemento lo devuelve? ¿Ni la línea en que falla?

1voto

AFRG1995 comentado

no, solo me sale el error y ya lo cheque pero no se a que se deba

2votos

carlossevi comentado

Pero, ¿el error sale en la llamada a la consulta (cmd.ExecuteScalar()) o en la construcción de la misma? Me cuesta creer que el error no da ninguna otra información.

1voto

AFRG1995 comentado

en la llamada a la consulta, después de ello es cuando me devuelve ese error

1 Respuesta

4votos

carlossevi Puntos63580

Me extraña que te falle al ejecutar la consulta, porque yo juraría que la sintaxis de un montón de líneas es incorrecta antes de llegar ahí:

// Esta línea:
cmd.Parameters.AddWithValue("@P_FEC_CREA", SqlDbType.Date).Value = fecha.ToShortDateString();
// Debería ser:
cmd.Parameters.AddWithValue("@P_FEC_CREA", fecha);

En esta página puedes ver que hay dos formas:

// 1) Añadir y poner valor:
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;

// 2) Todo de golpe:
command.Parameters.AddWithValue("@demographics", demoXml);

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta