none
Procedure or function has too many arguments specified RRS feed

  • Pregunta

  • Buenos días. Actualmente trabajo en un sistema de inventarios, tengo problemas al querer hacer cualquier modificación a la base de datos, aquí un ejemplo:

    Anteriormente me había ocurrido el mismo error pero al analizarlo logre detectar mi error, lo corregí  y todo funciono bien. Lo raro aquí es que a veces me funciona y aveces no, solo tengo dos tres operaciones que se manejan a través de procedimientos almacenados que siempre han funcionado y no fallan. Ya he analizado todos los métodos y procedimientos almacenados y no he encontrado una solución. A continuación anexo capturas de los códigos.

    Método que pasa los parámetros al procedimiento almacenado: 

    Funcionamiento del botón guardar:

    Código SQL del procedimiento almacenado:

    Gracias por su atención espero puedan ayudarme.

    jueves, 8 de febrero de 2018 16:29

Respuestas

  • Observo un caso en el que la lógica fallaría. Fíjate que tomas "q", le añades parámetros, luego lo ejecutas, y después limpias los parámetros, con lo que queda listo para la siguiente ejecución en la que partimos de nuevo de cero para los parámetros. Pero todo ello está en un try...catch, y en el catch no se limpian los parámetros. Si alguna vez da un error y entra en el catch, a partir de ese momento fallarán todas las invocaciones debido a los parámetros superfluos. Solución: Pon un "finally" en el try...catch y mueve el Parameters.Clear() al finally. O mejor todavía, pon el Clear el principio (antes de comenzar a añadir parámetros) en lugar de al final.
    jueves, 8 de febrero de 2018 18:16
    Moderador
  • hola

    No programes de esa forma, en donde variables como ser "q" no sabes ni de donde salen o en que estado quedaron

    programa en capas, como explico aqui

    [WinForms] Edición Empleados

    analiza la capa de datos y como la conexion y los objetos command se crean locales en cada metodo

    Ademas no deberias pasar cada valor por parametro a la funciona, trabaja orientado a objetos y crea clases que modeln tu negocio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 8 de febrero de 2018 19:07

Todas las respuestas

  • Puedes subir una captura de tu clase Conexiones.cs especificamente la linea 111

    Si no puedes ver tu linea

    Herramientas/Opciones/Mostrar todas las Configuraciones/Editor de Texto/C#o Basic dependiendo/Mostrar Numeros de linea


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    jueves, 8 de febrero de 2018 16:37
  • Observo un caso en el que la lógica fallaría. Fíjate que tomas "q", le añades parámetros, luego lo ejecutas, y después limpias los parámetros, con lo que queda listo para la siguiente ejecución en la que partimos de nuevo de cero para los parámetros. Pero todo ello está en un try...catch, y en el catch no se limpian los parámetros. Si alguna vez da un error y entra en el catch, a partir de ese momento fallarán todas las invocaciones debido a los parámetros superfluos. Solución: Pon un "finally" en el try...catch y mueve el Parameters.Clear() al finally. O mejor todavía, pon el Clear el principio (antes de comenzar a añadir parámetros) en lugar de al final.
    jueves, 8 de febrero de 2018 18:16
    Moderador
  • jueves, 8 de febrero de 2018 18:35
  • hola

    No programes de esa forma, en donde variables como ser "q" no sabes ni de donde salen o en que estado quedaron

    programa en capas, como explico aqui

    [WinForms] Edición Empleados

    analiza la capa de datos y como la conexion y los objetos command se crean locales en cada metodo

    Ademas no deberias pasar cada valor por parametro a la funciona, trabaja orientado a objetos y crea clases que modeln tu negocio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 8 de febrero de 2018 19:07
  • Hola,

    te diré que te creo que te ocurre, el problema es que cambias el contenido del stored mientras depuras y hasta que no inicias una nueva instancia del depurador este no asume el contenido del ultimo stored modificado. me equivoco ??

    La causa es que trbaajs con una clase que usa variables globales a nivel de clase para los parámetros, la conexión etc...

    Lo mejor es que abras conexión al ejecutar cargues valores de parametros y ejecutes, en el try catch intenta tener un finally que inicialice todo, cierre conexión etc...


    jueves, 8 de febrero de 2018 19:19
  • Esa es tu clase Conexiones.cs


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    viernes, 9 de febrero de 2018 14:10
  • Tengo el mismo problema que tu, quisiera saber si lo pudiste solucionar, saludos.
    martes, 21 de agosto de 2018 0:02