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 :

Firebird : tester l'existence d'une table


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut Firebird : tester l'existence d'une table
    bonjour,

    je débute avec firebird...
    Comment faire pour tester l'existence d'une table dans la base ?

    merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Je ne sais pas si la propriété Exists du BDE fonctionne avec FB !
    C'est bon d'essayer.

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Cette requête renvoie 0 ou 1 avec respectivement l'absence ou la présence de MATABLE dans la BDD.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*)
    from RDB$RELATIONS
    where RDB$RELATION_NAME = 'MATABLE';

    @+ Claudius

  4. #4
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    ok merci je vais essayer ça

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour

    Voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function TableExist(TableName : String): Boolean;
    Begin
     Query.SQL.Clear;
     Query.SQL.Add('SELECT COUNT(*) AS COMBIEN FROM RDB$RELATIONS  WHERE RDB$RELATION_NAME = '+
                    QuotedStr(TableName));
     Query.ExecSQL  ;
     Query.Active:=true;
    if DataSourceQuery.DataSet.FieldByName ('COMBIEN').asinteger > 0 then
                        Result := True
                                                                      else
                        Result := False;
    End;

  6. #6
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut un os..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    fuction IsValidDatabase : boolean;
    begin
      with QValidDatabase.SQL do
      begin
        QValidDatabase.Close;
        Clear;
        Add('SELECT count(*)  ');
        Add('FROM RDB$RELATIONS ');
        Add('WHERE RDB$RELATION_NAME =:MATABLE ');
        QValidDatabase.ParamByName('MATABLE').Text := 'TOTO';
        QValidDatabase.Open;
      end;
      Result := (QValidDatabase.RecordCount <> 0);
    end;
    je n'ai aucune table au nom de TOTO et pourtant
    un point d'arrêt sur le RecordCount me donne 1 !!
    ???

    merci de votre aide

    cantador

  7. #7
    Membre du Club Avatar de delagoutte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Points : 65
    Points
    65
    Par défaut
    ce n'est pas le recordcount qu'il faut regarder mais la valeur renvoyer par le count du select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result  := (QValidDatabase.fields[0].asinteger>0)

  8. #8
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut OK !
    oh la belle toile !

    merci delagoutte

    je fais plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    fuction IsValidDatabase : boolean;
    begin
      with QValidDatabase.SQL do
      begin
        QValidDatabase.Close;
        Clear;
        Add('SELECT count(*) as TOTAL ');
        Add('FROM RDB$RELATIONS ');
        Add('WHERE RDB$RELATION_NAME =:MATABLE ');
        QValidDatabase.ParamByName('MATABLE').Text := 'TOTO';
        QValidDatabase.Open;
      end;
      Result := (QValidDatabase.FieldByName('TOTAL').Value <> 0);
    end;
    @bientôt

  9. #9
    Membre actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 105
    Points : 235
    Points
    235
    Par défaut
    Bonjour,
    Exact Delagoutte, le result boolean sera:
    Result := (QValidDatabase.Fields[0].asinteger <> 0);
    Si tu fais un count(°), tu auras toujours un record avec 0 (pas de table) 1 (une table), je ne vois pas comment çà pourrait être + que 1.
    solilog

  10. #10
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Citation Envoyé par zarbouine Voir le message
    bonjour,

    je débute avec firebird...
    Comment faire pour tester l'existence d'une table dans la base ?

    merci d'avance
    Vous utilisez quelle version de Delphi ? et quels composants d'accès à votre base Firebird ?

Discussions similaires

  1. Tester l'existence d'une table avec une requête
    Par Oluha dans le forum Access
    Réponses: 6
    Dernier message: 29/08/2005, 09h45
  2. Tester l'existence d'une table sous Access
    Par Oluha dans le forum Bases de données
    Réponses: 10
    Dernier message: 29/08/2005, 09h42
  3. tester l existance d une table
    Par mick84m dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/04/2005, 11h24
  4. [JDBC]Tester l'existence d une table
    Par juflata dans le forum JDBC
    Réponses: 7
    Dernier message: 29/06/2004, 15h27
  5. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55

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