Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ejecucion de Procedimiento Almacenado (https://www.clubdelphi.com/foros/showthread.php?t=73118)

DasGrun 02-04-2011 18:23:36

Ok Gracias Casimiro por tu paciencia!!!!!

Luego le explico todo la aplicación...

Se creo una aplicación de creación de cheques donde use ATexto que me sirve para convertir de Numeros a Letras por ejemplo se digita un campo en Numero(2,354.40) y este lo convierte a otro en Letras(dos mil tresciento y cicuenta cuatro con 40/100) donde el campo de numero se almaceno en un campo de la tabla y el campo letras se almaceno como campo calculado utilizado en delphi.

Ahora lo que quiero hacer es almacenar este campo letras(DBEDIT) a un campo de la tabla(Cant_Letras).

lo he estado pensado hacer por medio de un Procedimiento Almacenado que es tema del que estamos hablando. este SP lo unico que hara es cargar parametros(Numero(2354.40) y el DBEDIT(dos mil tresciento cicuenta y cuatro con 40/100) campo calculado desde delphi.

este es el SP.
Código SQL [-]
CREATE PROCEDURE SP_INSERTAR_CANTLETRAS(
  CHEQUE_ID BIGINT DEFAULT NULL,
  CANTIDAD_LETRAS VARCHAR(250) CHARACTER SET ISO8859_1 DEFAULT NULL)
AS
BEGIN
  /* Procedure body */
 UPDATE
  MA_CHEQUE
SET
  MA_CHEQUE.CANTIDAD_LETRAS =  :CANTIDAD_LETRAS
WHERE
  MA_CHEQUE.CHEQUE_ID = :CHEQUE_ID;
END;

Mi Logica esta Bien, pero este Sp no esta funcionando, no esta dando los resultados.

como guardaria un campo calculado a un campo de la tabla usando DBEDIT?

Gracias por ayuda-

Casimiro Noteví 02-04-2011 19:46:35

Cita:

Empezado por DasGrun;395586[..
Mi Logica esta Bien, pero este Sp no esta funcionando, no esta dando los resultados.

Estamos igual, amigo, pero ¿dónde está el código que usas?
Además que "no está funcionando" ¿qué quiere decir?, lo pregunté antes.
En fin, la cosa es simple, se supone entonces que desde tu programa delphi llamas al procedimiento almacenado para crear el registro, bueno, por lo que veo no es así, no lo creas, lo que haces es actualizarlo, así que si no existe... entonces no hace nada!!!.

Código SQL [-]
UPDATE MA_CHEQUE
SET MA_CHEQUE.CANTIDAD_LETRAS =  :CANTIDAD_LETRAS
WHERE MA_CHEQUE.CHEQUE_ID = :CHEQUE_ID;

Si el valor que pasas al parámetro :cheque_id no existe entonces no tiene ningún registro que actualizar, ni tampoco creará ningún registro, evidentemente.
De esto entonces surgen varias preguntas más, principalmente: ¿qué quiéres hacer, actualizar o crear?, dices que quieres crear, pero "update" no es crear, deberías usar "insert" no "update", otras preguntas que se me ocurren no vale la pena ni que las exponga aquí porque estaría volviendo a lo que comenté antes, a recurrir a técnicas adivinatorias de lo que quieres hacer ;)

DasGrun 04-04-2011 16:21:39

Cheque_id existe Casimiro!!!

R: quiero actualizar.

gracias.

Casimiro Noteví 04-04-2011 16:38:45

Amigo, vuelvo a recordarte que la bola de cristal no funciona, que tampoco somos adivinos, así que pon el código completo de todo lo que haces.

IVAND 06-04-2011 22:23:35

Solo por curiosidad

Ejecutas el Sp algo como asi

Execute procedure SP_INSERTAR_CANTLETRAS('Tres mil',12)

luego haces algo asi

commit;

Claro esto es de la consola de tu manejador de base de datos EMS

Select * from MA_CHEQUE WHERE MA_CHEQUE.CHEQUE_ID = :CHEQUE_ID;

De seguro veras los cambios echos
:)

DasGrun 07-04-2011 01:52:38

Bueno Amigo aqui he creado un Video del Problema que tengo del SP, espero que comprendan el Probema. y de ante mano muchas gracias por su ayuda.



espero que hayan entendido....si no...
se hace otro video con mas tiempo...jajajaja soy inexplicable!!!1

Casimiro Noteví 07-04-2011 11:39:43

El problema es lo que ya hemos comentado antes, no haces commit, debes confirmar los cambios.



El motivo de que veas el cambio la primera vez es porque ese programa que estás usando mantendrá una caché o algo y cuando desconectas y conectas realmente no estará haciéndolo, pero seguro que si en lugar de eso cierras el programa y lo vuelves a abrir tampoco verás los cambios.

Así que ya sabes, confirmar cambios, commit.

DasGrun 07-04-2011 16:27:17

GRACIAS A TODOS, ahora tengo que programarlo desde el Delphi, ahi les cuento como me va..


GRACIAS.


La franja horaria es GMT +2. Ahora son las 20:24:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi