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 :

[BIGINT dans Firebird] comment les manipuler dans Delphi ?


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut [BIGINT dans Firebird] comment les manipuler dans Delphi ?
    Bonjour,

    (appli CLX sous XP - Delphi6 - Firebird1.5)

    Avec Interbase, j'avais cree des tables avec des cles primaires de type INTEGER qui s'avere trop juste !

    Depuis peu, je suis passe a firebird, avec grand bonheur puisque j'ai trouve les BIGINT (64b)

    Seulement j'ai quelques soucis pour reussir a les manipuler dans Delphi. Comment dois je faire ??

    Merci d'avance.

  2. #2
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut

    Un type entier représente un sous-ensemble de l'ensemble des nombres. Les types entiers génériques sont Integer et Cardinal ; utilisez-les dans la mesure du possible car ils donnent de meilleures performances avec la CPU et le système d'exploitation utilisés. Le tableau suivant spécifie leur étendue et leur format de stockage pour la version actuelle du compilateur Delphi 32 bits.

    Types entiers génériques pour l'implémentation 32 bits de Delphi
    Type Etendue Format
    Integer -2147483648..2147483647 32 bits signé
    Cardinal 0..4294967295 32 bits non signé
    Les types fondamentaux signés sont Shortint, Smallint, Longint, Int64, Byte, Word et Longword.

    Types entiers fondamentaux
    Type Etendue Format
    Shortint -128..127 8 bits signé
    Smallint -32768..32767 16 bits signé
    Longint -2147483648..2147483647 32 bits signé
    Int64 -2^63..2^63-1 64 bits signé
    Byte 0..255 8 bits non signé
    Word 0..65535 16 bits non signé
    Longword 0..4294967295 32 bits non signé
    En général, les opérations arithmétiques sur les entiers renvoient une valeur de type Integer, qui pour l'implémentation actuelle est équivalente au type Longint sur 32 bits. Les opérations ne renvoient une valeur de type Int64 que si elles portent sur un ou plusieurs opérandes Int64. Par exemple, le code suivant donne des résultats incorrects.
    7 fois à terre, 8 fois debout

  3. #3
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Je m'excuse : je n'ai pas ete asser loin dans l'exposition de mon probleme.

    La ou j'ai reellement des soucis, c'est quand je manipule les BIGINT en tant que champ :
    Dans mes controles DBGrid, des sigles de ponctuation ou arithmetique apparraisent au lieu de chiffres (en visu avec IBExpert, tout est correcte !)

    Quand je veux faire une liaison maitre-detail portant sur les BIGINT, j'ai un message d'erreur comme " = is not a BCD ...". Bien la preuve qu'il lit '=' au lieu de 2 !

    pas moyen d'affecter le resultat d'une procedure stockee dans un parametre d'une autre procedure stockee !

    C'est moi qui merdouille, ou il y a vraiment un souci a ce niveau la ?

  4. #4
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    599
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 599
    Points : 2 024
    Points
    2 024
    Par défaut
    Citation Envoyé par kase74
    Je m'excuse : je n'ai pas ete asser loin dans l'exposition de mon probleme.
    Y'a pas de quoi. Ceux qui ont déjà eu le problème savent que s'il y a un type Int64, la propriété MonField.AsInt64 n'existe pas.

    Il existe bien un type TLargeIntField, mais quand on fait
    MonDataSet.FieldByName('monchamp').AsLargeInt
    Le 'AsLargeInt' n'est pas reconnu, car s'il est défini dans TLargeIntField, il n'est pas défini dans la classe de base TField

    Citation Envoyé par kase74
    C'est moi qui merdouille, ou il y a vraiment un souci a ce niveau la ?
    Je pense que les TLargeFieldInt ne sont que partiellement gérés.
    D'ailleurs quand on lit la note d'update de Delphi 7.1, on se rend compte qu'il y a plusieurs pb lié à ce type de données.

    Mais j'en ai particulièrement noté un :

    Citation Envoyé par Borland
    * TFMTBCDField initialise en taille 8 plutôt qu'en taille 4,
    permettant au système d'initialiser la précision à 7 et la
    taille à 8 (Quality Central 5938).
    Dans la mesure où tu as un message d'erreur lié au BCD, peut-être que la 7.1 résoud ton pb (à moins que tu y soit déjà).

    J'ai lu sur un forum que certains arrivaient à s'en tirer en faisant passer le champ comme étant AsString - mais cela n'a pas été probant dans mon cas. (Mais c'était avec MySQL, pas FireBird)
    --
    vanquish

  5. #5
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Merci beaucoup vanquish pour toute ces infos !

    Malheureusement, je ne suis qu'a la version 6 de Delphi, et je doute que l'on me donne les moyens financier de l'updater.
    En tout cas, tes infos me sont precieuses, puisqu'elles vont m'eviter de perdre du temps a chercher LA solution. Maitenant, je vais plutot essayer de "bidouiller" afin d'arriver a mes fins.
    Si c'est le cas, je vous en ferai part ici !

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2012, 10h43
  2. Les winsocks, comment les utiliser dans une application réseau ?
    Par JLDK007 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/04/2009, 12h45
  3. A quoi servent les domaines dans Firebird ?
    Par [ZiP] dans le forum Débuter
    Réponses: 2
    Dernier message: 08/01/2009, 15h56
  4. Réponses: 1
    Dernier message: 30/10/2008, 19h25
  5. Les index Firebird, comment les utiliser dans les IBX?
    Par badilou dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 31/05/2008, 23h02

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