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

Discussion :

Créer un tableau particulier qui modifie une base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Créer un tableau particulier qui modifie une base de données
    Bonjour,

    Cela fait deux jours que je cherche en vain une solution à mon problème. Je voudrais créer un tableau pour modifier ma base de données. J'ai essayé avec un QTableView et un QTableWidget mais ces deux classes ne permettent pas de faire exactement ce que je veux faire.

    Je vous montre ce que je souhaite faire via une image créée à partir de paint (désolé pour la qualité, mais j'espère que ce petit dessin est assez explicite). En fait, je voudrais pouvoir modifier le nom d'une catégorie et sa catégorie mère (qui peut être "null"). La deuxième colonne contient un menu déroulant qui contient toutes les catégories. De plus, on peut sélectionner plusieurs catégories via les cases à cocher et les supprimer en cliquer sur le bouton "supprimer". Je voudrais qu'il y ait une case à cocher en titre de colonne qui permette de cocher toutes les catégories. Enfin, on enregistre les modifications en appuyant sur le bouton "OK". La deuxième image est la table que je veux modifier. J'espère que vous avez compris

    Je souhaite vous expliquer ce que j'ai commencé à faire avec QTableView.
    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
     
    void editerCategorieProduit::afficher(){
        //model est un attribut de la classe editerCategorieProduit
        model = new QSqlRelationalTableModel(this);
        model->setTable("categorie_produit");
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
     
        model->setRelation(2, QSqlRelation("categorie_produit", "id_categorie_produit", "nom_categorie_produit"));
        model->setHeaderData(1, Qt::Horizontal, tr("Nom"));
        model->setHeaderData(2, Qt::Horizontal, tr("Parent"));
        model->select();
     
        ui->tableCategorie->setModel(model);
        ui->tableCategorie->setItemDelegate(new QSqlRelationalDelegate(this));
        ui->tableCategorie->setColumnHidden(0, true);
        ui->tableCategorie->setSelectionBehavior(QAbstractItemView::SelectRows);
        model->database().transaction();
     
        if (model->submitAll()) model->database().commit();
        else model->database().rollback();
     
        ui->tableCategorie->setModel(model);
        ui->tableCategorie->hideColumn(0);
    }
    J'arrive donc à modifier et à supprimer des colonnes. Mais je ne peux pas supprimer plusieurs catégories d'un seul coup. De plus, mon deuxième problème est beaucoup plus grave ! Mon QTableView ne m'affiche pas les catégories qui n'ont pas de catégories mère (parent_categorie_produit = null) à cause de la méthode QTableView::setRelation() ...

    J'ai essayé de faire quelque chose de similaire avec un QTableWidget mais la méthode QTableWidget::setModel() est privée ...

    J'ai aussi pensé à faire un "tableau à la main" avec des layoutHorizontal et des layoutVertical. Et ensuite, je supprime toutes lignes dans ma base pour ensuite insérer toutes les lignes du tableau (donc les lignes non modifiées et modifiées). Mais je pense que cette méthode est trop lourde et j'espère qu'il y ait une solution plus simple !!!

    J'espère que vous avez compris mon problème ! Si c'est le cas, avez-vous une idée comment faire ?

    En espérant avoir une réponse, je vous remercie d'avance

    PS : je débute sur Qt, je m'excuse d'avance si je pose des questions simples
    Images attachées Images attachées   

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2012, 15h54
  2. Comment créer un site immobilier dynamique avec une base de données ?
    Par Alain troverti dans le forum Général Conception Web
    Réponses: 14
    Dernier message: 07/07/2006, 21h57
  3. Réponses: 8
    Dernier message: 23/03/2005, 19h28
  4. Réponses: 7
    Dernier message: 05/01/2005, 13h43
  5. [C#] Modifier une base de donnée
    Par Macintoc dans le forum Accès aux données
    Réponses: 15
    Dernier message: 03/06/2004, 11h49

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