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 17-01-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Red face

Cita:
Empezado por Al González Ver Mensaje
Esa fecha está bien. Es una fecha en formato ISO.

Otra cosa es como quiera uno que se muestre en la pantalla. Por ello la siguiente pregunta: ¿esa consulta la tienes asociada a un conjunto de datos, cuyo campo de fecha (el resultado de la consulta) muestras en algún formulario?

¿Qué razón hay para hacer trabajar al servidor (y a la conexión de red) encargándole devolver la cadena 'Fecha es mayor a 2011'? Quizá una mejor idea sería emplear un campo fecha normal y usar en Delphi su evento OnGetText para condicionar qué es lo que debe mostrar o cómo debe mostrarlo.

Saludos.
Estoy de acuerdo, pero no del todo, el Select lo puse así a modo de ejemplo porque en realidad el problema era que no podía ver la fecha en un formato en el cual la habían cargado.
Igualmente, usando EXTRACT se arregla.

En este caso, la consulta se hace a través de un MDOQuery y luego la mando a una grilla para que se puedan ver los datos.
Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 17-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por santiago14 Ver Mensaje
[...] en realidad el problema era que no podía ver la fecha en un formato en el cual la habían cargado [...] la consulta se hace a través de un MDOQuery y luego la mando a una rejilla para que se puedan ver los datos
Considera que en la mayoría de los motores de bases de datos, como es el caso de Firebird, las fechas no se guardan tal como el texto que fue capturado. Una fecha se guarda en formato binario y a la hora de presentarla a un humano puede emplearse uno de muchos formatos posibles (día/mes/año, mes/día/año, año/mes/día, año-mes-día, etcétera).

Si el problema es entonces de mera presentación, tan sólo basta que le indiques al campo, a través de su propiedad DisplayFormat, el formato que debe usar, por ejemplo: dd/mm/yyyy. Lo más fácil es hacerlo con el inspector de objetos, y también se puede por código:
Código Delphi [-]
ObjetoCampo.DisplayFormat := 'dd/mm/yyyy';

Espero haberme explicado.
Responder Con Cita
  #3  
Antiguo 17-01-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Smile

Exacto, ahora sí.
Les comento como me fue cuando haga las pruebas pertinentes.

Gracias, Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 17-01-2013
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
El problema radica en la forma como trata el mensaje:

Código SQL [-]
Select IIF(e.fecha >= '2011/12/31', , e.fecha)' From tabla e

Ahí se maneja un solo tipo de dato, firebird en ese IIF hace un cast sobre "e.fecha" y lo regresa como varchar ya que el texto 'Fecha es mayor a 2011' no lo puede tratar como tipo fecha,así pues al dar displayFormat a el texto creo que sacará una excepción...
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #5  
Antiguo 17-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por RONPABLO Ver Mensaje
[...] lo regresa como varchar ya que el texto 'Fecha es mayor a 2011' no lo puede tratar como tipo fecha,así pues al dar displayFormat a el texto creo que sacará una excepción...
Claro, pero la sugerencia de usar DisplayFormat es con un campo de fecha normal, a raíz de que Santiago dijera que se trataba más bien de una cuestión de formato / presentación.
Responder Con Cita
  #6  
Antiguo 28-01-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Red face

Bueno, siguiendo con el tema, les mando una consulta en la cual muestro una lista de fechas armada con LIST.
Los resultados salen de la forma: aaaa-mm-dd, yo quisiera que salgan de la forma dd-mm-aaaa, pueden ver el resultado en el .jpg adjunto.

Gracias, Santiago.

Código SQL [-]
Select s.fecha_sumario, LPAD(s.nro_op, 9, '0') AS nro_op,
LPAD(ec.pto_vta_fact, 4, '0') || ' - ' || LPAD(ec.nro_fact, 8, '0') AS nro_factura,
ts.nombre_tit,
(Select LIST(fs.fecha_sumario, ', ')
From fechas_sumario fs
Where fs.nro_op = s.nro_op) AS fechas_sumarios
From sumarios s, enc_factura ec, titulos_sec ts
Where s.cod_fact = ec.cod_factura
and s.cod_sec = ts.cod_sec
and s.renglon_tit = ts.renglon_tit
and CAST(s.fecha_sumario AS DATE) BETWEEN '01/01/2011' AND '12/31/2011'
and ec.cod_sucursal = 1

La verdad es que encuentro inquietante no poder configurar la salida de las fechas a la manera que yo necesite.

Santiago.
Imágenes Adjuntas
Tipo de Archivo: jpg sql.jpg (37,1 KB, 11 visitas)
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #7  
Antiguo 28-01-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Thumbs up

Acabo de encontrar una forma, está buena...

Código SQL [-]
Select s.fecha_sumario, LPAD(s.nro_op, 9, '0') AS nro_op,
LPAD(ec.pto_vta_fact, 4, '0') || ' - ' || LPAD(ec.nro_fact, 8, '0') AS nro_factura,
ts.nombre_tit,
(Select LIST(LPAD(EXTRACT(DAY FROM fs.fecha_sumario), 2, '0') || '/' ||
      LPAD(EXTRACT(MONTH FROM fs.fecha_sumario), 2, '0') || '/' ||
      LPAD(EXTRACT(YEAR FROM fs.fecha_sumario), 4, '0'), ', ')
From fechas_sumario fs
Where fs.nro_op = s.nro_op) AS fechas_sumarios
From sumarios s, enc_factura ec, titulos_sec ts
Where s.cod_fact = ec.cod_factura
and s.cod_sec = ts.cod_sec
and s.renglon_tit = ts.renglon_tit
and CAST(s.fecha_sumario AS DATE) BETWEEN '01/01/2011' AND '12/31/2011'
and ec.cod_sucursal = 1

Con esto se me soluciona un drama, por lo menos en el LIST, bastante grande. Todos mis clientes me andan reclamando que tienen que "mirar la fecha de atrás para adelante". Envío el adjunto con el resultado.

Gracias a todos por su atención.

Santiago.
Imágenes Adjuntas
Tipo de Archivo: jpg sql.jpg (37,2 KB, 7 visitas)
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
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
Manejo de Fechas en Firebird 2.1 Jose Roman SQL 3 17-02-2009 17:15:03
Firebird dialect 3 y fechas IVAND Firebird e Interbase 5 17-09-2008 19:16:48
firebird y fechas jmlifi Varios 4 05-09-2007 09:54:59
Fechas en Firebird Puche Firebird e Interbase 3 27-07-2006 10:09:52
Formato de fechas en FireBird 1.5 defcon1_es Firebird e Interbase 1 02-04-2004 17:02:52


La franja horaria es GMT +2. Ahora son las 21:47:04.


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