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 :

Liaison des bandes avec Qreport


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Par défaut Liaison des bandes avec Qreport
    Bonjour,

    Je suis dans une impasse depuis quelques jours à propos d'un report et de 3 tables à mettre en liaison.

    Voici les tables:
    Personnes (Id_pers, Nom, Prénom, Id_voiture)
    Voitures (Id_voiture, marque, modele, Id_caracteristique)
    Caracteristiques (Id_caracteristique, libelle)

    Ces trois sont lièes avec leurs Id qui sont représentés dans chaque table.

    Ce que je souhaite faire c'est un affichage de ce type:
    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
     
    Personne           Voiture              Caracteristique
    ----------------------------------------------------------------
    Pers1                                                              Bande 1
    ................................................................           
                       Voit1                                           Bande 2
    ................................................................
                                            Caract1                    Bande 3 
                                            Caract2
                                            Caract3  
    ...............................................................
                       Voit2                                           Bande 2
    ...............................................................
                                            Caract2                    Bande 3
    ...............................................................
    Pers2                                                              Bande 1
    ................................................................
                       Voit3                                           Bande 2
    ................................................................
                                            Caract1                    Bande 3
                                            Caract3
    ................................................................
    Pers3                                                              Bande 1 
    ................................................................
                       Voit4                                           Bande 2 
    ................................................................
                                            Caract2                    Bande 3
                                            Caract3
    ................................................................
    etc etc...

    J'aurai pu le faire le faire sous forme de tableau simple mais ce n'est pas trop ce que je veux car cela surchargerai mon report et ce n'est pas beau à voir.

    Je me suis donc penché sur la question de 'comment on fait çà?' et j'ai eu quelques réponses (merci à ceux qui m'ont répondu) mais malheureusement je n'étais peut être pas dans le bon topic et donc mon message est en train de sombrer aux oubliettes.

    Les 3 bandes que j'ai décrit sont des QRSubDetails, j'ai donc configuré comme on me l'a dit, à savoir:

    QRSubDetail1 --> Rien à configurer si ce n'est qu'elle est liée au ClientDataSet de la table personne personne (DataSet=ClientDataSetPers).

    QRSubDetail2 --> Liée au QRSubDetail1 (Master=QRSubDetail1) et elle même liée au ClientDataSet de la table voiture (DataSet=ClientDataSetVoit).

    QRSubDetail3 --> Liée au QRSubDetail2 (Master=QRSubDetail2) et elle même liée au ClientDataSet de la table caracteristique (DataSet=ClientDataSetCaract).

    Mais voilà c'est tout ce que j'ai fait mais malheureusement le report me liste toutes les données de toutes les tables sans pouvoir me faire un lien entre ces derniers.

    Je précise que pour mes requêtes j'ai fait seulement un 'select * from...' sans aucune condition car on me dit que les liens se feront avec QReport lors de la création de la feuille.

    Faut-il un datasource pour lier ces ClientDataSets et si oui comment fait-on car en essayant de le faire j'ai un super message d'erreur de type 'Catastrofic Failure'?

    Merci pour votre réponse.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    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 491
    Par défaut
    salut

    Peut tu faire une requette te permettant de recuperer
    tes infos
    si oui
    utilise les bandes qrgroup elle sont faites pour cela

    d'apres ton schemas tu aura un truc du genre
    ------------
    QrHeadGrpGene => Expression = NUMETAT
    ------------
    QrHeadGrp1 Pers1 => Expression = PERSONNE
    ----------
    QrHeadGrp2 Voit? => Expression = VOITURE
    ----------
    QrDetail Caract?
    --------
    QrFootGrp2 // Ici tu peut mettre des sous totaux
    --------
    QrFootGrp1 // Ici tu peut mettre des sous totaux
    --------
    QrFootGrpGene // Ici tu peut mettre des totaux
    --------
    @+ Phil

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    je crois que tu n'as pas tout suivi sur le post http://www.developpez.net/forums/sho...d.php?t=428522

    Citation Envoyé par newby57
    Je précise que pour mes requêtes j'ai fait seulement un 'select * from...' sans aucune condition car on me dit que les liens se feront avec QReport lors de la création de la feuille.
    tu dois avoir Query1 PRENOMS (ou table si tu veux tout) avec un datasource que nous nommerons DSPRENOMS

    ensuite Query2 VOITURES le est important, c'est ça la condition , lié à la datasource DSPRENOMS , avec un datasource i.e. DSVOITURES

    ensuite Query3 ACCESSOIRES le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where PRENOM=:PRENOM AND VOITURE=:VOITURE
    est important, c'est ça la condition , lié à la datasource DSVOITURES

    cela veut aussi dire qu'il faut que tu ajoutes les champs dans les différentes query ou tables

    nota : tu aurais pu continuer sur le même post ? bon , je suis pas toujours présent mais quand même

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    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 491
    Par défaut
    salut

    je ne comprend pas pourquoi vous utilise 3 query alors qu'une seule devrais
    suffir


    @+ Phil

  5. #5
    Membre éclairé Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Par défaut
    Salut SergioMaster,

    Merci encore pour tes réponses mais malgré celà je n'y arrive toujours pas et je vois déjà ta tête en lisant ce message lol.

    Donc j'ai bien fait ce que tu m'as dit précedemment sauf que je bloque pour cette liaison à la c...

    Donc supposons que j'ai uniquement deux bandes (prenom et voiture) avec 2 ClientDataSets et un datasource. En gros j'ai ça maintenant:

    Pour ma partie Prenom, j'ai:
    - TSQLQuery que je nomme qryPRENOM
    - TDataSetProvider que je nomme provPRENOM
    - TClientDataSet que je nomme tblPRENOM
    Pour ma partie Voiture, j'ai:
    - TSQLQuery que je nomme qryVOITURE
    - TDataSetProvider que je nomme provVOITURE
    - TClientDataSet que je nomme tblVOITURE
    Pour le DataSource, j'ai:
    - TDataSource que je nomme dsPRENOM.

    Si j'ai bien compris ma requête sql pour la partie PRENOM est du type:
    select * from prenom where annee=2007
    et ma requete sql pour la partie VOITURE est du type:
    select * from voiture where annee=2007 and prenom=:prenom
    Jusque là je pense avoir bien compris MAIIIIIIIIIS j'en reste à là
    - Je ne sais pas configurer mon DataSource avec ma partie prenom (à savoir, je dois le connecter avec quoi? qryPRENOM, provPRENOM ou tblPRENOM?)
    - Je ne sais pas comment rajouter le champ supplementaire (:prenom). J'en ai rajouté un dans tblVOITURE et pour mettre en relation ce nouveau champ avec la table tblPRENOM, j'ai fait un lookup mais là je ne suis pas sûr que ce soit ça.

    Avec celà, j'obtient des messages d'erreur assez variés en fonction de mes differentes configurations.

    Je pense que j'aurai du mettre ce message dans la partie Newbie car ce sont maintenant des questions de base que je pose.



    Pour anapurna,
    Merci aussi pour ta réponse, j'ai aussi essayé de faire un test avec ta methode mais là aussi je bloque un peu.
    Supposons aussi que je ne prennes que deux bandes (PRENOM et VOITURE) ce sera plus simple au départ.
    La première bande sera pour la liste des prenoms et la seconde sera pour la liste des voitures dépendante de la bande des prénoms.
    J'ai mis dans la seconde bande l'expression suivante:
    tblPrenom.Id_Voiture=tblVoiture.Id_Voiture
    et dans ces bandes j'y ai rajouté les QRDBText qu'il faut mais je n'ai aucun resultat.

    Ah la la... les reports!!! Ca fait mal à la tête lol.

    Désolé d'être un peu Newbie à vos yeux.

    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Attends , moi je te donnais une version basique de chez basique
    (BDE) utilisation de 1 TDataBase , 3 TQuery, 2 TDataSource
    (marche même avec D3)
    sans connaitre ta version de DELPHI et ton type de BDD

    maintenant pour ça
    - TSQLQuery que je nomme qryPRENOM
    - TDataSetProvider que je nomme provPRENOM
    - TClientDataSet que je nomme tblPRENOM
    jamais utilisé , je vais essayé de faire un effort et voir ce que c'est

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut Quelques minutes plus tard
    ton problème est je crois que tu en mets trop
    j'ai essayé en transposant simplement les compos BDE en DBx

    DataBase=SQLConnection
    Query = SQLQuery
    DataSource identique

    et ..... ça marche (enfin avec d'autres données modeles, coloris du modèle, accessoires d'un coloris , je suis dans la mode)

    foin de DataSetProvider , ClientDataSet (au fait à quoi ça sert, j'utilise pas ces
    composants) restons simples

  8. #8
    Membre éclairé Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Par défaut
    Oups, desolé j'ai completement oublié de décrire ce que j'utilise.

    Il s'agit de Delphi 7 et 2006. Pour le composant c'est DBExpress.

    Encore merci SergioMaster.

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

Discussions similaires

  1. [XL-2007] Image de fond de graphique avec des bandes
    Par ESVBA dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/12/2013, 21h40
  2. liaison des tables impossible avec le gestionnaire
    Par emulamateur dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/01/2012, 18h24
  3. [AC-2003] Liaison des tables avec SQL Server
    Par Marc_27 dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/10/2011, 14h33
  4. [VBA-E] Collage des valeurs avec liaison
    Par boux2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 13h03
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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