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 :

commande de recherche pour une base de donnée


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut commande de recherche pour une base de donnée
    Bonsoir a tous.

    J'ai créer un formulaire ( un enregistrement de clients ) qui stock son nom prenom, etc... dans une base de donnée.

    Je voudrais que lorsque je clic sur le bouton valider que le programme recherche dans la base de donnée pour savoir si il n'existe pas deja par exemple : dupont qui est deja créer.

    J'ai lu dans le tuto qu'il fallait utiliser la comande Tquery mais je suis bloquer apres.

    Si vous pouvez m'eclairer un peu

    merci

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    le TQuery te permet d'exécuter des requêtes SQL. Avec la méthode Add() on place le texte de la requête (AnsiString).


    Voilà un exemple (il doit y a voir des fautes de frappe ) :
    Code c++ : 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
     
    int n;
     
    Query->SQL->Clear();   // on vide le contenu
    Query->SQL->Add("SELECT * FROM ':nomBase:nomTable'");
    Query->SQL->Add("WHERE NOM='Dupont'");
    try
    {
        Query->Open();  // exécution de la requête
     
         n = Query->RecordCount;  // nombre d'enregistrements
         if (n!=0)
                MessageBox(this->Handle, "Au moins un nom trouvé !", "Résultat de la requête", MB_OK);
    }
    catch(...)
    {
        MessageBox(this->Handle, "Erreur", "", MB_OK);
    }
    nomBase est le nom de la base de la table :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Table->DatabaseName
    nomTable est le nom de la table
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Table->TableName
    Il te faudra sans doute faire des concaténations de chaines de caractères.


    Attention : il y a la méthode Query->Open() et la méthode Query->ExecSQL() (j'ai un doute sur la syntaxe).
    En fonction de la requête, il faudra utiliser soit l'une soit l'autre méthode.

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Le TQuery, comme l'a dit Auteur, permet d'exécuter une requête SQL.
    Il faut renseigné la propriété DataBaseName et lui dire le nom de la base de donnée que tu utilises.

    Une fois fait, tu renseignes la requêtes à faire et tu l'exécutes.


    Par Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Query1->SQL->Clear();
    Query1->SQL->Add("Select * from MaTable Where nom=:leNom"); 
    // On définit la valeur du paramètre leNom
    Query1->ParamByName("leNom")->AsString="Dupond";
    // On exécute la requête
    //(ExecSQL s'utilise pour des Insert,Delete,Update et create table).
    Query1->Open();
    Maintenant, on regarde si on a un enregistrement qui nous a été retourné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (Query1->RecordCount > 0)
      ShowMessage("Ce nom est déjà présent dans la base de données")
      else
      //traitement
    Voilà
    En espérant t'avoir aidé

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    ca ne marche pas avec une base de donnée paradox 7.0 ?

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par bullrot Voir le message
    ca ne marche pas avec une base de donnée paradox 7.0 ?
    euh si... Ce sont les formats que j'utilise.

  6. #6
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut
    il y a aussi cette maniere aussi si tu recherche un enregistrement.
    si ce n'est pas une cle primaire tu met ce code dans une boucle dont la
    condition sera : tant que locate(...) == true

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        FORCE->Text="";
       SAYEN->Text = "vegeta";
     
       TLocateOptions Option;
     
      if ( Table2->Locate("NOM",SAYEN->Text,Option) == true )
     
         FORCE->Text = Table2->FieldByName("FORCE")->AsString;

    @+

Discussions similaires

  1. Quels logiciels de modélisation pour une base de données ?
    Par octopus dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 11/06/2023, 16h20
  2. Créer un bouton recherche et zone de texte pour une base de données excel
    Par Jeremy2109 dans le forum Macros et VBA Excel
    Réponses: 37
    Dernier message: 13/03/2015, 09h12
  3. Réponses: 1
    Dernier message: 21/10/2009, 17h26
  4. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h14
  5. Créer un index pour une Base de données
    Par john7 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/01/2005, 21h43

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