Usuario
ERROR AL EJECUTAR STORE PROCEDURE DESDE C#

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.
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 1Saludos
- Propuesto como respuesta Javi Fernández F domingo, 22 de marzo de 2020 6:51
-
-
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
-