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 Discussion :

Comparaison à partir de la base


Sujet :

Bases de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Par défaut Comparaison à partir de la base
    Salut tous le monde,
    Je travaille sur une application Qt qui interagit avec une base de donnée SQL Server.Je veux comparer entre deux champs récupérés de la base.
    Mais toujours il y aura une erreur dans la comparaison.
    Lorsque j'affiche les champs dans le console.
    Le 1er est affiché correctement.(un entier)
    Mais le 2ème est affiché sous une forme héxa je pense. Exemple : lorsque la valeur récupérée est '1', la valeur affichée est '0x6a112f16'.
    Voilà une portion de la 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
    QSqlQuery query11;
    query11.prepare("SELECT  Seuil_Min FROM Projet.dbo.Produit WHERE Nom=:nom");
    query11.bindValue(":nom", ui->comboBox->currentText());
    if (query11.exec() && query11.next()) {
        ui->textBrowser->setText(query11.value(0).toString());
        qint8 min=query11.value(0).toInt();
     
        QSqlQuery query12;
        query12.prepare("SELECT  Quantité FROM Projet.dbo.Produit WHERE Nom=:nom");
        query12.bindValue(":nom", ui->comboBox->currentText());
        if (query12.exec() && query12.next()) {
            qint8 qt = query12.value(0).toInt();
            qDebug()<< qt;
            qDebug()<< min;
        }
     
     
        if(qt <= min){
            QMessageBox::warning(this,"Information","Vous avez atteint le seuil minimal de ce produit. Un message d'alerte sera envoyé au système centrale !");
        }

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut ça sent un prob de pointeur
    Salut,

    Je suis pas un pro mais ton truc sent le prob de pointeur.

    Si tu as une retour du genre "0x1234567" c'est probablement une adresse mémoire et non pas le contenu d'une variable.

    si tu mets qDebug()<< &qt; au lieu de qDebug()<< qt; qu'est-ce que ça donne ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Non, probablement pas de problème de pointeur ici (il en utilise pas et Qt sait très bien les gérer).

    Je pense plutôt à une erreur de conversion (tu convertis un int en qint8) ou à une erreur dans ta requête (en particulier, j'aime pas les accents dans les requêtes, il y a souvent des problèmes de codage des textes)

    Pour la conversion, vérifie que tu n'as pas d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bool ok;
    qint8 qt = query12.value(0).toInt(&ok);
    if (ok)
        qDebug() << qt;
    else
        qDebug() << "erreur de conversion de la variable qt";
    Tu peux (doit ?) utiliser un int au lieu d'un qint8 pour tester aussi

    Exemple : lorsque la valeur récupérée est '1', la valeur affichée est '0x6a112f16'.
    Comment connais tu la valeur récupéré et comment sais tu qu'elle est différentes de la valeur affichée ? Et quand tu parles de ta 1ère variable, c'est la première affichée ou la première dans le code (c'est qt ou min qui pose problème) ?

    Tu peux afficher les 2 variables sous forme de texte (plus de problème de conversion dans ce cas). Essaies ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    QString str;
     
    str += QString("min=%1 ; qt=%2").arg(query11.value(0).toString()).arg(query12.value(0).toString()) + " / ";
     
    str += QString("min=%1 ; qt=%2").arg(query11.value(0).toInt()).arg(query12.value(0).toInt()) + " / ";
     
    str += QString("min=%1 ; qt=%2").arg((qint8) query11.value(0).toInt()).arg((qint8) query12.value(0).toInt());
     
    ui->textBrowser->setText(str);

Discussions similaires

  1. [Sql-Server] Utilitaire de comparaison d'evolution de Base
    Par bartoumi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2005, 17h15
  2. [MySQL] Afficher une photo à partir de la base de données
    Par microcongo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2005, 17h29
  3. envoi automatisé de mails à partir d'une base postgresql
    Par youn608 dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 15/02/2005, 09h06
  4. Créer des clés informatiques à partir d'1 base de données??
    Par Flateric dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 11/02/2005, 07h49

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