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 retourner les informations de 2 tables dans une grille ayant 2 DataModules ?


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut Comment retourner les informations de 2 tables dans une grille ayant 2 DataModules ?
    Bonjour,
    J'aimerais pouvoir retourner des infos qui sont stockés dans 2 tables ET aussi deux Datamodules different.
    Je travaille sous Oracle avec la version delphi6.

    Tout d'abord j'execute ma requete sur mon premier datamodule, je l'ouvre, et la je voudrais garder en memoire mes données recu afin que lorsque ma deuxieme requete sur mon deuxieme datamodule est ouvert, je puisse retourner les 2 "Groupes" de données.

    Faut il travailler avec un tableau ???

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
      MDIChild.Query_Produits.close;
             MDIChild.Query_Produits.DatabaseName := 'STOCKEXT';
             MDIChild.DataSource_Produits.OnDataChange := nil;
     
      if UnitVerificationMaia.VerificationDroitsModuleApp('CONTROL_GESTION') then
        MDIChild.Query_Produits.SQL.Add('SELECT DISTINCT PRODUITS.*,(QTE_STOCK * PRIX_UNITAIRE)AS TOTAL_PRIX FROM PRODUITS,PRODUITS_HISTORIQUE')
      else
        MDIChild.Query_Produits.SQL.Add('SELECT DISTINCT PRODUITS.* FROM PRODUITS,PRODUITS_HISTORIQUE');
     
      MDIChild.Query_Produits.SQL.Add('WHERE PRODUITS.ID_LIGNE = PRODUITS_HISTORIQUE.ID_LIGNE ');
     
     
      if ComboBox_Secteur.Text <> '' then
      MDIChild.Query_Produits.SQL.Add('AND SECTEUR = '+QUotedSTr(ComboBox_Secteur.Text));
     
      MDIChild.Query_Produits.SQL.Add('ORDER BY DESIGNATION');
     
       MDIChild.Query_Produits.Open;
       nombre_ligne :=   MDIChild.Query_Produits.recordCount;
     
     
      //deuxieme datamodule
     
      MDIChild.Query_Produits.close;
      MDIChild.Query_Produits.DatabaseName := 'V6';
      MDIChild.DataSource_Produits.OnDataChange := nil;
     
      MDIChild.Query_Produits.SQL.Clear;
      if UnitVerificationMaia.VerificationDroitsModuleApp('CONTROL_GESTION') then
      begin
      MDIChild.Query_Produits.SQL.Add('select RACINE_PDT||FINIT_PDT as CODE_PRODUIT,'''' as NUM_COMMANDE');
      MDIChild.Query_Produits.SQL.Add(',DESIGN_1||Design_2 as DESIGNATION,'''' as DERNIER_MVT');
      MDIChild.Query_Produits.SQL.Add(',(STK_DEB_PER+CUMUL_ENT_PER-CUMUL_SORT_PER) as QTE_STOCK');
      MDIChild.Query_Produits.SQL.Add(',LIEU_STOCKAGE,'''' ID_LIGNE,PRIX_INVENTAIRE as Prix_unitaire,(STK_DEB_PER+CUMUL_ENT_PER-CUMUL_SORT_PER)*PRIX_INVENTAIRE as TOTAL_PRIX,'''' as LIEU_K7,''APPLI_K7'' AS SECTEUR');
      end
       else
       begin
       MDIChild.Query_Produits.SQL.Add('select RACINE_PDT||FINIT_PDT as CODE_PRODUIT,'''' as NUM_COMMANDE');
       MDIChild.Query_Produits.SQL.Add(',DESIGN_1||Design_2 as DESIGNATION,'''' as DERNIER_MVT');
       MDIChild.Query_Produits.SQL.Add(',(STK_DEB_PER+CUMUL_ENT_PER-CUMUL_SORT_PER) as QTE_STOCK');
       MDIChild.Query_Produits.SQL.Add(',LIEU_STOCKAGE,'''' ID_LIGNE,'''' as LIEU_K7,''APPLI_K7'' AS SECTEUR');
       end;
       MDIChild.Query_Produits.SQL.Add('FROM PRODUIT');
       MDIChild.Query_Produits.SQL.Add('where LIEU_STOCKAGE >= 4000 and LIEU_STOCKAGE <= 9500');
     
             if (Edit_Designation.Text <> '') then
        MDIChild.Query_Produits.SQL.Add('AND DESIGN_1||Design_2 like '+QuotedStr('%'+Edit_Designation.Text+'%'));
     
     
      MDIChild.Query_Produits.SQL.Add('ORDER BY DESIGNATION');
     
      MDIChild.Query_Produits.Open;
    En espérant avoir expliqué au mieux
    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Perso je ne comprends pas bien ce que tu veux ...

  3. #3
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Ah, je me disais bien que mon explication etait douteuse !!!

    Je voudrais que sur le meme StringGrid je puisse faire afficher 2 resultat de requete sui sont basée chacune d'elle sur un datamodule différent.

    Chaque resultat de requete retourne plusieurs ligne.

    En fait c'est une jointure de 2 resultat de requete posé sur un meme grid.

    Faut il que je stocke mes resultat dans un tableau afin de le ressortir dans le Grid apres??

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 7 002
    Points
    7 002
    Par défaut
    Pourquoi ne pas faire la jointure dans une seule Query ?
    Après ca va aller tout seul ...

    :
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Si j'ai bien compris, tu pourrais boucler dans ton premier dataset et afficher ses données dans ton stringgrid, puis boucler dans ton second dataset et afficher ses données dans ton stringgrid à la suite des autres données ...

    C'est ca ???

  6. #6
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Oui c'est cela PERO.

    Lung, est-ce possible de faire une jointure entre 2 tables qui n'ont pas le meme datamodule?

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 7 002
    Points
    7 002
    Par défaut
    Citation Envoyé par EssaiEncore
    Lung, est-ce possible de faire une jointure entre 2 tables qui n'ont pas le meme datamodule?
    Peut-être avec un union.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Pour ma part la réponse est dans ma question. Il suffit de faire des boucles dans les datasets et d'alimenter le stringgrid.

    Pour ce qui est de Lung, il se demandait pourquoi, au lieu d'avoir 2 tables, tu ne ferais pas 1 requête qui "joindrait le résultat de tes 2 tables" ... ce qui me parait plus normal aussi . Ensuite, tu n'aurais qu'à relier ton query à un DBGrid (affichage immédiat), ou alors tu n'aurais qu'à boucler dans ton query pour afficher les données dans le stringgrid.

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 7 002
    Points
    7 002
    Par défaut
    Citation Envoyé par Pero
    ce qui me parait plus normal aussi .
    ... et plus simple et plus rapide.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    EssaiEncore a dit:

    Lung, est-ce possible de faire une jointure entre 2 tables qui n'ont pas le meme datamodule?
    Essaie d'employer les bons termes. Faire une jointure entre tables se fait via une requête SQL. Cela n'a rien à avoir avec un datamodule qui n'est qu'un conteneur pour composants non-visuels.

    Tu peux très bien avoir 50 tables sur un seul datamodule, comme tu peux avoir un datamodule par table. Cela dépend de l'architecture de ton application, et du regroupement logique des composants.

    En résumé, une jointure n'a rien à avoir avec l'endroit où se trouvent les composants Delphi (tables, query, ...).

  11. #11
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Points : 122
    Points
    122
    Par défaut
    EssaiEncore doit avoir ses raisons pour vouloir utiliser 2 requêtes différentes sur la même StringGrid...

    Donc, pourquoi ne pas passer tout bêtement par une table intermédiaire (temporaire) ?

    Tes 2 query l'alimentent séparément et tu construis ta StringGrid à partir de cette table.

Discussions similaires

  1. [Débutant] comment conserver les informations d'un utilisateur dans une variable?
    Par beaudelaire dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/12/2011, 06h31
  2. [MySQL] comment insérer les informations d'un formulaire dans une table
    Par eljed dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/05/2011, 12h01
  3. comment retourner les donnees de la table liee?
    Par speed034 dans le forum Ruby
    Réponses: 2
    Dernier message: 15/09/2010, 02h02
  4. Réponses: 4
    Dernier message: 22/01/2008, 14h17
  5. Réponses: 4
    Dernier message: 21/06/2007, 13h33

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