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

C++Builder Discussion :

Problème Requete SQL et QuickReport


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut [RESOLU]Problème Requete SQL et QuickReport
    Bonjour je réalise une appli en BCB5 avec connexion à une base MySQL. Mon problème est le suivant:
    J'ajoute des "fiches" dans ma base de données MySQL. Chaque fiche contient 4 champs:date,intitule,entretien,nom dans ma Table 'Entretien'
    jusque là tout va bien En fait quand j'ajoute pour la première fois, ca me crée les champs suivants: date1,intitule1,entretien1,nom1.Ensuite ca me crée quand j'ajoute pour la deuxième fois date2, intitule2,entretien2,nom2,...et ainsi de suite. Donc je crée à chaque nouvel ajout 4 nouveaux champs dans ma table.
    Cela fonctionne très bien. Le problème est que je veux les visualiser via un QuickReport et voilà ce que je voudrais avoir comme affichage donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Date            Intitulé            Entretien                Nom
    -----             --------           -----------               -------
    date1           intitule1          entretien1             nom1
    date2           intitule2          entretien2             nom2
     ...                 .....                 ......                    ........
    mais je ne vois vraiment pas comment faire avec ma requete SQL pour arriver à ce résultat, vu que mes champs sont tous sur la meme 'ligne' dans ma base de données et que ici je dois les mettre en 'colonne'.
    Quelqu'un aurait-til une idée???
    Merci à vous tous

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    voilà j'y suis presque ...
    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
     
    EcranAccueil->RequeteEntretien->Close();
    EcranAccueil->RequeteEntretien->SQL->Clear();
    EcranAccueil->RequeteEntretien->SQL->Add("SELECT * FROM Entretien WHERE nom =:materiel");
    EcranAccueil->RequeteEntretien->Prepare();
    EcranAccueil->RequeteEntretien->ParamByName("materiel")->Value = nom;
    EcranAccueil->RequeteEntretien->Open();
    int NumeroColonne = EcranAccueil->RequeteEntretiencolonne->Value;
    //C'est donc le numéro de colonne qui va nous indiquer le nombre de boucles à exécuter pour afficher les entretiens
     
     
    //Définition du DataSet du QuickReport
    FeuilleEntretienVehicule->RapportEntretien->DataSet=EcranAccueil->RequeteEntretien;
    //Déclaration du caption des variables Label
    FeuilleEntretienVehicule->QRDBText1->DataSet = EcranAccueil->RequeteEntretien;
    FeuilleEntretienVehicule->QRDBText1->DataField = "date1";
    FeuilleEntretienVehicule->QRDBText2->DataSet = EcranAccueil->RequeteEntretien;
    FeuilleEntretienVehicule->QRDBText2->DataField = "intitule1";
    FeuilleEntretienVehicule->QRDBText3->DataSet = EcranAccueil->RequeteEntretien;
    FeuilleEntretienVehicule->QRDBText3->DataField = "organe1";
    FeuilleEntretienVehicule->QRDBText4->DataSet = EcranAccueil->RequeteEntretien;
    FeuilleEntretienVehicule->QRDBText4->DataField = "entretien1";
    //On affiche la feuille d'entretien
    FeuilleEntretienVehicule->RapportEntretien->Preview();
    Je sélectionne donc d'abord tous mes champs et j'affiche alors les premiers champs dans mon QuickReport.(date1,intitulé1,organe1,entretien1)
    J'aimerais bien connaitre comment faire pour passer à la ligne suivante dans mon quick report. Je pourrais alors y inscrire mes champs pour (date2,intitulé2,organe2,entretien2)
    Je pourrais enfin faire une boucle pour voir le nombre de fois je dois passer à la ligne et le tour est joué!!
    Quelqu'un saurait-il m'aider??
    Merci à vous

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    Difficile de comprendre ton problème.

    Quel est la structure de ta table?

    Que veux-tu dire par tous sur la même ligne?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    en fait le problème est maintenant plus simple.. J'ai bien avancé mais il faudrait que je sache comment "aller à la ligne" dans un QuickReport et là j'aurais presque fini.Auriez vous une idée?

    Ma table est constituée d'un nombre non défini de champs puisqu'ils sont construits de manière dynamique..mais pour exemple elle ressemble à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    num | nom | rubrique | colonne | date1 | entretien1 | intitule1 | date2 | entretien2 | intitule2 | date3 | entretien3 | intitule3 | ......
    J'arrive bien à afficher ma première ligne dans mon quick report.Ca rerssemble donc à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Date            Intitulé            Entretien                Nom 
    -----             --------           -----------                 ------- 
    date1           intitule1          entretien1               nom1
    Mes composants QRDBText sont imlplémentés comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FeuilleEntretienVehicule->QRDBText1->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText1->DataField = "date1"; 
    FeuilleEntretienVehicule->QRDBText2->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText2->DataField = "intitule1"; 
    FeuilleEntretienVehicule->QRDBText3->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText3->DataField = "organe1"; 
    FeuilleEntretienVehicule->QRDBText4->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText4->DataField = "entretien1";
    Jusque là ca marche très bien!! Mais j'aimerais maintenant "Passer à la ligne " dans mon QuickREport pour pouvoir faire pareil avec les champs Date2,entretien2,intitule2 et avoir donc qqchose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Date            Intitulé            Entretien                Nom 
    -----             --------           -----------               ------- 
    date1           intitule1          entretien1               nom1 
    date2           intitule2          entretien2               nom2
    J'aimerais donc y insérer le code pour passer à la ligne pour pouvoir ensuite implémenter mes QRDBText et les afficher comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FeuilleEntretienVehicule->QRDBText1->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText1->DataField = "date2"; 
    FeuilleEntretienVehicule->QRDBText2->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText2->DataField = "intitule2"; 
    FeuilleEntretienVehicule->QRDBText3->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText3->DataField = "organe2"; 
    FeuilleEntretienVehicule->QRDBText4->DataSet = EcranAccueil->RequeteEntretien; 
    FeuilleEntretienVehicule->QRDBText4->DataField = "entretien2";
    Quand on prend simplement une base de données et une simple requete,il "passe à la ligne" tout seul après chaque enregistrement et va meme à la page tout seul. Il ya surement bien moyen de passer à la ligne de manière Statique. Mais je ne sais pas comment faire.
    HELP me please!!

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    As-tu mis les champs dans la section "Detail" du rapport?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    oui bien sûr mais ce que j'aimerais savoir c'est comment passer d'une ligne à une autre de facon manuelle et non automatique ..

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    Aucune idée!
    Sauf utiliser un Canvas et générer toi-même ton rapport.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    Je ne suis pas très sur du coup, et d'ailleurs, il y a le tag résolu donc tu dois avoir trouvé.
    Mais perso, je serai passé par une étape intermédiaire, j'aurai reconstruit un DataSet qui aurait la structure voulue et j'aura dit que le DataSet de mon report c'est le nouveau que je viens de construire....
    show time !!!

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

Discussions similaires

  1. [debutant] Problème requete SQL et driver JDBC
    Par desquesa dans le forum JDBC
    Réponses: 2
    Dernier message: 29/05/2006, 13h19
  2. [MySQL] Problème requete SQL dans PHP
    Par dl_jarod dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/04/2006, 14h40
  3. problème requete sql fusion de deux count
    Par TuxP dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/12/2005, 15h15
  4. Problème requete SQL
    Par tonyskn dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/11/2004, 20h37
  5. problème requete sql
    Par Fred- dans le forum ASP
    Réponses: 2
    Dernier message: 13/06/2004, 02h20

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