Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2024
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Migrando firebird 2.5 a 3

Hola a todos , estoy migrando mi base de 2.5 a 3 firebird utilizo los componentes ibx , al parecer todo normal le puse en configuracion que permita usar rfunc , todo funciona bien , pero al lanzar una validacion desde un stored procedure no sale como antes salia osea el mensaje de error que se dispara el trigger

Attempt to execute an unprepared dynamic SQL statement

alguno de uds les ha pasado , si pruebo desde ibexpert lanza la excepcion bien pero desde el sistema sale este error y no muestra mas

adjunto trigger
Código SQL [-]
CREATE OR ALTER trigger producto_bodega_au0 for producto_bodega
active after update position 0
AS
 declare variable nombre varchar(150);
begin
  /* Trigger text */
 if (new.cantidad<=-1) then
   Begin
     nombre = (select nombre from producto where key_producto=NEW.key_producto) ;
     exception bloquear_saldo_bodega 'El saldo de este Producto no puede estar en negativo = ' || nombre  ;
 
  End

end
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 15-02-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Ese mensaje lo produce el trigger o es de tu programa delphi?
Porque dices que con ibexpert no sale el error, pienso que es algo de tu programa.

En todo caso, para que quede más claro el código, en esta línea yo lo cambiaría, aunque no hace falta:

Esto: if (new.cantidad<=-1) then por esto: if (new.cantidad<=(-1)) then
Responder Con Cita
  #3  
Antiguo 16-02-2024
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Como siempre gracias por responder

Te explico mejor , el sp al momento que se ejecuta en firebird 3 desde ibexpert muestra este mensaje

BLOQUEAR_SALDO_BODEGA.
El saldo de este Producto no puede estar en negativo = ACAI FUTURO COM LIQ 269ML.
At trigger 'PRODUCTO_BODEGA_AU0' line: 9, col: 6
At procedure 'SPMOV_INVENTARIOS' line: 142, col: 9.
<Missing arg #1 - possibly status vector overflow>.

Si se ejecuta lo mismo de firebird 2.5 ejecuta asi
Código SQL [-]
BLOQUEAR_SALDO_BODEGA.
El saldo de este Producto no puede estar en negativo = ACAI FUTURO COM LIQ 269ML.

Parte del codigo donde se ejecuta el error obvio donde le pongo a negativo el stock

Código SQL [-]

       Begin
        UPDATE producto_bodega SET cantidad=(cantidad)-:cantidad
        WHERE key_producto_b=:key_producto_b;
            WHEN SqlCode -901 DO BEGIN
                               in autonomous transaction do
                                insert into error_update (ID_TRANSACCION,MENSAJE,ID_CLAVE_DOCUMENTO,VALOR)
                                values (:key_producto_b,:cod_transaccion||'PB',:key_cab_mov,:cantidad);
                               End
       End
__________________
IVAND

Última edición por IVAND fecha: 16-02-2024 a las 15:25:52.
Responder Con Cita
  #4  
Antiguo 16-02-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Eso es un trigger?
Responder Con Cita
  #5  
Antiguo 16-02-2024
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
No no no , el trigger ejecuta una condicion q si la ejecuto dentro de un sp me bota ese error en firebird 3 , mientras q en 2.5 funciona bien

si ejecuto el sp desde el ibexpert sale este mensaje


Código PHP:
BLOQUEAR_SALDO_BODEGA.
El saldo de este Producto no puede estar en negativo ACAI FUTURO COM LIQ 269ML.
At trigger 'PRODUCTO_BODEGA_AU0' line9col6
At procedure 
'SPMOV_INVENTARIOS' line142col9.
<Missing arg #1 - possibly status vector overflow>. 
si lo ejecuto desde mi aplicativo sale este mensaje
Código SQL [-]

"Attempt to execute an unprepared dynamic SQL statement"
__________________
IVAND
Responder Con Cita
  #6  
Antiguo 17-02-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La verdad es que no me queda muy claro la situación, ¿puedes subir algún ejemplo sencillo para que podamos probar?
Responder Con Cita
  #7  
Antiguo 22-02-2024
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Hola casimiro tendria que subir la base de datos y un programita en delphi que haga saltar la validación para que veas el error , (especificamente lo que hace es que desde delphi 2009 con los componentes ibx capturamos el mensaje de error que nos devuelve la base de datos y al querer mostrar en delphi nos da el error)
__________________
IVAND
Responder Con Cita
  #8  
Antiguo 22-02-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por IVAND Ver Mensaje
... con los componentes ibx capturamos el mensaje de error que nos devuelve la base de datos y al querer mostrar en delphi nos da el error)

Sigo sin entender, entonces ¿el error es al mostrar en delphi el mensaje devuelto?
Responder Con Cita
  #9  
Antiguo 13-03-2024
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Mil disculpas por no responder a tiempo

Si Casimiro , en delphi con los componentes ibx ya no muestra el mensaje de error de forma correcta , como lo mostraba cuando usaba firebird 2.5
__________________
IVAND
Responder Con Cita
  #10  
Antiguo 13-03-2024
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por IVAND Ver Mensaje
Código SQL [-]

"Attempt to execute an unprepared dynamic SQL statement"
Eso suena a que es este problema:

Código SQL [-]
 values (:key_producto_b,:cod_transaccion||'PB',:key_cab_mov,:cantidad);

Es erroneo concatenar un parametro con lo que sea. Cambia cod_transaccion para que tenga el texto completo.
__________________
El malabarista.
Responder Con Cita
  #11  
Antiguo Hace 6 Días
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Hola a todos , el problema es una unidad en los componentes ibx pero no se como actualizarlos
__________________
IVAND
Responder Con Cita
  #12  
Antiguo Hace 6 Días
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por IVAND Ver Mensaje
Hola a todos , el problema es una unidad en los componentes ibx pero no se como actualizarlos
Explícate, no se entiende lo que dices.
Responder Con Cita
  #13  
Antiguo Hace 3 Horas
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Explícate, no se entiende lo que dices.

Estimados amigos , intentare explicar de mejor manera mi pregunta y mi duda

Estoy migrando a firebird 3 , delphi 2009 y los componentes IBX , todo esta perfecto ya esta en produccion y todo , pero resulta que hay un problema al monento de mostrar un mensaje que viene de un stored procedure , he leído que esto se debe a que ibx tal como esta tiene ese problema con firebird 3 , he leido que se debe cambiar la unidad en los fuentes de los componentes IBX alguno de uds ha cambiado algo para q los mensajes que vengan de un store procedure cuando se produzca un error se muestre correcto , como se mostraba cuando se trabajada con firebird 2.5 , espero a ver sido claro en mi duda , si esta en sus manos espero sus comentarios
__________________
IVAND
Responder Con Cita
  #14  
Antiguo Hace 3 Horas
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estimado IVAND, no aclaras nada, sólo dices "...hay un problema...", "...he leído que...", "...tiene ese problema...", "...he leido que se debe..." ...

Creo que lo mejor es que simplemente pegues aquí el stored procedure, que nos digas exactamente qué quieres conseguir, y que nos copies exactamente el mensaje de error o problema que te está surgiendo.
Responder Con Cita
  #15  
Antiguo Hace 3 Horas
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
Estimado gracias por su tiempo en leer , pero creo que soy muy malo para explicar mi problema , he tratado de explicarlo de mil maneras y nada que me puedo hacer entender , la verdad no se como mas poder explicar el error q me da al usar firebird 3 con delphi 2009 y los componentes ibx

He enviado los mensajes que salen cuando trabajo con firebird 2.5 y lo q sale ahora con la version 3 , pero les quedo agradecido la verdad , voy a tener que comprar otros componentes que manejen mejor este error
Igual vuelvo a intentar explicarme otra vez

El mensaje usando firebird 2.5 se muestra en delphi super bien , indica el producto que esta quedando en negativo y esta perfecto se entiende y se puede revisar
Código PHP:
BLOQUEAR_SALDO_BODEGA.
El saldo de este Producto no puede estar en negativo ACAI FUTURO COM LIQ 269ML.
At trigger 'PRODUCTO_BODEGA_AU0' line9col6
At procedure 
'SPMOV_INVENTARIOS' line142col9.
<Missing arg #1 - possibly status vector overflow>. 


al utilizar firebird 3 el mensaje que retorna cuando se produce la exception en muy generico
Código PHP:
"Attempt to execute an unprepared dynamic SQL statement" 

indico ademas el trigger q debe lanzar la exception

Código PHP:
CREATE OR ALTER trigger producto_bodega_au0 for producto_bodega
active after update position 0
AS
begin
  
/* Trigger text */
 
if (new.cantidad<=-1then  exception bloquear_saldo_bodega ;

end 
Se que es un problema de los componentes IBX al manejar el mensaje de error , pero no se cual unidad de las ibx corregir


De antemano espero se me entienda , caso contrario quedare igual de agradecido como siempre de ustedes
__________________
IVAND
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Migrando de InterBase a Firebird Carmelo Cash Firebird e Interbase 11 14-05-2014 02:43:34
Migrando triggers de Firebird a PostgreSQL macugi PostgreSQL 6 02-05-2013 19:47:57
Migrando a Firebird mjjj Conexión con bases de datos 6 26-09-2007 01:14:39
Migrando a .NET JULIPO Internet 1 15-09-2006 13:23:03
migrando a firebird JoseQ Firebird e Interbase 1 13-08-2004 01:49:47


La franja horaria es GMT +2. Ahora son las 00:37:51.


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