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 :

Lier un bouton de l'IHM à la base de données

  1. #1
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut Lier un bouton de l'IHM à la base de données
    Bonjour,

    Depuis quelques jours je suis bloquée sur un petit problème :
    J'aimerais lier un bouton de mon IHM à un champ de ma base de données.
    Par exemple j'ai un champ de ma base de données nommé longueur_meche correspondant au champ de l'IHM nommé spinBoxLongueur, j'ai donc commencé par faire ce code :

    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
    QSqlQuery query(*m_db);
     
        int long_meche = spinBoxLongueur->value() ; //ou QSpinBox
        qDebug() << "longueur_meche : " << long_meche;
     
       QString LG("SELECT longueur_meche FROM EFFET WHERE ");
        LG += "longueur_meche= \""  + long_meche + ""   ; // ici il y a un problème lors de la compilation,  "error: invalid operands of types ‘const char*’ and ‘const char [1]’ to binary ‘operator+’"  LG += "longueur_meche= \""  + long_meche + ""  ;
                                                                                                    ^
     
        LG += "longueur_meche= \""  + long_meche + ""  ;
     
     
        query.exec(LG);
     
        int fieldNumber = query.record().count() ;
     
        if ( query.first() ) // requête ok
        {
              for ( int n = 0 ; n < fieldNumber ; ++n )
              {
               int valeur = query.value(n).toInt() ;  // Récupére le résultat de la requête
                qDebug() << "résultat LG : " << valeur ;  // Affiche le résultat
              }
        }

    Merci de votre aide.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    Et donc… que veux-tu faire ? Où es-tu bloquée ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut Salut
    Eh bien j'ai cherché et j'ai PEUT ETRE trouvé mais je ne peux pas le vérifier car je n'ai pas encore codé mon bouton "Sauvegarder"
    J'ai l'impression que plus ça va plus je m'enfonce .. De plus il n'y a aucune aide sur internet pour coder le bouton "Sauvegarder" sur Qt comme je le voudrais.

    En fait, j'aimerais que lorsque l'utilisateur rempli l'IHM d'informations il puisse enregistrer tout ce qu'il a entré dans la BDD.

    Mais c'est un cercle vicieux car sans coder chaque champ je ne peux pas vérifier si le bouton "Sauvegarder" fonctionne et si je ne code pas le bouton "Sauvegarder" je ne peux pas vérifier si la liaison de chaque champ entre l'IHM et la BDD fonctionne ..

    Auriez vous une solution ?

    Merci de votre aide.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour vérifier le bon fonctionnement du bouton sauvegarder, il suffit de le connecter à une fonction (slot) qui va afficher un joli texte.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qDebug() << "TODO : Sauvegarde"
    (ça, ce n'est que pour afficher le texte.)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par laura_duj Voir le message
    Eh bien j'ai cherché et j'ai PEUT ETRE trouvé mais je ne peux pas le vérifier car je n'ai pas encore codé mon bouton "Sauvegarder"
    J'ai l'impression que plus ça va plus je m'enfonce .. De plus il n'y a aucune aide sur internet pour coder le bouton "Sauvegarder" sur Qt comme je le voudrais.

    En fait, j'aimerais que lorsque l'utilisateur rempli l'IHM d'informations il puisse enregistrer tout ce qu'il a entré dans la BDD.

    Mais c'est un cercle vicieux car sans coder chaque champ je ne peux pas vérifier si le bouton "Sauvegarder" fonctionne et si je ne code pas le bouton "Sauvegarder" je ne peux pas vérifier si la liaison de chaque champ entre l'IHM et la BDD fonctionne ..

    Auriez vous une solution ?

    Merci de votre aide.
    Ca, c'est parce que tu t'y prend mal... : Tu couple beaucoup trop ta base de données avec les différents éléments de ton interface graphiques, et cela finira tôt ou tard par te "pêter à la figure"

    Je m'explique:

    Normalement, tu devrais pouvoir être en mesure d'effectuer les requêtes vers ta base de données sans avoir besoin de l'ihm (parce que les données auraient été lues dans un fichier ou introduite dans la console par l'utilisateur ). Si tu arrives à ce genre de résultat, tu pourras envisager énormément de possibilités nouvelle, mais, surtout, tu te seras tiré d'un mauvais pas : ton IHM ne servira plus qu'à une seule chose (importante je te l'accorde) qui est ce à quoi elle doit être destinée : permettre à l'application et à l'utilisateur d'interagir (en remplacement de la console, si grise et si peu "user friendly, en gros )

    Et donc, il faudrait faire en sorte que ton IHM ne fasse qu'une seule chose avec les données qui se trouve dedans : les "convertir" dans un format qui sera accepté par "quelque chose" qui s'occupera de créer la requète SQL avant de l'exécuter
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Merci pour votre aide !
    En effet je me suis emmêlé les pinceaux et j'ai voulu tout faire trop vite.
    J'ai d'abord codé mon bouton "Sauvegarder" puis j'ai pu lier mes boutons et ça fonctionne.

    Ce qui m’amène à un autre problème : Dans mon IHM j'ai des sliders, j'aimerais récupérer leur valeurs, tout ça dans le code du bouton "Sauvegarder" car j'en aurais besoin que ici.

    j'ai donc fait ceci :


    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
       connect(verticalSlider, SIGNAL(sliderMove(int)), this, SLOT(verticalSlider_Move(int))); // verticalSlider est le nom de mon slider dans mon ui
     
     ...
     
      void Dconception::verticalSlider_Move()
      {
        int led1 = verticalSlider -> tickPosition();
      }
     
    ...
     
    // Dans le code de mon bouton "Sauvegarder" :
     
    int led1 = verticalSlider ->tickPosition() ;
     
    // Dans mon .h
     
    void verticalSlider_Move();
    Et cela ne fonctionne pas ..

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/04/2008, 12h06
  2. [AJAX] lier deux listes déroulantes alimenté par une base de données (Mysql)
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 01h06
  3. lier deux base de données par un même table
    Par id dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2006, 14h28
  4. Lier une feuille à une base de donnée ( avec ADO)
    Par christiano dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/12/2005, 15h55
  5. [C#] Lier des boutons radio dans une application mobile
    Par Loïc56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/04/2005, 13h00

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