Cita:
Empezado por Casimiro Notevi
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?