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 :

Comment afficher des données provenant de plusieurs BDDs dans un seul DBGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : août 2012
    Messages : 81
    Points : 54
    Points
    54
    Par défaut Comment afficher des données provenant de plusieurs BDDs dans un seul DBGrid
    Bonsoir à tous,

    J'aimerais afficher des données
    provenant de plusieurs tables,
    situées dans plusieurs bases de données
    dans le même DBGrid (simultanément).

    Donc, je suis convaincu que le meilleur composant serait le ADOQUERY, mais la question à laquelle je ne trouve pas de réponse:
    Comment basculer entre les noms des BDDs sans changer de DBGRID ???
    Vu que le nom de la base de données est indiqué dans le DSN(ODBC)

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 254
    Points : 35 989
    Points
    35 989
    Billets dans le blog
    54
    Par défaut
    Bonjour
    Citation Envoyé par youce90 Voir le message
    Donc, je suis convaincu que le meilleur composant serait le ADOQUERY
    Si vous en êtes convaincu alors il va être difficile que vous premiez d'autres composants en considération ! Et pourtant ...
    Citation Envoyé par youce90 Voir le message
    Mais la question à laquelle je ne trouve pas de réponse:
    Comment basculer entre les noms des BDDs sans changer de DBGRID ???
    Vu que le nom de la base de données est indiqué dans le DSN(ODBC)
    Je ne saurais y répondre.

    En fait il manque dans cette demande deux informations :
    1. le SGBD (en supposant qu'ils soit le même pour toutes les bases de données)
    2. la version de Delphi et par conséquence les composants SGBD disponibles.


    Pourquoi le 1 ? Parce que certains SGBD permettent de faire des reqêtes sur des base de données externes et donc ce que vous demandez n'est qu'une UNION un peu particulière. Pour parler de mon SGBD de prédilection (Firebird) cela passera par une procédure (un exemple ici)
    Pourquoi le 2 ? Parce que Firedac propose un TFDLocalSQL qui permet de faire des liaisons entre différents FDTables ou FDQuery de différentes FDConnexions (on est loin du ODBC dont vous êtes convaincu !)
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : août 2012
    Messages : 81
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Si vous en êtes convaincu alors il va être difficile que vous premiez d'autres composants en considération !
    Je suis convaincu selon mes modestes connaissances
    Par contre, à la présence des experts, je suis ouvert à toute autre proposition qui aura par conséquent, l'enrichissement de mes connaissances,

    En fait il manque dans cette demande deux informations :
    1. Le SGBD (en supposant qu'ils soit le même pour toutes les bases de données)
    IBM Informix 9.40,
    Et oui, c'est le même SGBD pour toutes les BDDs.

    2. la version de Delphi et par conséquence les composants SGBD disponibles.
    Delphi 10.4

    Pourquoi le 1 ? Parce que certains SGBD permettent de faire des reqêtes sur des base de données externes et donc ce que vous demandez n'est qu'une UNION un peu particulière.
    Effectivement, c'est le cas pour INFORMIX,
    Il fallait que je mentionne que j'ai pu exécuter une requête UNION,
    Pour ce faire, il suffit juste de faire référence à la BDD comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select * from matable1
    Union
    Select * from maBase2:matable2
    Pourquoi le 2 ? Parce que Firedac propose un TFDLocalSQL qui permet de faire des liaisons entre différents FDTables ou FDQuery de différentes FDConnexions (on est loin du ODBC dont vous êtes convaincu !)
    Je ne suis pas familier avec Firedac, et voilà donc une autre occasion pour enrichir mes connaissances, à la présence d'un expert comme vous.
    Je vais jeter un coup d'œil sur Firedac et FDQuery.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    1 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 1 070
    Points : 3 751
    Points
    3 751
    Par défaut
    Tu fais des requêtes spécifiques sur chacune des bases de données, tu récupères les données, les réorganises et stockes par exemple dans un ClientDataset et ensuite, tu affiches les données du ClientDataset dans ton DBGrid ou un autre grid du style Stringgrid

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 269
    Points : 26 775
    Points
    26 775
    Par défaut
    c'est un peu douteux tout cela

    sans trop y réfléchir j'imagine deux solutions

    1) des champs Lookup qui vont piocher dans la seconde base...je n'ai pas testé mais ça devrait passer

    2) un service intermédiaire de type DataSnap qui va publier les deux bases sous la même API
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    3 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 3 156
    Points : 5 283
    Points
    5 283
    Par défaut
    salut

    si c'est un seul et même serveur utilisant des bases multiple
    il n'y a aucun problème il suffit dans ta requête sql de préfixer ta base avant la déclaration de ta table
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SELECT TB1.CHP1 As B1T1C1 ,TB1.CHP2 As B1T1C2,TB2 .CHP1 As B2T1C1 ,TB2.CHP2 As B2T1C2
      from BASE1:TBL1  TB1, BASE2:TBL1 TB2 
      where TB1.INDEX =  TB2.INDEX
    si par-contre c'est plusieurs serveur il va falloir passer par une étape intermédiaire afin
    de récupérer les éléments des différents serveur et les comparer
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : août 2012
    Messages : 81
    Points : 54
    Points
    54
    Par défaut
    Rebonjour tous le monde,

    je m'excuse, j'ai pas pu répondre avant maintenant,
    j'étais tellement occupé, et dès que j'ai eu l'occasion, j'ai commencé à lire sur les composants FireDAC.
    et après plusieurs articles, et plusieurs essais: TClientDataSet, TFDLocalSQL...etc,
    je me suis rendu compte qu'en fait c'est beaucoup plus simple que je l'imaginais:
    une simple combinaison TFDConnection + TFDQuery (contenant une requête UNION) suffit pour faire le travail,
    chose que j'ai déjà essayé avec ADOConnection + ADOQuery avec exactement le même DSN et la même requête, mais ça donnait des messages d'erreur.

    Voilà donc, merci pour vos réponses !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2007, 10h40
  2. Réponses: 2
    Dernier message: 21/02/2007, 12h22
  3. Réponses: 17
    Dernier message: 22/09/2006, 18h34
  4. comment afficher des données Access sur Word ??
    Par merlubreizh dans le forum Access
    Réponses: 7
    Dernier message: 16/09/2005, 16h07
  5. comment afficher des données Access sur Excel ??
    Par merlubreizh dans le forum Access
    Réponses: 9
    Dernier message: 14/09/2005, 15h38

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