Ver Mensaje Individual
  #27  
Antiguo 21-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Reputación: 0
aurafern Va por buen camino
Tenias toda la razon en lo de los tipos de datos, estaba colocando en las variables del into una de tipo smallint y en la tabla estaba como double. Pero sigo sin resolver lo de la fecha.

Ahora: la variable pfecha la declaro como date

Código SQL [-]

 EMPRESA VARCHAR(100),
    SUCURSAL VARCHAR(100),
    MODELO VARCHAR(15),
    NO_RANGOS INTEGER,
    PFECHA DATE)

declare variable P_DATA_D VARCHAR(200);
declare variable P_DATA_H VARCHAR(200);

 P_DATA_D = ' AND (''' || cast(:PFECHA as varchar(20)) || ''' - D.VENCIMIENTO) >= ' ||ESDE;
 P_DATA_H = ' AND (''' || cast(:PFECHA as varchar(20)) || ''' - D.VENCIMIENTO) >= ' ||:HASTA;

SQL_INS= 'SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, ';
SQL_INS=SQL_INS ||' d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d ';
SQL_INS=SQL_INS ||' where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA ';
SQL_INS=SQL_INS ||' and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero ' ||:EMPRESA ||:SUCURSAL;
SQL_INS=SQL_INS ||_DATA_D ||:P_DATA_H;
SQL_INS=SQL_INS ||' GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, ';
SQL_INS=SQL_INS ||' e.numero_cruce, d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR ';
SQL_INS=SQL_INS ||' having SUM(e.DEBITO-e.CREDITO)<>0 ';
FOR EXECUTE STATEMENT SQL_INS
into :saldo,:id_auxiliar,:id_empresa,:id_sucursal,:id_tipo,:numero,:fecha_DOC,:vencimiento,:id_tercero,:i  d_sucursal_tercero, :ID_VENDEDOR
DO

lo ejecuto desde IB-Expert personal y sigue devolviendo el error

Unsuccessful execution caused by a system error that preclude
successful execution of subsequent statements
Dynamic SQL Error
expression evaluation not supported

le coloque los parametros asi

empresa and e.id_empresa=1
sucursal and e.id_sucursal=1
modelo 4
no_rango 4
pfecha 09/20/2004

entonces sigo sin entender...

En el ibAdmin como si lo puedo ejecutar paso a paso
observo que la cadena SQL_INS, se construye bien.

Código SQL [-]
SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE,
e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, d.fecha, d.vencimiento,
e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR FROM CUENTAS_POR_TERCERO e ,cuentas_por_tercero d
 where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA
 and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero
 and e.id_empresa=1 and e.id_sucursal=1
  AND ('20-SEP-2004' - D.VENCIMIENTO) >= -9999 AND ('20-SEP-2004' - D.VENCIMIENTO) >= -30
  GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce,
   d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR
   having SUM(e.DEBITO-e.CREDITO)<>0

voy al IBConsole pego esta cadena resultante de sql_ins y la ejecuto y funciona ....entonces no entiendo porque mientras está en el procedimiento almacenado no funciona.

Saludos.

Muchas gracias por el interes prestado!

Última edición por aurafern fecha: 21-09-2004 a las 00:41:36.
Responder Con Cita