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

C++Builder Discussion :

Exploiter le r�sultat d'une requ�te SQL avec C++ builder [D�butant(e)]


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    DevOps
    Inscrit en
    Ao�t 2008
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : DevOps

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 10
    Par d�faut Exploiter le r�sultat d'une requ�te SQL avec C++ builder
    Bonjour � tous,

    J'utilise C++ builder 5, je suis en cours de d�veloppement d'une application qui suite � un clic sur un bouton doit g�n�rer un code al�atoire sur 4 chiffres entre 1000 et 9999. Ensuite je dois tester l'�xistance de ce code dans ma table AccessVL ainsi que la valeur d'un champs. Celle ci est compos�e de :
    -Code_Aleatoire(int)
    -Entree_Effectuee(bool)
    -Sortie_Effectuee(bool)

    Une fois mon code g�n�r�, je dois effectuer une requ�te SQL sur ma table pour v�rifier si le code �xiste d�j� et si le champ Entree_Effectuee est bien � false, auquel cas je reg�n�re un code. Le probl�me est que je ne sais pas comment exploiter le r�sultat de ma requ�te pour v�rifier mes conditions.

    Voici le code associ� � mon bouton :
    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
     
    void __fastcall TfAppli::bpGenerationCodeClick(TObject *Sender)
    {
    //ouverture de la table
    //dmProg contient tous les composants ADO
    //tCodeAletoire type ADOTable
    dmProg->tCodeAleatoire->Open();
     
    //déclaration code alléatoire
    int CodeAleatoire;
    randomize();
     
    //génération du code aleatoire
    CodeAleatoire = random(9000) + 1000;
     
    //vérification si le code existe déjà
    //tQCodeAleatoire type ADOQuery
    tQCodeAleatoire->Close();
    tQCodeAleatoire->SQL->Clear();
    //essai avec le code 1578 déjà créé dans la base
    tQCodeAleatoire->SQL->Add("SELECT * FROM AccesVL WHERE Code_Aleatoire='1578'");
    tQCodeAleatoire->Open();
     
    if () 
    //vérification du résultat de la requête (si code existe)
    ...
    && ()
    //vérification du champs Entree_Effectuee
    ...
    {
    //nouveau code aléatoire
    CodeAleatoire = random(9000) + 1000;
    }
     
    //message si ok
    ShowMessage ("Le code Aléatoire à saisir est :" + String(CodeAleatoire) );
     
    //enregistrement dans la table
    dmProg->tCodeAleatoire->Append();
    dmProg->tCodeAleatoire->FieldValues["Code_Aleatoire"]= CodeAleatoire;
    dmProg->tCodeAleatoire->Post();
     
    //fermeture de la table
    dmProg->tCodeAleatoire->Close();
    }
    Merci par avance de vos r�ponses

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    j'ai pas Builder sous la main, mais ca dois ressembler a ca:

    Tu parcoure toutes les lignes de r�sultat de ta requete:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    tQCodeAleatoire->First() ;
    while( !tQCodeAleatoire->EoF ) 
    {
       int value = tQCodeAleatoire->FieldByName("Nom_Du_Champ")->AsInteger // ou AsString ,ou AsDateTime, etc....
     
      // tu test value 
       tQCodeAleatoire->Next() ;
    }

  3. #3
    Membre �clair� Avatar de devlopassion
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Ao�t 2006
    Messages
    576
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 44
    Localisation : Madagascar

    Informations professionnelles :
    Activit� : Assistant aux utilisateurs

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 576
    Par d�faut
    bonjour,
    je ne sait pas si j'ai bien compri ton probleme , mais si tu cherche ou se trouve les r�sultat de ta requ�te , et bien ils son dans "tQCodeAleatoire", que tu peux l'utilis� comme une simple table ADO , par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    if (tQCodeAleatoire->FieldByName("Entree_Effectuee")->Value=false)
    ShowMessage (".....");

  4. #4
    Membre averti
    Profil pro
    DevOps
    Inscrit en
    Ao�t 2008
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : DevOps

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 10
    Par d�faut
    Merci bien pour vos r�ponses j'ai pu finir cette partie de mon code sans

  5. #5
    Membre averti
    Profil pro
    DevOps
    Inscrit en
    Ao�t 2008
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : DevOps

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 10
    Par d�faut
    Bonjour,

    je reviens vers vous pour une nouvelle question concernant les r�sultats de requ�te SQL. Le but �tant d'effectuer une requ�te sur une base mdb qui ne renvoie qu'un seul r�sultat, et de modifier plusieurs champs de ce r�sultat.

    Les champs sont :

    test1 de type text
    test2 de type bool
    test3 de type date/heure

    Apr�s l'�xecution de la requ�te je dois :

    -ajouter un texte dans le champ test1
    -passer le champ test2 � Vrai
    -ajouter la date et heure au moment de la modification dans test3

    D'appr�s ce que j'ai trouv� comme infos le r�sultat de la requ�te renvoie un tableau de Variant, mais comment modifier mes champs ???


    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
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
            ShowMessage("fermeture sql");
            ADOQuery1->Close();
            ADOQuery1->SQL->Clear();
            ShowMessage("creation requete");
            ADOQuery1->SQL->Add("SELECT * FROM Contact WHERE societe = '6650'");
            ShowMessage("execution requete");
            ADOQuery1->Open();
            ShowMessage("goto first");
            ADOQuery1->First();
            ShowMessage(ADOQuery1->FieldByName("test2")->AsString);
            //affiche "Faux"
            ADOQuery1->Append();
            ShowMessage("modification champ test1");
     
    //---------code qui renvoie une erreur----------------------------
            //modifier le champ test1 qui est à la base un champ de type text
            ADOQuery1->FieldValues["test1"]=Variant("essai");
            //modifier le champ test2 qui est à la base un champ de type bool
            ADOQuery1->FieldValues["test2"]=Variant("Vrai");
            //ajouter la date et l'heure dans le champ test3
            //code inconnu
    //--------------------------------------------------------------
     
    ADOQuery1->Post();
    }
    Merci d'avance pour vos r�ponses...

  6. #6
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Salut,
    pour modifier une valeur dans ta table, il faut que tu passe �galement par des requ�te sql, ici ce sera une requ�te de type UPDATE et tu aura un code du style suivant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
            ShowMessage("fermeture sql");
            ADOQuery1->Close();
            ADOQuery1->SQL->Clear();
            ShowMessage("creation requete");
            ADOQuery1->SQL->Add("UPDATE ... suite de la requete");
            ShowMessage("execution requete");
            ADOQuery1->ExecSQL();
    Note bien qu'il faut ex�cuter cette requ�te par la fonction ExecSQL et non Open car cette requ�te modifie la base

  7. #7
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Effectivement utilise une requete UPDATE :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
            ADOQuery1->SQL->Clear();
            ADOQuery1->SQL->Add("UPDATE MaTable");
            ADOQuery1->SQL->Add("SET Champ1 = " + QuotedStr("Valeur du Champ"));
            ADOQuery1->SQL->Add(", Champ2 = 1");
            ADOQuery1->SQL->Add(", Champ3 = " + QuotedStr( DateTimeToStr(Date()));
            ADOQuery1->SQL->Add("WHERE [condition]");
            ADOQuery1->ExecSQL();

  8. #8
    Membre averti
    Profil pro
    DevOps
    Inscrit en
    Ao�t 2008
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : DevOps

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 10
    Par d�faut
    merci pour ces r�ponses rapides

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 6
    Dernier message: 21/08/2012, 23h13
  2. remplir un Tableau avec le r�sultat d'une requ�te SQL
    Par Jean-Claude Dusse dans le forum ASP.NET
    R�ponses: 13
    Dernier message: 23/02/2009, 15h00
  3. Exploiter les r�sultats d'une requ�te SQL
    Par grinder59 dans le forum C#
    R�ponses: 2
    Dernier message: 29/01/2009, 11h36
  4. [SQL] Comparer r�sultat d'une requ�te Sql avec php
    Par nicoxweb dans le forum PHP & Base de donn�es
    R�ponses: 4
    Dernier message: 04/09/2007, 22h46
  5. R�ponses: 1
    Dernier message: 25/06/2007, 16h33

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