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 :

Formuler des conditions


Sujet :

Bases de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Par défaut Formuler des conditions
    Bonjour à tous !

    J'utilise Qt/MySql. J'ai une table avec 7 champs. le 3ème champs est "code"(int), le 6ème champ est "date_entree"(QDateTime) et le 7ème champ est "number"(int). La colonne number est initialisé à 0.
    Chaque utilisateur a un numéro de code.
    Dans mon interface, j'ai un QlineEdit ou l'utilisateur doit saisir son code puis doit cliquer sur ok. Un compteur à côté se décrémente. et la date est enregistrée dans "date_entree". L'utilisateur n'a le droit de saisir son code que 1 fois par jour.
    C'est pour cela, j'ai crée la 6ème colonne: number initialisée à 0.
    Si number = 0 alors c'est la 1ère tentative, et l'utilisateur peut saisir son code sans problème. number prend la valeur 1. Le compteur se décrémente.
    Si number = 1, je vérifie la date actuelle, si ça dépasse une journée --> boite de dialogue: Erreur. Sinon, l'utilisateur saisit son code.

    Nom : 395633.png
Affichages : 58
Taille : 5,8 Ko

    Quand je débogue mon programme, je vois que dateEntree et date_actuelle prennent les valeurs: <inaccessible> dans toutes les lignes, à partir de leurs déclarations.
    La donnée de "number" ne se modifie pas dans la table.

    Le code est ci-dessous, merci de m'aider à résoudre ces problèmes.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    void personnel::groupe1()
    {
        int i=0;
        QSqlQuery query("SELECT nom,prenom,code,statut,choix, date_entree, number FROM Personnel");
            QSqlRecord record = query.record();
            while (query.next()) {
                QString s =
                query.value(record.indexOf("code")).toString();
                QString ch =
                query.value(record.indexOf("choix")).toString();
               int myNumber = query.value(7).toInt(0);
                if(ui->t_line->text() == s )
                {
                    int v = ui->C_compt->intValue();
                    if(myNumber == 1)
                    {
                        QDateTime dateEntree =
                                    query.value(record.indexOf("date_entree")).toDateTime();
                        QDateTime date_actuelle = QDateTime::currentDateTime();
                        QDateTime ma_date = dateEntree;
                        ma_date.addSecs(72000);
                        if(date_actuelle < ma_date )
                        {
                            QMessageBox::information(this, "erreur", "impossible");
                        }
                        else
                        {
                            QMessageBox::information(this, "Choix", ch);
                            v--;
                            ui->C_compt->display(v);
                            QDateTime dateEntree =
                                        query.value(record.indexOf("date_entree")).toDateTime();
                            QSqlQuery query;
                              query.exec("UPDATE personnel SET number=1 WHERE code="+s+";");
                            QDateTime date_actuelle = QDateTime::currentDateTime();
                            QSqlQuery query1;
                              query1.exec("UPDATE personnel SET :value=:value1 WHERE code="+s+";");
                              query1.bindValue( ":value", "dateEntree" );
                              query1.bindValue( ":value1", "date_actuelle" );
                        }
                    }
                    else if(myNumber == 0)
                    {
                        QMessageBox::information(this, "Choix", ch);
                        v--;
                        ui->C_compt->display(v);
                        QDateTime dateEntree =
                                    query.value(record.indexOf("date_entree")).toDateTime();
                        QSqlQuery query;
                          query.exec("UPDATE personnel SET number=1 WHERE code="+s+";");
                        QDateTime date_actuelle = QDateTime::currentDateTime();
                        QSqlQuery query1;
                          query1.exec("UPDATE personnel SET :value=:value1 WHERE code='"+s+"';");
                          query1.bindValue( ":value", "dateEntree" );
                          query1.bindValue( ":value1", "date_actuelle" );
                    }
                }
                i++;
            }
    }

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Par défaut
    J'ai converti les dates: dateEntree et date_actuelle en Qstring. Maintenant elles ne valent plus <inaccessible>. Quand je débogue, on me donne leurs valeurs exactes.
    Cependant, la valeur 0 dans la colonne "number" reste inchangée!


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    void personnel::groupe1()
    {
        int i=0;
        QSqlQuery query("SELECT nom,prenom,code,statut,choix, date_entree, number FROM Personnel");
            QSqlRecord record = query.record();
            while (query.next()) {
     
                QString s =
                query.value(record.indexOf("code")).toString();
     
                QString ch =
                query.value(record.indexOf("choix")).toString();
     
                bool *ok = 0;
                int myNumber = query.value(6).toInt(ok );
     
                if(ui->t_line->text() == s )
                {
                    int v = ui->C_compt->intValue();
     
                    if(myNumber == 1)
                    {
                        QDateTime dateEntree =
                                    query.value(record.indexOf("date_entree")).toDateTime();
                        QDateTime date_actuelle = QDateTime::currentDateTime();
     
                        QDateTime ma_date = dateEntree;
                        ma_date.addSecs(72000);
                        if(date_actuelle < ma_date )
                        {
                            QMessageBox::information(this, "erreur", "impossible");
                        }
                        else
                        {
                            QMessageBox::information(this, "Choix", ch);
                            v--;
                            ui->C_compt->display(v);
     
                            QDateTime dateEntree1 =
                                        query.value(record.indexOf("date_entree")).toDateTime();
                            QString dateEntree = dateEntree1.toString();
     
                            QSqlQuery query;
                              query.prepare("UPDATE personnel SET number=:value1 WHERE code=:value2;");
                               query.bindValue( ":value1", 1 );
                               query.bindValue( ":value2", s );
                              query.exec();
     
     
                            QDateTime date_actuelle1 = QDateTime::currentDateTime();
                            QString date_actuelle = date_actuelle1.toString();
     
                            query.prepare("UPDATE personnel SET :value=:value1 WHERE code=:value2;");
                            query.bindValue( ":value", dateEntree );
                            query.bindValue( ":value1", date_actuelle);
                            query.bindValue( ":value2", s);
                            query.exec();
                        }
                    }
     
                    else if(myNumber == 0)
                    {
                        QMessageBox::information(this, "Choix", ch);
                        v--;
                        ui->C_onda->display(v);
     
                        QDateTime dateEntree1 =
                                    query.value(record.indexOf("date_entree")).toDateTime();
                        QString dateEntree = dateEntree1.toString();
     
                        QSqlQuery query;
                        query.prepare("UPDATE personnel SET number=:value1 WHERE code=:value2;");
                           query.bindValue( ":value1", 1 );
                           query.bindValue( ":value2", s );
                           query.exec();
     
     
                        QDateTime date_actuelle1 = QDateTime::currentDateTime();
                        QString date_actuelle = date_actuelle1.toString();
     
                        query.prepare("UPDATE personnel SET :value=:value1 WHERE code=:value2;");
                        query.bindValue( ":value", dateEntree );
                        query.bindValue( ":value1", date_actuelle);
                        query.bindValue( ":value2", s);
                        query.exec();
                    }
     
                }
     
                i++;
            }
    }

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

Discussions similaires

  1. Faire une formule simplifiée avec des conditions
    Par Akino974 dans le forum Conception
    Réponses: 0
    Dernier message: 29/07/2014, 14h03
  2. Réponses: 1
    Dernier message: 10/03/2006, 22h50
  3. [SQL Server 8] fonction Max --- selon des conditions
    Par Baquardie dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2006, 21h06
  4. Problème de requête avec cumul des conditions sur un champ
    Par UtopieAmbiante dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2006, 10h52
  5. [Compilateur] Optimisation des conditions
    Par Pedro dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 13h49

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