Principales respuestas
la funcion o el procedimiento tiene demasiados argumentos

Pregunta
-
Buen día.
Solicito su ayuda ya que llevo parte del día sin poder encontrar mi error, estoy trabajando en asp.net y c#, en mi pantalla tengo un gridview el cual tiene una columna con el evento OnRowUpdating="dgvDetallesCotizacion_RowUpdating" el cual contiene el siguiente codigo:
protected void dgvDetallesCotizacion_RowUpdating(object sender, GridViewUpdateEventArgs e) { int Folio = Convert.ToInt32(lblFolio.Text); GridViewRow row = (GridViewRow)dgvDetallesCotizacion.Rows[e.RowIndex]; TextBox partida = (TextBox)row.Cells[1].Controls[0]; TextBox cantidad = (TextBox)row.Cells[2].Controls[0]; TextBox codigo = (TextBox)row.Cells[3].Controls[0]; TextBox descripcion = (TextBox)row.Cells[4].Controls[0]; TextBox precioU = (TextBox)row.Cells[5].Controls[0]; TextBox total = (TextBox)row.Cells[6].Controls[0]; int Partida = Convert.ToInt32(partida.Text); int Cantidad = Convert.ToInt32(cantidad.Text); string Codigo = Convert.ToString(codigo.Text); string Descripcion = Convert.ToString(descripcion.Text); double PrecioU = Convert.ToDouble(precioU.Text); double TotalP = Convert.ToDouble(total.Text); dgvDetallesCotizacion.EditIndex = -1; ActualizaPartidas(Folio, Partida, Cantidad, Codigo, Descripcion, PrecioU, TotalP); PartidasActualizadas(Folio); }
Todo bien hasta el método ActualizaPartidas() pero cuando llega al metodo PartidasActualizadas(); me arroja el error "la funcion o el procedimiento xprocSelectPartidasCotizacion tiene demasiados argumentos", ya valide el procedimiento almacenado en SQL y no hay problemas con la recepcion de parametros, el codigo a partir del metodo PartidasActualizadas(), es el siguiente:
public void PartidasActualizadas(int Folio) { dgvDetallesCotizacion.DataSource = metodoscot.SeleccionaPartidasActualizadas(Folio); dgvDetallesCotizacion.DataBind(); } public DataTable SeleccionaPartidasActualizadas(int Folio) { DataTable tabla = new DataTable(); tabla = objetoCD.MostrarActualizacionPArtida(Folio); return tabla; } public DataTable MostrarActualizacionPArtida(int Folio) { comando.Connection = conexion.AbrirConexion(); comando.CommandText = "xprocSelectPartidasCotizacion"; comando.CommandType = CommandType.StoredProcedure; comando.Parameters.AddWithValue("@Folio", Folio); leer = comando.ExecuteReader(); comando.Parameters.Clear(); tabla.Load(leer); conexion.CerrarConexion(); return tabla; }
Respuestas
-
Puede ser que cuando llegas al método MostrarActualizacionPArtida, el comando contenga ya algún argumento que se le haya quedado metido dentro desde alguna actualización anterior, y entonces por eso se quejaría de que al llamar al procedimiento almacenado le estás pasando demasiados parámetros.
Para comprobar si el problema es este, haz la prueba de poner una llamada a comando.Parameters.Clear() al principio del método (similar a la que ya tienes cerca del final del mismo).
- Marcado como respuesta EKC2186 martes, 16 de febrero de 2021 21:24
Todas las respuestas
-
Hola, puedes mostrar el código, aunque sea la definición, de tu procedimiento almacenado? Con eso veríamos si está todo ok o no. También puedes revisar si la BBDD es la correcta y no estés apuntando a una antigua?
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
-
Hola Sergio.
Claro el script de mi procedimiento e este:
ALTER PROCEDURE [dbo].[xprocSelectPartidasCotizacion] -- Add the parameters for the stored procedure here @Folio INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT Folio ,Partida ,Cantidad ,Codigo ,Descripcion ,PrecioU ,Total ,FechaRegistro ,Nombre FROM Cotizaciones, Clientes WHERE Folio = @Folio AND Cotizaciones.IdCliente = Clientes.IdCliente END
de hecho es el mismo procedimiento que utilizo para refrescar el grid en los eventos "OnRowEditing", "OnRowCancelingEdit" y "OnRowDeleting", solo que no se porque marca ese error al momento de refrescar el grid después de actualizar la fila
-
Puede ser que cuando llegas al método MostrarActualizacionPArtida, el comando contenga ya algún argumento que se le haya quedado metido dentro desde alguna actualización anterior, y entonces por eso se quejaría de que al llamar al procedimiento almacenado le estás pasando demasiados parámetros.
Para comprobar si el problema es este, haz la prueba de poner una llamada a comando.Parameters.Clear() al principio del método (similar a la que ya tienes cerca del final del mismo).
- Marcado como respuesta EKC2186 martes, 16 de febrero de 2021 21:24
-
-
Hola,
Gracias por levantar tu consulta en los foros de MSDN.
Eric Ruiz
____________________________
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.