Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Bibliotecas de código fuente > [GH Freebrary]
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 15-04-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: 29
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 Casimiro Notevi Ver Mensaje
Perdón por desvirtuar un poco.
No desvirtúas nada, Antonio. GHF, como la propia VCL, emplea variables globales para algunas cosas.

Bueno, sigamos avanzando en esto.

Propuesta

Por un lado tendremos las funciones ISO ghISODate, ghISOTime y ghISODateTime, que usarán invariablemente el formato extendido de representación completa para fecha del calendario y hora local dado por el estándar ISO 8601; mirar estas tablas. Las funciones ghISOXXX serán útiles donde quiera que se necesite expresar fechas y horas bajo ese formato, como es el caso de los documentos XML:
Código:
  <xs:attribute name="fecha" use="required">
    <xs:annotation>
      <xs:documentation>Atributo requerido para la expresión de la fecha y hora de expedición del
        comprobante fiscal. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la
        especificación ISO 8601.</xs:documentation> 
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:dateTime">
        <xs:whiteSpace value="collapse" /> 
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
----------
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org
  /2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx
  /sitio_internet/cfd/3/cfdv3.xsd http://www.sat.gob.mx/TimbreFiscalDigital TimbreFiscalDigital.xsd"
  version="3.0" folio="4009" fecha="2011-11-14T09:21:00" [...]
Por otra parte estarán las funciones "SQL" relacionadas de la siguiente manera ("->" significa que la función de la izquierda llama a la función de la derecha):
Código Delphi [-]
ghCommaSQLValues -> ghSQLValues -> ghSQLValue -> ghQuotedSQLDate -> ghSQLDate
                                         |--- -> ghQuotedSQLTime -> ghSQLTime
                                         |--- -> ghQuotedSQLDateTime -> ghSQLDateTime

Las tres últimas, ghSQLDate, ghSQLTime y ghSQLDateTime serán "configurables" mediante tres variables globales de tipo String: GHSQLDateFormat, GHSQLTimeFormat, y GHSQLDateTimeFormat, cuyos valores predeterminados serán 'yyyy-mm-dd', 'hh:nn:ss' y 'yyyy-mm-dd hh:nn:ss' (espacio intermedio y no T), respectivamente. No porque sean los que Firebird acepta incondicionalmente, sino porque todos los motores SQL debieran admitirlo sin protestar, ¿me ayudan por favor a corroborar o refutar esta última afirmación?

Si quisiéramos prescindir de las variables globales, habría que declarar parámetros de formato para fechas y horas en todas las funciones del diagrama anterior. Eso sería engorroso y la aplicación consumiría un poco más de recursos, además de que llamar a tales funciones con valores de fecha y hora, y hacerlo con formatos distintos a los del estándar SQL, sería probablemente lo menos frecuente.

¿Vamos bien?

Última edición por Al González fecha: 15-04-2013 a las 21:03:12.
Responder Con Cita
  #22  
Antiguo 15-04-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
sino porque todos los motores SQL debieran admitirlo sin protestar, ¿me ayudan por favor a corroborar o refutar esta última afirmación?
Teoricamente si, porque ese formato encaja con el "locale" de USA (en-US) y el formato de 24h. El problema es el separador. Creo que "/" es mas comun que "-" y otros.

------

PD: Segun http://www.postgresql.org/docs/9.1/s...-datetime.html

Cita:
The output format of the date/time types can be set to one of the four styles ISO 8601, SQL (Ingres), traditional POSTGRES (Unix date format), or German. The default is the ISO format. (The SQL standard requires the use of the ISO 8601 format. The name of the "SQL" output format is a historical accident.) Table 8-14 shows examples of each output style. The output of the date and time types is of course only the date or time part in accordance with the given examples.
Código:
ISO	ISO 8601/SQL standard	1997-12-17 07:37:16-08
SQL	traditional style	12/17/1997 07:37:16.00 PST
POSTGRES	original style	Wed Dec 17 07:37:16 1997 PST
German	regional style	17.12.1997 07:37:16.00 PST
Segun ese doc, parece que si es "/" es considerado el estilo "SQL" y si es "-" el ISO.

Con respecto a probar cada estilo en BD, lo que yo hago es que lo defino con comandos como SET DATEFORMAT o su similar. Cuando el motor no tiene algo asi (ej: FoxPro) uso una funcion (ej: Date(2003,1,1) y en el *peor* de los casos el formato de acuerdo al locale de la BD.

El punto que no deje claro antes y que ahora por fin lo logro articular (y que se desprende del principio de la robustes) es que si la cadena de fecha es una "salida" se puede definir el formato que mejor parezca (ya sea el ISO, si es pa pasar entre programas, y el "SQL" para mostrar a humanos) pero en este caso de uso en particular se envia como una "entrada" y por lo tanto, no se puede garantizar que vaya a funcionar, en *todos* los motores. En los motores principales (Sql Server, Postgres, MySql) va a funcionar (ya chequee los docs).


Osea, en resumen... dejalo asi como lo has pensado..
__________________
El malabarista.
Responder Con Cita
  #23  
Antiguo 20-04-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: 29
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
Acabo de subir la actualización de abril (archivo GHFreebrary_Delphi7_20130419.zip) con los cambios que aquí se trataron. Todo lo concerniente al tema de este hilo quedó resuelto dentro de la unidad GHFRTL.pas. Siéntanse con la libertad de examinarla, aprovecharla y compartir sus opiniones.

Un agradecimiento a beginner01, ElKurgan, mamcx y Casimiro Notevi.

Sigamos avanzando en los otros temas.

Al González.

Última edición por Al González fecha: 27-04-2013 a las 08:07:46.
Responder Con Cita
  #24  
Antiguo 28-04-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: 29
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
Una nota más: Las funciones mencionadas ya se encuentran disponibles y probadas también en el paquete para XE2.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda sobre manejo de fechas francodelphi Conexión con bases de datos 12 27-10-2011 02:22:15
Como definir Funciones Globales destrukthor Varios 4 07-07-2006 15:12:18
Problemas al definir UDF (Funciones en una DLL) pcicom Firebird e Interbase 2 21-06-2006 06:49:15
Definir funciones y procedimientos en FastReport???? burasu Impresión 1 16-05-2005 22:47:37
Sobre actualizaciones de programas y estándar x2 obiwuan Humor 0 06-05-2003 23:04:07


La franja horaria es GMT +2. Ahora son las 22:22:49.


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