none
la funcion o el procedimiento tiene demasiados argumentos RRS feed

  • 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;
            }

    martes, 16 de febrero de 2021 19:52

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
    martes, 16 de febrero de 2021 21:10

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

    martes, 16 de febrero de 2021 20:46
    Moderador
  • 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

    martes, 16 de febrero de 2021 20:54
  • 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
    martes, 16 de febrero de 2021 21:10
  • Hola Alberto.

    muchas gracias, con tu sugerencia pude resolverlo.

    gracias a todos.

    martes, 16 de febrero de 2021 21:26
  • 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.

    martes, 16 de febrero de 2021 21:38
    Moderador