Lire et écrire champ Integer "trop grand"

tchitchifr Messages postés 2 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 13 janvier 2012 - 12 janv. 2012 à 17:54
tchitchifr Messages postés 2 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 13 janvier 2012 - 13 janv. 2012 à 21:54
Bonjour,
Je suis bloqué sur un problème avec une base de données SQLite.
Cette base contient (entre autre) une table avec un champ de type INTEGER (au sens SQL) dont les enregistrements contiennent des valeurs du type '1326326400000'.
Il s'agit vraisemblablement d'une date et heure représentées par le nombre de millisecondes depuis le 1er janvier 1970.

J'utilise les composants Zeos sous Delphi7 pour gérer cette base de données.

Malheureusement, La valeur contenue dans le champ dépasse l'integer au sens Delphi et donc Delphi me renvoi '0'. Même si je tente de récupérer la valeur du champ dans un int64, c'est toujours 0 qui m'est renvoyé car en interne, tout est basé sur le type Delphi integer.
Je ne sais pas comment récupérer vraiment la valeur et la ré-écrire ensuite. JE SUIS BLOQUE !!

Si quelqu'un peut me débloquer, ce serait super !!!
Merci

2 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 2
13 janv. 2012 à 21:48
Bonsoir

Pour récupérer le date/time au format unix, il faut utiliser un int64. Attention surtout à la definition du type sous MySQL (un entier doit être défini en tant qu'entier signé pour être reconnu comme un int64).

N.B. Dans l'unité DateUtils, il y a la fonction UnixToDateTime qui te permettra de convertir la valeur lue en TDatetime.

P.S. Je n'utilise pas les composants Zeos, donc je ne peux pas t'en dire plus.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
tchitchifr Messages postés 2 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 13 janvier 2012
13 janv. 2012 à 21:54
Merci pour ta réponse, mais j'ai fini par abandonner ces composants.
En effet, en regardant le code avec lequel sont constitué ces composant, je découvre que les valeurs sont stockées dans des types Integer et non des int64.
Il me parait donc impossible de récupérer une valeur du type de celle que je dois gérer avec ces composants.
Merci
0