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 :

Probleme de jointure et affichage dans un dbgrid pour plus de 2 tables sous sql 'para


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Probleme de jointure et affichage dans un dbgrid pour plus de 2 tables sous sql 'para
    bonjour:
    j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    query1.active:=false;
    query1.sql.add('select *')
    query1.sql.add('from enseignant inner join departement on enseignant.code_depa=departement.code_depa,
    enseignant inner join absence on enseignant.code_ens=absence.code_ens,
    occupe inner join enseignant on enseignant.code_ens=occupe.code_ens,
    occupe inner join poste on occupe.code_post=poste.code_post');
    query1.sql.add('where code_ens = ''250''');
    query1.sql.exec;
    query1.active:=true;
    Mon probleme

    1-Est que lorsque j'execute cette requette,mon dbgrid affiche un resultat bésard (il prend tous les champs ,si les tables contiennent 4 lignes il m'affiche 4*le nombre de table !?).

    2-Je veux afficher par programmation dans le sql les titres des champs dans mon dbgrid a ma façon pas comme ils sont decrits dans les table
    ex:dans la table j'ai le champ code_ens mais dans le dbgrid je veux avoir le titre Code Enseignant.


    3-Je veux que lorsque je clik sur la colonne nom_ens de Dbgrid,une deuxime fiche s'affiche avec caption(titre de la fiche ):Modificatioin de l'enseignant ???'le nom de celui clicke sur le dbgrid de fiche1??? .



    Cest vraiment gentil d'aider un debutant en delphi,MERCI.

  2. #2
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Utilise les ressources d'aides de DELPHI et du BDE pour trouver des solutions à vos problèmes.
    Utilise aussi l'Explorateur SQL fourni avec Delphi pour faire des essais et trouver le meilleur moyen d'optmiser votre requête.

    1er problème : Trop de jointures entre trops de tables avec récupération de trops de champs !
    Il n'est clair ce que tu veut récupérer avec cette requête.

    2eme problème, il suffit de faire suivre le nom du champ dans la table par votre identificateur.
    Exp.: SELECT code_ens Code_Enseignant
    FROM .../... suite de la requête.

    3eme problème : Crée dans l'évenement "OnTitleClick" du DBGrid une fiche pour faire vos modifications.
    ....................................................................
    Aidez-vous... Dieu vous aideras et nous aussi..
    ....................................................................

  3. #3
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Est-ce que cette requête ne marcherait pas mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select * from enseignant, departement, absence, poste   
    where enseignant.code_depa=departement.code_depa, 
    and enseignant.code_ens=absence.code_ens,  
    and enseignant.code_ens=occupe.code_ens,
    and occupe.code_post=poste.code_post 
    and code_ens = '250'

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Pour la jointure!?
    le probleme est que la requete me fait le produit cartisien avec tous les champs;
    j'ai entendu parle de RIGHTJOIN et LEFTJOIN aulieu de INNERJOIN est ce que ça existe?etcomment l'utiliser?

  5. #5
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Citation Envoyé par saada1978
    j'ai entendu parle de RIGHTJOIN et LEFTJOIN aulieu de INNERJOIN est ce que ça existe?etcomment l'utiliser?
    http://sql.developpez.com/sqlaz/jointures/
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  6. #6
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    (Ceci est valable pour SQL Server)
    Si par exemple tu veux ne sortir que la liste des enseignants alors ta requête doit avoir la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select distinct enseignant.* from enseignant, departement, absence, poste   
    where enseignant.code_depa=departement.code_depa, 
    and enseignant.code_ens=absence.code_ens,  
    and enseignant.code_ens=occupe.code_ens,
    and occupe.code_post=poste.code_post 
    and code_ens = '250'

Discussions similaires

  1. Affichage dans une DBGrid
    Par CharleLéo dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/06/2008, 17h10
  2. Ordre d'affichage dans un DBGrid
    Par grandvalet dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/05/2008, 15h12
  3. affichage dans une DBGrid
    Par socooooool dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/06/2006, 16h11
  4. Problème d'affichage dans la DBGrid
    Par Xjoker dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/03/2006, 09h17
  5. [XSLT] Affichage dans 2 colonnes ou plus ?
    Par stebar dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 05/08/2004, 09h07

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