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.

carlossevi comentado hace 4 días

¿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?

AFRG1995 comentado hace 4 días

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

carlossevi comentado hace 4 días

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.

AFRG1995 comentado hace 4 días

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

1 Respuesta

4votos

carlossevi Puntos58820

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.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

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

Conecta