Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Te aseguro de que esa es la forma de especificar una fecha en una cadena (puedes comprobarlo ejecutando una pequeña consulta directamente en el IBConsole).

El error te lo debería provocar algún otro problema en la sentencia.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #2  
Antiguo 22-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Hola!

Te cuento que he probado dandole el siguiente valor a P_DATA_d

Código SQL [-]
P_DATA_D = ' AND (D.VENCIMIENTO <= ''' ||:PFECHA|| ''') ';

SQL_INS= 'SELECT CAST(SUM(e.DEBITO-e.CREDITO) AS DOUBLE PRECISION) 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_X e , cuentas_por_tercero_x 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;
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
   BEGIN
nhjghggg
 end

y funciona perfectamente pasandole los parametros asi
Código Delphi [-]
query6.ParamByName('PFECHA').AsDateTIME:= int(mdFECHA.AsDateTime);
o asi
Código Delphi [-]
query6.ParamByName('PFECHA').AsSTRING :=Formatdatetime('mm/dd/yyyy',mdFECHA.AsDateTime);

y pienso que la cadena de la fecha para colocarla en una consulta construida es que no funciona.. o sera que me equivoco?

si la consulta no es construida funciona perferct,

Código SQL [-]
FOR 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, E.CUOTA_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 =:EMPRESA AND E.ID_SUCURSAL =:SUCURSAL
and (fecha - d.vencimiento)>=:desde and (fecha - d.vencimiento)<=:hasta 
GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE,
e.numero_cruce, E.CUOTA_CRUCE , d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR
having SUM(e.DEBITO-e.CREDITO)<>0

pero si toca armarla, hay algo en la construccion de la cadena que resta las fechas que no la deja funcionar.

Ahora yo me pregunto: Porqué cuando la construya si funciona la comparación de las dos fechas y la resta no?


Saludos!!
Responder Con Cita
  #3  
Antiguo 01-10-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Thumbs up

Gracias por haberme tenido tanta paciencia!

El problema se resolvió teniendo en cuenta los valiosos consejos de Guillotmarc y a la colaboracion de Panta Llunel, quien me sugirio la siguiente instrucción

Código SQL [-]
P_DATA_D = ' AND ( D.VENCIMIENTO+' || cast(:desde as varchar(4)) || ') >= 
''' || cast(:PFECHA as varchar(10)) || '''' ; 
P_DATA_H = ' AND ( D.VENCIMIENTO+' || cast(:hasta as varchar(4)) || ') <= 
''' || cast(:PFECHA as varchar(10)) || '''' ;

Haciendo despejes en la desigualdad. Es decir, pasar el campo vencimiento al otro lado de la desigualdad.

Muchas gracias de nuevo.

Utilizando execute statement, me ahorraré mucho trabajo y lograré una mayor eficiencia en algunos problemas que tengo que resolver
Que descanso!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 18:39:06.


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
Copyright 1996-2007 Club Delphi