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 :

[Interbase/Firebird] Comment récupérer le type du champ ?


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Points : 63
    Points
    63
    Par défaut [Interbase/Firebird] Comment récupérer le type du champ ?
    Salut a tous,

    Je demande de l'aide pour recuperer le type (Integer, Varchar,...) d'un champ en connaissant le nom du champ et le nom de la table. J'utilise Interbase/Firebird comme SGBD.

    Merci pour votre aide

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Il y a la "méthode Delphi" fondée sur le type du TField renvoyé par ton composant de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Matable .FieldByName (MonChamp) is TIntegerField then etc...
    et la "méthode SQL" par recherche dans les tables système :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT RDB$FIELDS.RDB$FIELD_TYPE
    FROM RDB$FIELDS
    JOIN RDB$RELATION_FIELDS
    ON RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME
    WHERE RDB$RELATION_FIELDS.RDB$FIELD_NAME = :MonChamp
    AND RDB$RELATION_FIELDS.RDB$RELATION_NAME = :MaTable
    avec l'inconvénient que ça te renvoie un Integer qu'il faut interpréter, et là je n'ai pas de méthode. On retrouve assez vite l'essentiel (37 = VARCHAR, 8 = INTEGER...), mais si qqn a une méthode magique, je suis preneur.
    Roland

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Autre possibilité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    case Matable.fieldByName('MonChamp').DataType of
     ftinteger: showmessage('Entier');
     ftString: ShowMessage('String');
     // Etc... (tapper ft dans la zone de saisie de delphi puis faire [ctrl]+[Espace] cela affichera la liste des types
    end;
    Modérateur Delphi

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

  4. #4
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Points : 63
    Points
    63
    Par défaut Merci et bravo
    Merci a vous et toutes mes felicitations pour se site qui ne finira pas de m'etonner

    RSC J'avais trouver la liste des types

    * 8 = Integer
    * 10 = Float
    * 12 = Date
    * 13 = Time
    * 14 = Char
    * 35 = TimeStamp
    * 37 = VarChar
    * 261 = Blob

    et je desesperais de trouver comment les renvoyer, je n'arrivais qu'a avoir la liste des fields de la table. Encore merci a vous et portez vous bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer un type bytea ?
    Par ldv dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/11/2006, 20h37
  2. [C# 2.0] Comment récupérer le type de données d'un DataTable ?
    Par dymezac dans le forum Accès aux données
    Réponses: 4
    Dernier message: 23/10/2006, 17h58
  3. Réponses: 2
    Dernier message: 08/10/2006, 11h44
  4. [ODBC] Comment récupérer le nom des champs de table Access
    Par Alexlesilex dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/05/2006, 14h14
  5. [Excel] Comment tester le type de champ ?
    Par natie_49 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/06/2005, 15h17

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