none
La funcion o procedimiento xx tiene demasiados argumentos RRS feed

  • Pregunta

  • Estimados

    Estoy creando un programa de escritorio con el lenguaje C# el cual agrego datos a la BD por medio de un procedimiento almacenado, pero al momento de ejeuctarse indica el error: el procedimiento tiene demasiados argumentos

    Programa

     private void btnAgregar_Click(object sender, EventArgs e)
            {
                string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=BDMANTENCIONES;User ID=sa;Password=;Integrated Security=True;MultipleActiveResultSets=True";
                SqlConnection connection = new SqlConnection(connectionString) ;
                SqlCommand cmd = new SqlCommand("InsertarRegistro", connection);
                cmd.CommandType = CommandType.StoredProcedure;
                
                cmd.Parameters.Add(new SqlParameter("@Ano", SqlDbType.Int));
                cmd.Parameters["@Ano"].Value = cmbAno.Text;

                cmd.Parameters.Add(new SqlParameter("@Correlativo", SqlDbType.VarChar, 50));
                cmd.Parameters["@Correlativo"].Value = txtCorrDispo.Text;

                cmd.Parameters.Add(new SqlParameter("@Datos", SqlDbType.VarChar, 50));
                cmd.Parameters["@Datos"].Value = cmbSelecMR.Text;

                cmd.Parameters.Add(new SqlParameter("@NumMR", SqlDbType.Int));
                cmd.Parameters["@NumMR"].Value = txtNumProy.Text;

                cmd.Parameters.Add(new SqlParameter("@Descripcion", SqlDbType.VarChar, 50));
                cmd.Parameters["@Descripcion"].Value = txtDescripcion.Text;
                
                connection.Open();
                cmd.ExecuteNonQuery();
                connection.Close(); 
            }

    BD Store procedure

    CREATE PROCEDURE InsertarRegistro
    (
    @Ano int,
    @Correlativo VARCHAR(50),
    @Datos VARCHAR(50),
    @NumMR int,
    @Descripcion VARCHAR(50)
    )
    AS
    BEGIN  
    INSERT INTO Ingresar
    VALUES (@Ano,@Correlativo,@Datos,@NumMR,@Descripcion)
    END
    GO

    miércoles, 21 de febrero de 2018 20:47

Respuestas

  • Tenes que verificar si tu numero de campos en la tabla es igual al numero de parametros que tenes en tu values

    Att. Franklin Andino

    miércoles, 21 de febrero de 2018 22:11
  • Debes de poner el argumento ConflictDetection de SqlDataSource con el valor ConflictDetection=”OverwriteChanges“ para que solo compruebe los valores de la clave que has puesto como parámetro del procedimiento almacenado.

    Saludos, Javier J

    jueves, 22 de febrero de 2018 13:04

Todas las respuestas