none
ERROR AL EJECUTAR STORE PROCEDURE DESDE C# RRS feed

  • Pregunta

  • Buenas tardes.

    Alguien me puede orientar en porque me marca el siguiente error:System.Data.SqlClient.SqlException: 'Procedure or function 'SP_OP' expects parameter '@OrdenID', which was not supplied.'

    //Mi SP en Sql Server

    Use PagoProveedores;
    GO
    CREATE PROCEDURE SP_OP(
    @OrdenID int,
    @Emisor varchar(30),
    @Fecha datetime,
    @Forma_de_Pago varchar(15),
    @Nombre varchar(60),
    @Banco varchar(12),
    @CLABE_Interbancaria varchar(20),
    @Factura varchar(20),
    @Descripcion varchar(40),
    @Cantidad int,
    @Precio_Unitario int,
    @Precio_Total int,
    @Descuento int,
    @Subtotal int,
    @IVA int,
    @Retencion_ISR int,
    @Retencion_IVA int)
    AS
    BEGIN
    INSERT INTO dbo.Orden(OrdenID,Emisor,Fecha,Forma_de_Pago,Nombre,Banco,CLABE_Interbancaria,Factura,Descripcion,Cantidad,Precio_Unitario,
                Precio_Total,Descuento,Subtotal,IVA,Retencion_ISR,Retencion_IVA)

    VALUES(@OrdenID,@Emisor,@Fecha,@Forma_de_Pago,@Nombre,@Banco,@CLABE_Interbancaria,@Factura,@Descripcion,@Cantidad,@Precio_Unitario,
           @Precio_Total,@Descuento,@Subtotal,@IVA,@Retencion_ISR,@Retencion_IVA) SELECT SCOPE_IDENTITY()
    END

    //Mi codigo en C#

     private void Btn1_Click_1(object sender, EventArgs e)
            {
                using (SqlConnection connection = new SqlConnection("Cadena de conexion"))
                {                              
                    if (string.IsNullOrEmpty(Txtbox2.Text) ||
                        string.IsNullOrEmpty(Txtbox6.Text) ||
                        string.IsNullOrEmpty(Txtbox7.Text))
                    {
                        MessageBox.Show("Capture la informacion completa para generar la OP.");
                        return;
                    }
                    connection.Open();
                    int OrdenID = 0;
                    SqlCommand comando = new SqlCommand("SP_OP",connection)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    comando.Parameters.AddWithValue("@Emisor", Label3.Text);
                    comando.Parameters.AddWithValue("@Fecha", DateTimePicker1.Value);
                    comando.Parameters.AddWithValue("@Forma de pago",TextBox2.Text);
                    comando.Parameters.AddWithValue("@Nombre", Txtbox5.Text);
                    comando.Parameters.AddWithValue("@Banco", Txtbox6.Text);
                    comando.Parameters.AddWithValue("@CLABE interbancaria", Txtbox7.Text);
                    comando.Parameters.AddWithValue("@Factura", Txtbox3.Text);
                    comando.Parameters.AddWithValue("@Descripcion", Txtbox2.Text);
                    comando.Parameters.AddWithValue("@Cantidad", Txtbox1.Text);
                    comando.Parameters.AddWithValue("@Precio Unitario", Txtbox8.Text);
                    comando.Parameters.AddWithValue("@Precio Total", Txtbox9.Text);
                    comando.Parameters.AddWithValue("@Descuento", Txtbox10.Text);
                    comando.Parameters.AddWithValue("@Subtotal", Txtbox11.Text);
                    comando.Parameters.AddWithValue("@IVA", Txtbox12.Text);
                    comando.Parameters.AddWithValue("@Retencion ISR", Txtbox13.Text);
                    comando.Parameters.AddWithValue("@Retencion IVA", Txtbox14.Text);
                    comando.Parameters.AddWithValue("@Total",Txtbox15.Text);

                    OrdenID = Convert.ToInt32(comando.ExecuteScalar());
                    connection.Close();
                   MessageBox.Show("ID de la OP es" + Convert.ToString(OrdenID));
                }
                Txtbox2.Clear();
                Txtbox3.Clear();
                Txtbox4.Clear();
                Txtbox5.Clear();
                Txtbox6.Clear();
                Txtbox7.Clear();
                Txtbox2.Focus();
            }

    Gracias por su ayuda.

    sábado, 21 de marzo de 2020 23:01

Todas las respuestas

  • Hola buen día

    El problema es que el Store Procedure recibe un OrdenID y en la aplicacion no lo estas pasando
    De hecho la aplicacion te esta indicando el error
    expects parameter '@OrdenID', which was not supplied.'
    Esperando parametro @OrdenID que no fue suministrado

    Lo que deberías hacer es quitar del Store Procedure el Insert de @OrdenID y que tampoco lo recibe por parametro

    Como es el Id de la tabla en la definicion deberias declararla como PK e Identity con Autoincrement 1

    Saludos

    domingo, 22 de marzo de 2020 5:52
  • Gracias. Lo intentare.
    miércoles, 8 de abril de 2020 1:01
  • Hola

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

     

    Espero su respuesta. 

      

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN. 

      

    Oscar Navarro

    miércoles, 22 de abril de 2020 13:55
    Moderador
  • Si gracias. Funciona!
    jueves, 23 de abril de 2020 20:43