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

SQL Firebird Discussion :

Récupérer des lignes sur plusieurs bases de données


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut Récupérer des lignes sur plusieurs bases de données
    Bonjour à tous,
    J'ai 5 bases de données distinctes, sauf que possédant une table avec le même format, et je voudrais récupérer les lignes de la table commune des 5 bases de données dans la même requête.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 707
    Points : 34 290
    Points
    34 290
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Quelques fois je me demande si vous faites des efforts avant de poser vos questions, en tout cas pas trop quant aux détails !
    Votre post précédent traitait presque du même sujet ou, à tout le moins contient le même principe : l'utilisation de EXECUTE STATEMENT et de ON EXTERNAL, je vous avais même fourni un lien sur la documentation. Une seule chose différe vous devez utiliser des SELECT au lieu de UPDATE il vous faut simplement lire le petit chapitre Any number of data rows returned de la documentation

    donc dans une procédure cela se ferait ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FOR SELECT unchamp FROM TableCommune INTO :champ do suspend;
    FOR EXECUTE STATEMENT 'SELECT unchamp FROM TABLECOMMUNE' ON EXTERNAL 'base1' INTO :champ DO SUSPEND;
    FOR EXECUTE STATEMENT 'SELECT unchamp FROM TABLECOMMUNE' ON EXTERNAL 'base2' INTO :champ DO SUSPEND;
    FOR EXECUTE STATEMENT 'SELECT unchamp FROM TABLECOMMUNE' ON EXTERNAL 'base3' INTO :champ DO SUSPEND;
    ....
    vous noterez que je n'ai même pas eu besoin d'indiquer les username et password, s'ils ne sont pas indiqués ce sont les username et password de la base de données contenant la procédure qui sont utilisés. (et oui, ça aussi c'est écrit dans la documentation)
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Le principe je le comprend, mais la mise en oeuvre là j'y rrive pas. Pr contre dans votre proposition que représente "table commune"?,parce que moi je veut récupérer le résultat juste pour consultation.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 707
    Points : 34 290
    Points
    34 290
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par chekkal Voir le message
    Pr contre dans votre proposition que représente "table commune"?
    Cela correspond à votre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    une table avec le même format
    vous connaissez le principe "Garbage In Garbage Out" ? Vous auriez indiqué un nom de table et ses colonnes vous ariez eu quelque chose de plus explicite
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Mon but est de récupérer le résultat en mémoire pour une simple consultation, et non pas pour le mettre dans une table

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 707
    Points : 34 290
    Points
    34 290
    Billets dans le blog
    52
    Par défaut
    non pas pour le mettre dans une table
    Nulle part, je n'ai écrit qu'il y avait d'autres tables ou même suggéré l'utilisation d'autres tables que celles impliquées

    Qu'est-ce que vous ne comprenez pas dans le fait que :
    1- vous devez passer par une procédure
    2- que si vous ne donnez pas la structure de votre table vous n'aurez pas d'autre code de ma part que celui fourni.
    3- que vous devez poser des questions précises (description de tables, nom/alias des bases) pour avoir des réponses précises
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    voila, la structure de la table
    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
    16
    17
    CREATE TABLE BOR
    (
      MOI Integer NOT NULL,
      ORD Integer NOT NULL,
      COD Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      BRU Numeric(14,2),
      EXE Numeric(14,2),
      IMP Numeric(14,2),
      TAU Numeric(14,2),
      NET Numeric(14,2),
      BRUA Numeric(14,2),
      TAUA Numeric(14,2),
      IMPA Numeric(14,2),
      DESA Varchar(150) CHARACTER SET ISO8859_1,
      PRIMARY KEY (MOI,ORD)
    );

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 707
    Points : 34 290
    Points
    34 290
    Billets dans le blog
    52
    Par défaut
    Je constate quand même que vous ne faites pas beaucoup d'efforts !

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    SET TERM !;
    CREATE PROCEDURE BORTOUT 
    RETURNS
    (
      MOI Integer NOT NULL,
      ORD Integer NOT NULL,
      COD Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      BRU Numeric(14,2),
      EXE Numeric(14,2),
      IMP Numeric(14,2),
      TAU Numeric(14,2),
      NET Numeric(14,2),
      BRUA Numeric(14,2),
      TAUA Numeric(14,2),
      IMPA Numeric(14,2),
      DESA Varchar(150) CHARACTER SET ISO8859_1
    )
    AS BEGIN
     FOR SELECT * FROM BOR INTO  :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     FOR EXECUTE STATEMENT 'SELECT * FROM BOR'  ON EXTERNAL 'base1' INTO :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     -- etc pour les autres bases
    END!
    SET TERM ;!
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    merci, pour ta réponse , je vai faire un test et je vous tiens au courant.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    Bonjour,
    Votre code marche bien merci,j'ai dû seulement modifier on intégrant les colonnes parce qu' il signe une erreur sur les colonnes
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    SET TERM !;
    CREATE PROCEDURE BORTOUT 
    RETURNS
    (
      MOI Integer NOT NULL,
      ORD Integer NOT NULL,
      COD Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      BRU Numeric(14,2),
      EXE Numeric(14,2),
      IMP Numeric(14,2),
      TAU Numeric(14,2),
      NET Numeric(14,2),
      BRUA Numeric(14,2),
      TAUA Numeric(14,2),
      IMPA Numeric(14,2),
      DESA Varchar(150) CHARACTER SET ISO8859_1
    )
    AS BEGIN
     FOR SELECT MOI,ORD,COD,DES,BRU,EXE,IMP,TAU,NET,BRUA,TAUA,IMPA,DESA FROM BOR INTO  :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     FOR EXECUTE STATEMENT 'SELECT  MOI,ORD,COD,DES,BRU,EXE,IMP,TAU,NET,BRUA,TAUA,IMPA,DESA FROM BOR'  ON EXTERNAL 'base1' INTO :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     -- etc pour les autres bases
    END!
    SET TERM ;!
    j'ai encore une question, dans le cas ou le nombre de base de données externes à joindre est variable, comment les intégrer, j'ai pensé les ajouter comme parmêtre de la procedure
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    SET TERM !;
    CREATE PROCEDURE BORTOUT 
    (table[],nbrrtable)
    RETURNS
    (
      MOI Integer NOT NULL,
      ORD Integer NOT NULL,
      COD Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      BRU Numeric(14,2),
      EXE Numeric(14,2),
      IMP Numeric(14,2),
      TAU Numeric(14,2),
      NET Numeric(14,2),
      BRUA Numeric(14,2),
      TAUA Numeric(14,2),
      IMPA Numeric(14,2),
      DESA Varchar(150) CHARACTER SET ISO8859_1
    )
    AS BEGIN
     FOR SELECT MOI,ORD,COD,DES,BRU,EXE,IMP,TAU,NET,BRUA,TAUA,IMPA,DESA FROM BOR INTO  :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     FOR EXECUTE STATEMENT 'SELECT  MOI,ORD,COD,DES,BRU,EXE,IMP,TAU,NET,BRUA,TAUA,IMPA,DESA FROM BOR'  ON EXTERNAL 'base1' INTO :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     -- etc pour les autres bases
    END!
    SET TERM ;!
    mais comment faire pour passer tout le tableau dans la procédure.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 707
    Points : 34 290
    Points
    34 290
    Billets dans le blog
    52
    Par défaut
    Bonjour,
    Citation Envoyé par chekkal Voir le message
    Votre code marche bien
    Je ne peux passer à côté de cette blague, un code ne marche pas car il n'a ni jambes ni pattes au mieux il fonctionne

    Citation Envoyé par chekkal Voir le message
    j'ai dû seulement modifier on intégrant les colonnes parce qu' il signe une erreur sur les colonnes
    Je le savais pertinement. J'ai toujours écrit qu'il fallait éviter la syntaxe SELECT * FROM, il fallait bien que je ne vous mâche pas tout le travail.

    Citation Envoyé par chekkal Voir le message
    j'ai encore une question:, dans le cas ou le nombre de base de données externes à joindre est variable
    je m'y attendais.

    Citation Envoyé par chekkal Voir le message
    j'ai pensé les ajouter comme paramètre de la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE PROCEDURE BORTOUT 
    (table[],nbrrtable)
    à mon avis vous ne vous êtes pas trop foulé puisque vous n'avez même pas su déclarer un tableau

    Citation Envoyé par chekkal Voir le message
    mais comment faire pour passer tout le tableau dans la procédure.
    Bien que Firebird ait un type de données de tableau, sa prise en charge est rudimentaire et l'utilisation de tableaux n'est généralement pas recommandée. Je ne suis même pas sûr qu'il soit possible de faire ce genre de chose toutefois vous pouvez toujours vous inspiré de ceci.
    AMHA Il faut oublier, mais je serait curieux de voir une utilisation de ce type.

    Alternative facile, utiliser un varchar comme paramètre, qui contiendra les divers noms ou alias de bases de données séparées par un caractère (la virgule par exemple)
    en ce cas une boucle et les fonctions POSITION et SUBSTRING seront vos alliées. Je vous laisse travailler dessus faut pas exagéré quand même !

    Alternative rusée, l'utilisation d'une GTT (table temporaire globale) qui permettrait de fournir les noms ou alias de bases mais aussi au besoin utilisateur, mot de passe, role. Bref toutes les informations nécessaires à la partie ON EXTERNAL.

    Création de la GTT à ne faire qu'une seule fois dans la base contenant la procédure BORTOUT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE GLOBAL TEMPORARY TABLE MESBASES 
    (
    Base VARCHAR(255) NOT NULL,  -- peut être agrandie, peut contenir toute forme de chaine de connexion valide   Server</port>:aliasname,C:\database\myData.fdb; etc ...
    Utilisateur VARCHAR(10),
    MDP VARCHAR(7),
    ROLE VARCHAR(10) 
    )
    ON COMMIT PRESERVE ROWS;   -- en ce cas attention à gérer la suppression des lignes entre transactions
    Une fois ceci accompli la procedure BORTOUT est à modifier ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    AS 
    DECLARE VARIABLE B VARCHAR(255); -- ou plus
    DECLARE VARIABLE U VARCHAR(10);
    DECLARE VARIABLE P VARCHAR(7);
    BEGIN
     FOR SELECT MOI,ORD,COD,DES,BRU,EXE,IMP,TAU,NET,BRUA,TAUA,IMPA,DESA FROM BOR INTO  :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     FOR SELECT BASE,Utilisateur,MDP FROM MESBASES INTO :B,:U,:P DO  
       BEGIN
        FOR EXECUTE STATEMENT 'SELECT  MOI,ORD,COD,DES,BRU,EXE,IMP,TAU,NET,BRUA,TAUA,IMPA,DESA FROM BOR'  ON EXTERNAL :B -- ajouter USER :U PASSWORD :P au besoin
             INTO :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
       END
     DELETE FROM MESBASES; -- précaution 
    END!
    Utilisation pour un serveur, toutes les BDD ayant le même USER/PASSWORD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO MESBASE(base) VALUES ('base1');
    INSERT INTO MESBASE(base) VALUES ('base2');
    INSERT INTO MESBASE(base) VALUES ('base3');
    SELECT * FROM BORTOUT;
    N.B. une gestion des transactions (voir SET TRANSACTION, IN AUTONOMUS TRANSACTION) permettrait d'utiliser ON COMMIT DELETE ROWS; et éviter ce DELETE FROM MESBASES; inélégant
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    j'ai modifier comme ceci, mais j'ai aucun résultat
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    ET TERM !;
    CREATE PROCEDURE BORTOUT
    (tables varchar(500),cheminbase varchar(500),NBR Smallint) 
    RETURNS
    (
      MOI Integer NOT NULL,
      ORD Integer NOT NULL,
      COD Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      BRU Numeric(14,2),
      EXE Numeric(14,2),
      IMP Numeric(14,2),
      TAU Numeric(14,2),
      NET Numeric(14,2),
      BRUA Numeric(14,2),
      TAUA Numeric(14,2),
      IMPA Numeric(14,2),
      DESA Varchar(150) CHARACTER SET ISO8859_1
    )
     
    AS 
    declare variable i smallint;
    declare variable j smallint;
    declare variable tab Varchar(8);
    BEGIN
    i=1;j=1;
     
     FOR SELECT * FROM BOR INTO  :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
     
    while (i<nbr) do
     begin
          tab=substring(tables from :j for 8); 
          FOR EXECUTE STATEMENT 'SELECT * FROM BOR'  ON EXTERNAL cheminbase||tab INTO :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
         i=i+1;j=j+8; 
         suspend;
     end

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 707
    Points : 34 290
    Points
    34 290
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je constate que vous avez choisi l'alternative facile, en encore plus simple (nom de bases de longueur fixe, indication du nombre)

    Citation Envoyé par chekkal Voir le message
    j'ai modifié comme ceci, mais j'ai aucun résultat
    Il manque des : et un suspend en trop, de plus j'ai l'impression que Tables est un mot réservé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (i<nbr) do
     begin
          tab=substring(tables from :j for 8); 
          FOR EXECUTE STATEMENT 'SELECT * FROM BOR'  ON EXTERNAL :cheminbase||:tab INTO :MOI,:ORD,:COD,:DES,:BRU,:EXE,:IMP,:TAU,:NET,:BRUA,:TAUA,:IMPA,:DESA DO SUSPEND;
         i=i+1;j=j+8; 
         suspend;
     end
    reste à savoir également quelle valeurs vous avez mis comme paramètres. Avez vous écrit une petite procedure comme debug pour vérifier que vous avez bien traiter les paramètres ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 842
    Points : 87
    Points
    87
    Par défaut
    ça marche merci.

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

Discussions similaires

  1. Faire des requêtes sur plusieurs bases de données
    Par nandy.c dans le forum Outils de restitution et d'analyse
    Réponses: 15
    Dernier message: 13/06/2013, 18h25
  2. [PDO] Requêtes sur plusieurs bases de données
    Par nabab dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/08/2007, 08h11
  3. requete sur plusieurs bases de données
    Par bankette dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/06/2007, 14h06
  4. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57
  5. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02

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