Partage
  • Partager sur Facebook
  • Partager sur Twitter

TableauComplexe

Construire un tableau

    11 mars 2019 à 13:10:06

    Salut à tous ...
    Dans mon programme, il me faut ce tableau un peu complexe pour gérer les données. Mais je ne sais par du tout comment arriver a fusionner ou fractionner les cellules, les redimensionner si besoin. J'avoue avoir posté un pareil sujet, il y a quelques jours mais les intervenants m'ont renvoyé vers la documentation ( Span ). J'ai lu la documentation  mais je manque de pratique et donc je ne sais pas comment l'utiliser. 
    J'ai essayé avec Qt designer mais voilà le résultat sur l'image ce dessous. 
    J'ai recherché des exemples dans Qt et sur le net : Résultats Néant...
    Voilà une image du tableau que je veux construire et j'aimerais une aide pratique. 
    Si l'intervenant peut construire une partie du tableau pour que je comprenne comment tout ça fonctionne. 
    Merci pour votre aide ..
    Remarque Svp me renvoyer pas à la documentation.
    • Partager sur Facebook
    • Partager sur Twitter

    Tout est question d'initiation......

      11 mars 2019 à 13:23:31

      Je ne vois pas trop le soucis.

      Tu enregistre ta data dans un truc du genre : 

      struct user {
      	std::string name;
      	enum sex sex;
      	enum status status;
      	double coef;
      
      	std::array<double, 5> marks;
      	double average;
      	
      	std::array<double, 2> homeworks;
      	double averate_sem;
      
      	std::string comment;
      };

      Puis tu met les donnees dans les cases.

      Pour les sous cases, tu fait un tableau dans le tableau juste pour l'affichage, ce qui compte c'est ton 1, 2, 3, 4, 5.

      D'ailleurs, ce ne serais pas mieux de laisser libre le nombre de notes ?

      Si je veux donner 3 notes ou 8 notes c'est un peu restrictif.

      • Partager sur Facebook
      • Partager sur Twitter
      Developpeur Ruby/Crystal chez Plezi. Less if, more power.
        12 mars 2019 à 11:12:18

        Salut tout le monde et particulièrement à necros211

        "Tu enregistre ta data dans un truc du genre : "

        C'est quoi le data et je le trouve où ?

        J'insère le code où ? et je l'utilise comment ?

        je ne comprends pas le code. Je m'attendais à des syntaxes comme : Qtableview ou Qtablewidget, row colum et autres. 

        Merci d'avance...


        • Partager sur Facebook
        • Partager sur Twitter

        Tout est question d'initiation......

          12 mars 2019 à 14:23:13

          Salut,

          Vous ne parlez pas de le même chose.

          FabriceNafab parle d'afficher le tableau, necros211 parle de le stocker en mémoire.

          Mais avant de l'afficher, il faut l'avoir stocké.

          Mais si  tu ne comprends pas le code necros211, je pense qu'il y a des choses à revoir :)

          • Partager sur Facebook
          • Partager sur Twitter

          Recueil de codes en C et C++ http://fvirtman.free.fr/recueil/index.html

            12 mars 2019 à 17:51:56

            Qu'es ce qu'on doit revoir ?

            Je veux d'abord un tableau qui s'affiche et remplir avec des données. Un tableau avec l'entête comme représenté sur l'image. Je vais réfléchir au stockage des données après.

            Alors pour l'affichage .. Le code ou le début de code donneras quoi ?

            Merci encore pour votre interventions...

            • Partager sur Facebook
            • Partager sur Twitter

            Tout est question d'initiation......

              12 mars 2019 à 19:49:15

              >Je vais réfléchir au stockage des données après.

              Révise ta position.

              Généralement, les technologies s’adaptent facilement à différent mode de stockage, pas l'inverse.

              Tant qu'on ne connait pas ton mode de stockage, on pourra pas t'aider efficacement.

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                12 mars 2019 à 20:16:58

                D'accord ..

                Mon tableau doit afficher les données stockées dans une base de données local créer par l'utilisateur à chaque création (sous la forme de Model-Vue). 

                Jetez un coup d’œil au tableau et voilà la structure de la base de données SQL.

                Database local Fencene

                "matière vachar(20) " ;

                "coefInt "

                ficheapprenant1 //Ligne1

                ficheapprenant2 // Ligne 2

                ficheapprenant3 // Ligne 3

                ficheapprenant4 //Ligne 4

                ficheapprenant5 // Ligne 5


                *Sous database ficheapprenant

                "number Int";

                "nomprenom varchar(100)";

                "sexe varchar(1);// Sex M ou F

                "statut varchar(1) ;// P ou D

                "coef Int";

                "notei1 Int"

                "notei2 Int"

                "notei3 Int"

                "notei4 Int"

                "notei5 Int"

                "noted1 Int"

                "noted2 Int"

                Le truc est que j'ai pensé finaliser le tableau afin de savoir comme procéder pour relier les deux mais apparemment c'est une erreur de débutant.

                Je dois procéder comment ?

                Merci pour vos interventions.

                • Partager sur Facebook
                • Partager sur Twitter

                Tout est question d'initiation......

                  13 mars 2019 à 20:01:44

                  Votre présentation des tables est vraiment pas explicite.

                  Je fais l'assertion que vous savez vous démerder avec SQL pour récupérer les informations à afficher sous forme tabulaire.

                  Le reste, c'est de l'affiche "b-bête".

                  https://wiki.qt.io/Technical_FAQ#How_can_I_span_the_headers_in_my_QTableView_.3F

                  Utilisation de composant "étendus":

                  https://www.linux-apps.com/content/show.php/HierarchicalHeaderView?content=103154

                  Je ne connais pas Qt, mais des composants payants (ou pas) qui étendent Qt sur cet aspect, ça doit pas manquer.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                    14 mars 2019 à 1:28:31

                    Merci pour ton aide barcela.

                    J'ai commencé à écrire le code pour le tableau qui s'est avéré plus simple maintenant.

                    "Ma présentation des tables n'est pas du tout explicite" c'est parce que je commence à peine à bien comprendre la création de database et l'organisation de ce dernier. Si tu me donnais un coup de main, ce sera grandement apprécié.

                    Si non!!! des liens utiles comme ce que tu as fait précédemment.

                    Mon database est censé afficher des information et des notes des apprenants selon la matière. 

                    je suis disponible pour toutes les questions.

                    Merci d'avance...

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Tout est question d'initiation......

                      14 mars 2019 à 10:40:15

                      FabriceNafab a écrit:

                      Si tu me donnais un coup de main, ce sera grandement apprécié. Mon database est censé afficher des information et des notes des apprenants selon la matière. 

                      je suis disponible pour toutes le s questions.

                      Un coup de main pour éclaircir les idées.

                      - Afficher des trucs, ce n'est pas du tout le rôle d'une base de données.

                      - Elle est là pour contenir les données. Et permettre que des programmes en ajoutent, en consultent etc.

                      Question : qu'est ce que tu entends par

                      > Le truc est que j'ai pensé finaliser le tableau afin de savoir comme procéder pour relier les deux

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 mars 2019 à 11:40:14

                        Proposition de présentation de Table

                        [Nom de la Table]

                            [Nom de la colonne 1](type de la colonne1)

                            [Nom de la colonne 2](type de la colonne2)

                        ...

                        Le contenu de ligne, ci-nécessaire, après, au format CVS, par exemple.

                        Proposition de schéma des Tables pour ce que je comprends de votre exercice :

                        [Étudiant]

                            [id](int pour clé primaire)

                            [nom](VARCHAR)

                            [prenom](VARCHAR)

                            [sexe](boolean), mais bon, c'est pas super LGBT... => utilisation d'une table annexe

                            [statut](???)

                        [Matière]

                            [id](int pour clé primaire)

                            [coef](int)

                        Si le coefficient de la matière est variable, en fonction de l'étudiant, de la filière, etc..., il faudra utiliser des tables supplémentaires (tables d'association)

                        [Notes]

                           [idEtudiant](int, clé étrangère sur la table Étudiant)

                           [idMatière](int, clé étrangère sur la table Matière)

                           [Date](Date)

                           [Note](double)

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                          14 mars 2019 à 14:58:10

                          michelbillaud a écrit:

                          FabriceNafab a écrit:

                          Question : qu'est ce que tu entends par

                          > Le truc est que j'ai pensé finaliser le tableau afin de savoir comme procéder pour relier les deux


                          Je vais répondre bêtement à la question. Pour moi, une base de données est un peu une source de stockage de données de divers types pouvant être modifier , réutiliser et afficher dans une vue. Et bien ma vue serais le tableau que j'essaye de construire. Donc l'idée est d'afficher les données de la base de données dans mon tableau et puis ensuite les modifier, les enregistrer.

                          Alors je suis logique dans mon raisonnement ? Où je passe a coté d'un détail important.

                          Merci encore...

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Tout est question d'initiation......

                            14 mars 2019 à 15:24:56

                            Là, on part dans tous les sens.

                            On n'est plus sur l'affichage mais sur comment récupérer les données.

                            C'est 2 choses complètements décorrélées, du moment que vous avez correctement architecturé votre application.

                            Tel que vous aviez présenté vos données sous forme de plusieurs tables, j'ai fais l'assertion qu'on parlait de base de données relationnelles.

                            Mais votre définition de "base de données" est tellement vague qu'elle peut très bien inclure des base de données NoSQL comme des bases de données "documents" ou "key-value".

                            Ce n'est vraiment pas la même manière de concevoir le stockage des données.

                            Avant même de se prendre la tête sur le nombre de colonne à afficher ou la couleur lors du survole d'une cellule de la grille en vert dragon ou en jaune poussin, il faut que vous ayez un minimum conçu le modèle objet de la couche métier ainsi qu'une représentation des données dans la couche date.

                            Là, vous mettez clairement la charrue avant les bœufs.

                            Commencez par comprendre les différences entre les différents types de base de données, utilisez celle qui vous semble la plus adapté au problème et à vos connaissance. Puis faites une conception du modèle de stockage de données.

                            Mon dernier post fourni une ébauche de conception relationnelle des données. Pour une base NoSQL, c'est complètement différent.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                              15 mars 2019 à 10:33:29

                              Merci...

                              bacelar a écrit:

                              Commencez par comprendre les différences entre les différents types de base de données, utilisez celle qui vous semble la plus adapté au problème et à vos connaissance. Puis faites une conception du modèle de stockage de données.

                              Mon dernier post fourni une ébauche de conception relationnelle des données. Pour une base NoSQL, c'est complètement différent.

                              Avant de prendre l'initiative d'utiliser une base de données comme moyen de stockage des notes des utilisateurs de du programme, j'ai lu quelques informations sur ça. Et j'ai alors decidé d'utiliser les bases de données SQLite.

                              Maintenant je manque de pratique ou sinon je dirai que je n'y connais absolument rien. Mais avec les cours que j'ai brossé. Si tu me donne un coup de main, non seulement j'apprendrai mais aussi je le ferai directement sous forme pratique en suivant les directives que tu me donneras.

                              Si je pars du principe que tu veux m'aider. Voilà mes préoccupations actuelles.

                              bacelar a écrit:

                              Proposition de présentation de Table

                              [Nom de la Table]

                                  [Nom de la colonne 1](type de la colonne1)

                                  [Nom de la colonne 2](type de la colonne2)

                              ...

                              Le contenu de ligne, ci-nécessaire, après, au format CVS, par exemple.

                              Proposition de schéma des Tables pour ce que je comprends de votre exercice :

                              [Étudiant]

                                  [id](int pour clé primaire)

                                  [nom](VARCHAR)

                                  [prenom](VARCHAR)

                                  [sexe](boolean), mais bon, c'est pas super LGBT... => utilisation d'une table annexe

                                  [statut](???)

                              [Matière]

                                  [id](int pour clé primaire)

                                  [coef](int)

                              Si le coefficient de la matière est variable, en fonction de l'étudiant, de la filière, etc..., il faudra utiliser des tables supplémentaires (tables d'association)

                              [Notes]

                                 [idEtudiant](int, clé étrangère sur la table Étudiant)

                                 [idMatière](int, clé étrangère sur la table Matière)

                                 [Date](Date)

                                 [Note](double)


                              Le dernier rubrique Note [Note](double) est suffisant pour contenir les 7 différentes notes que doit contenir le tableau. Le tableau doit d'une part contenir la 1ère Note d'Interrogation, 2ère Note d'Interrogation , 3ère Note d'Interrogation, 4ère Note d'Interrogation, 5ère Note d'Interrogation, 1ère Note de devoir, 2ère Note de devoir de chaque apprenant. Comment l'adapter au structure ?

                              Merci encore et encore...

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Tout est question d'initiation......

                                15 mars 2019 à 13:57:33

                                SQLite, c'est du relation "classique", donc à base de tables, donc forcément très structuré.

                                Faire une conception, c'est faire des compromis.

                                Il n'y jamais UNE seule manière de faire, mais c'est toujours un choix entre plusieurs façon de faire.

                                Pour faire ces choix, il fait savoir ce qu'on veut privilégier.

                                Il faut que cela soit assez simple pour faire ce qu'on pense que cela doit faire, assez souple pour pouvoir corriger le tir et assez performant pour que cela rentre dans les contraintes.

                                Donc, en commence par le truc le plus basique mais assez souple car on n'a jamais une vue précise de la solution (n'en déplaise aux tenants de l'approche Waterfall).

                                Ce que je vous ai fourni comme ébauche de schéma de donnée est donc un compromis "classique".

                                Avec mon schéma, vous pouvez avoir un nombre arbitraire de notes par matière et par étudiant.

                                Cela rend les données assez souples pour le cas où le nombre de notes par matière n'est pas constant ou qu'il varie/variera. C'est à la couche métier, qui implémente les règles business, de faire ces vérifications de cohérence.

                                L'utilisation de la colonne Date permet d'ordonner les notes chronologiquement.

                                Si vous voulez gérer des notes manquantes, le SQL permet de gérer cela de plusieurs manières différentes sans avoir à changer cette structure de table. (Vue, valeur de colonne nullable, etc...)

                                Si vous voulez distinguer les notes devoir, des notes interrogations, vous pouvez aussi vous bassez sur la date mais vous pouvez aussi simplement ajouter une colonne supplémentaire dans la table [Notes] de type "boolean" qui indiquera si c'est une note d’interrogation ou de devoir (vous pouvez aussi utiliser un type "integer" à la place de "boolean" pour avoir plus que 2 types de notes, pour les évolutions futures).

                                P.S.: Après un peu de recherche, SQLite est un peu limité

                                https://stackoverflow.com/questions/1237068/pivot-in-sqlite

                                Contrairement à SQL Serveur, etc...

                                https://docs.microsoft.com/fr-fr/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

                                Mais il est plus flexible de faire ce genre de traitement via des règles métier et pas dans la base.

                                Si vous voulez un truc super peu évolutif, l'approche bourrin des réponses dans SO (stackoverflow) sont utilisables, avec le nombre de note inscrit "en dure" dans le schéma de la table.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                  16 mars 2019 à 0:50:43

                                  Pour commencer toujours Merci pour ton temps et ta patience.

                                  Alors j'ai lu les pages dont vous avez posté les liens. J'ai vu comment les bases sont créés et affichées. Mais je n'ai pas vu comment laissé des emplacements vide à remplir dans une base de donnée. Mais je ne vais pas bousculer ma formation. 

                                  Alors dans mon cas présent, je dois commencer par quoi si je veux créer de façon pratique la base  ?

                                  Quelles est la structure définitive de ma base de données ?

                                  Merci d'avance...

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Tout est question d'initiation......

                                    17 mars 2019 à 8:41:11

                                    La technique que personnellement j'utilise pour décrire mon modèle de données, c'est d'écrire un script SQL qui permet de créer une base de données ex-nihilo qui représente mon modèle. Celui-ci doit tout contenir, les tables, les vues, les contraintes, les index... Passer par la création de ce script impose d'avoir une conception claire du rôle du modèle de données que je veux créer, et ça c'est une bonne chose,  si ma conception est claire, je sais où je vais (et je sais que c'est où je veux aller). Le script a un autre avantage, je peux le tester en l'exécutant sur un SGBD, pour valider ma conception. Une fois que mon modèle de données est solidement établi, je peux penser sereinement à son exploitation. Dans la suite, je n'utiliserai pas forcément un SGBD, mais cette étape permet de bien fixer les idées.

                                    Par exemple, la remarque de necros211 sur le fait qu'imposer le nombre de notes est problématique, je vais le voir en concevant mon script. Je vais me rendre compte qu'il manque un ou deux concepts, celui d'évaluation, et peut être celui de session d'évaluation. L'évaluation va représenter la note obtenue par un étudiant lors d'une évaluation (Examen, Partiel, Devoir à la maison, Examen blanc, Interro surprise, Colle...), La session d'évaluation va permettre de catégoriser plus finement, au lieu de garder simplement 3 notes sans contexte, je garde un nombre quelconque de notes avec leur contexte, je peux par exemple savoir qu'un étudiant a obtenu une note de 12 sur une interrogation, je peux savoir combien ont obtenu une note supérieure/inférieure (sur le même examen), avec une base de données bien conçue, je pourrais probablement voir le sujet de l'évaluation, le rendu de l'étudiant... 

                                    Ce petit "détail" va me dire que mettre les notes dans l'enregistrement de l'étudiant est une erreur de conception, il est bien plus pertinent de les mettre dans une table à part.

                                    -
                                    Edité par int21h 17 mars 2019 à 9:21:27

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                                      17 mars 2019 à 11:05:52

                                      J'ai lu ton intervention int21h. 

                                      Comment j'écrire un script SQL ?

                                      Maintenant l'utiliser dans mon programme ne sera par un problème ?

                                      Merci d'avance

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Tout est question d'initiation......

                                        17 mars 2019 à 20:47:49

                                        Pour écrire un script SQL, un simple éditeur de texte comme notepad suffit, après tu peux utiliser à peu près n'importe quel programme te permettant de produire un texte.

                                        Pour le reste, ce script, tu ne l'utiliseras pas directement dans ton programme, relis mon message, sa seule fonction est de fixer mes idées. En écrivant ce script je fixe mes idées, de sorte que lorsque j'ai fini d'écrire ce script, je connais exactement le modèle de données sur lequel je vais baser mon programme. Si je sais ce que je manipule, et que je connais le résultat que je veux obtenir, alors il m'est facile de savoir comment je dois exploiter mon modèle de données pour parvenir au résultat que je veux obtenir. Tu te jettes directement dans la programmation et tu te noies. Avant de passer à la programmation, j'ai tout pensé, j'ai mon modèle de données, j'ai la liste des services à fournir.... Quand je commence l'écriture de mon programme, je n'ai presque plus qu'a traduire ce que j'ai imaginé en instructions pour l'ordinateur.

                                        Ecrire un programme, est extrêmement difficile si tu ne sais pas ce que tu veux faire, et c'est extrêmement facile si tu sais exactement où tu veux aller.

                                        -
                                        Edité par int21h 17 mars 2019 à 21:18:20

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                                          18 mars 2019 à 8:45:41

                                          Pour l'histoire des "comment laissé des emplacements vide à remplir", c'est un peu le gros défaut de l'approche "bourrin".

                                          Mais il y a le concept de "NULL" dans la syntaxe SQL.

                                          Mais comme l'indique @int21h, une conception plus soignée permet plus de flexibilité.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                            18 mars 2019 à 14:24:51

                                            Merci Bacelar et int21h.

                                            Je vais organiser de façon claire mes objectifs par rapport a cette base de donnée. Vous comprendrez mieux ce que j'attends de cette dernière..

                                            Je le poste ce soir...

                                            Merci encore pour votre disponibilité..

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Tout est question d'initiation......

                                            TableauComplexe

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            • Editeur
                                            • Markdown