IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Lire et écrire champ Integer "trop grand"


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut Lire et écrire champ Integer "trop grand"
    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. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Cherche dans un Zeos un équivalent de AsLargeInt du TField standard de la VCL qui te fournira un Int64
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par Tchitchi13 Voir le message
    Bonjour,
    Il s'agit vraisemblablement d'une date et heure représentées par le nombre de millisecondes depuis le 1er janvier 1970.
    Cela ne seait il pas un champ TimeStamp et donc avec Delphi tu devrais pouvoir le lire avec un AsDateTime
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    J'obtiens une erreur à l'exécution si j'utilise AsDateTime : 'Impossible d'accéder au champ 'xxxxxx' comme type DateTime'.
    En fait, je n'arrive à voir correctement la valeur de ce champ qu'à laide de l'outils 'SQLite Database Browser', mais pas avec Delphi.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Si tu as déclaré un INTEGER, AsDateTime ne pourra pas fonctionner !

    As-tu essayé AsLargeInt comme je le préconisais !

    Vérifie si le champ est détecter comme TLargeintField par transtypage ou teste si DataType est égale ftLargeint
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    AslargeInt n'existe pas (delphi 7).

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Est ce qu'il ne serait pas possible que tu Cast le champs lors de sa récupération avec une requête pour le transformer en TimeStamp ?

    Desoelr je ne connais pas SQLLite

    Mais par exemple en Interbase

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Select Cast (LeChamp as TimeStamp) from LaTable
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    AsLargeInt existe dans mon C++Builder 6 sur un TLargeIntField
    Comme BCB6 est plus vieux que Delphi 7, cela existe forcément et je peux te le dire pour l'avoir utiliser avec MyDac sur MySQL !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      Field: TLargeIntField;
      i : Int64;
    begin
      Field := Table.FieldByName('Champ') as TLargeIntField;
      if Assigned(Field) then
        i := Field.AsLargeInt();
    Faudrait chercher un petit peu plus avant de dire que cela n'existe pas !
    Tu n'as même pas ouvert l'aide et chercher !


    Tu n'as pas plus cherché dans le code de Zeos Lib !
    ZAbstractDataset.pas - L725
    ZDatasetUtils.pas - L1178, la directive VER130BELOW indique qu'à partir de Delphi 6 cela gère le TLargeIntField !

    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Publipostage - Nombre de champs trop grand
    Par smaugy dans le forum Word
    Réponses: 5
    Dernier message: 28/09/2011, 08h28
  2. champs trop grands
    Par rouxfab dans le forum IHM
    Réponses: 7
    Dernier message: 25/04/2008, 15h16
  3. [OS] Lire et écrire sur disquette
    Par trax44 dans le forum Programmation d'OS
    Réponses: 17
    Dernier message: 22/02/2004, 20h45
  4. Surface trop grande
    Par Black_Daimond dans le forum DirectX
    Réponses: 1
    Dernier message: 18/01/2003, 03h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo