PDA

Ver la Versión Completa : como llamar a un procedimiento de mi base de datos en delphi


Anyu
12-08-2008, 16:29:05
hola a todos estoy usando la version 6.0.12-stable del zeos con un delphi 6 y necesito ejecutar unos precedimientos de la base de datos y nose como hacerlo, por ejemplo anular una factura, que tiene que volver mis mercaderias al stock, descontar de la caja lo ingresado y restar la comision del vendedor.
el procedimiento ya esta, y funciona perfectamente desde la base de datos porque ya lo probe, ejecutandolo desde el ibexpert, pero nose como llamarlo en el delphi, hice un triguer que se ejecute after update, y nada... :confused:
porque cuando preciono el boton de anular preparo la tabla con factura.edit y cargo el campo de anulado a 'si', y entonces eso tendria que ejecutar mi procedimiento, que toma lo que dice en ese campo y si es 'si', realiza toda la accion, pero no funciona, como puedo hacerlo?
porque otra opcion era tambien con el TSQLSTOREDPROCEDURE, y así funciona pero me lanza un error cuando quiero una factura nueva despues de haber anulado otra, y tambien tengo que cerrar y abrir el sistema para que este me actualice los datos, y obviamente el cliente este me va escupir en la cara si le digo que esa es la unica forma de que funcione su sistema de facturacion jajaja. :D
les agradeceria que me dieran una mano, yo lo voy a seguir intentando tambien aca por mi lado, desde ya muchas gracias a todos.

AntonioTB
12-08-2008, 22:42:23
Hola.
No comentas la base de datos que estás usando, aunque parece ser firebird por lo que comentas.
Normalmente un procedimiento que realiza acciones tan complejas requiere de parámetros. a mi en estos momentos se me ocurre el número de la factura.
Yo revisaría que los prámetros son correctos y tienen valores válidos.
En mi caso yo uso IBX y puedo ejecutar sin problemas los procedimientos almacenados. Ya que comentas que con ibexpert consiques que se ejecute, parece poco probable que sea un error de código en el procedimiento almacenado. De todos modos yo revisaría también el codigo del procedimiento, ya que comentas que falla al borrar algo que acabas de crear o algo por el estilo.

Lo de cerrar y abrir el sistema, es típico de las actualizaciones. Si actualizas los datos de una tabla, pero tienes otra consulta sobre la misma tabla abierta, debes decirle a la consulta que se refresquen los datos. La instrucción o método a llamar dependerá del componente que estés usando, pero será algo parecido a refresh o requery, aunque si no te funciona, siempre puedes hacer primero close, y luego open.
Así deberías ver los datos actualizados.

Espero haberte sido de ayuda. De todos modos, si puedes concretar el mensaje de error que recibes y algunos detalles más del proceso, quizá pueda ser un poco más específico.

Un saludo, Antonio.