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 :

Tutoriel sur le BDE ? (et question en même temps!)


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 14
    Par défaut Tutoriel sur le BDE ? (et question en même temps!)
    Bonjour,

    j'ai tenté de trouver mais en vain. Existe-t-il un tutoriel (français ou anglais) sur le BDE (Borland Database Engine) ? Il est à préciser que je ne suis qu'un débutant en SQL...


    Sinon, j'ai une question toute simple (enfin, à première vue).

    Je me connecte à une base de données en utilisant l'objet TDatabase, tout va bien jusqu'à maintenant.

    Je fais une requête SQL avec l'objet TQuery. Tout fonctionne #1, aucune erreur.

    Maintenant, ma requête SQL est en fait un SELECT, je m'attends donc à recevoir un résultat.

    Et c'est là tout mon problème. Peut-être que je vois ça trop simplement et que c'est peut-être un peu plus compliqué que je ne le pensais.

    Alors ma question la voici: Je veux faire afficher le résultat dans un objet de type Memo (ou peut-être DBMemo), comment m'y prendre ?

    J'ai cru lire par-ci par-là qu'avant toute chose je devais fetcher le résultat, et encore là, je "bogue" à cette étape.

    Enfin, si quelqu'un aurait quelques pistes à me suggérer, ce serait grandement apprécié !

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    Salut !!
    Pour le BDE, j'ai jamais vu de tuto, mais il en existe sûrement. Que veux-tu savoir là dessus?Utuilise l'aide de builder et demande ici..tu auras sûrement une réponse
    Pour ce qui est de ton problème de code, je n'ai pas Builder sous la main, mais je vais essayer de me souvenir de quelques lignes de code..
    Pour faire un select du champ "toto" et le sélectionner ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TQuery->Close();
    TQuery->SQL->Clear();
    TQuery->SQL->Add("SELECT toto FROM Table");
    TQuery->Prepare();
    TQuery->Open();
    //On mets la valeur de toto dans un AnsiString ici
    AnsiString Toto = TQuerytoto->Value;
    //Ensuite , tu prend ta variable Toto et tu la mets dans ton Mémo..
    Voilà... CQFD...
    Si tu as d'autres problèmes, n'hésite pas.Si ca fonctionne, n'oublie pas le tag [Résolu]devant ton post...
    Cordialement

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 14
    Par défaut
    Merci beaucoup,

    mais il y a toujours un petit problème

    La propriété Value de la classe TQuery n'existe pas ? :o


    ***

    Après un peu de lecture (ça fait toujours du bien ), j'en suis venu à ce code un peu simpliste mais qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Query1->Close();
            Query1->SQL->Clear();
            Query1->SQL->Add("SELECT Nom_Film FROM film_tbl Film_tbl");
            Query1->Prepare();
            Query1->Open();
            Memo1->Lines->Text = Query1->FieldValues["Nom_Film"];
    Maintenant, c'est encore assez simple (je crois) ce que je veux faire:

    Présentement, j'ai seulement la première entrée de mon champ Nom_Film, lors de ma requête, il y en a plus d'un...

    Par exemple, si j'ai 10 entrées (mais j'imagine peut-être qu'il y a une propriété à quelque part qui me dit combien j'ai eu de réponses (de lignes) ?. Je me fais une petite boucle qui peut inscrire le tout à des lignes différentes de mon mémo.

    Là où j'accroche encore, c'est de savoir quelle propriété ou fonction me permet de 'naviguer' à travers mes résultats...

    Merci encore!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    Le code donné ici est bon.
    regarde maintenant si tu as bien défini le champ "Toto" dans ta table et requete.
    Double-Clique sur ton composant TTable et TQuery et regarde bien si le champ "toto" est renseigné dans les 2 composants.
    A partir de là le code est bien ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString Toto = TQuerytoto->Value;
    La valeur ici est donc bien celle du champ Toto après ta requete SQL.
    Cordialement

  5. #5
    Membre averti
    Inscrit en
    Février 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 14
    Par défaut
    Voici le message d'erreur lorsque je tente d'accéder à la propriété Value:

    [C++ Error] main.cpp(43): E2316 'Value' is not a member of 'TQuery'

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    Si tu veux te déplacer à travers ta requete, tu dois , comme tu l'as dit faire une boucle et chaque fois avancer de 1 unité par exemple avec Next ici...
    Tu défini alors 2 requetes , une pour ton SELECT et l'autre pour la boucle.

    Cordialement

  7. #7
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    pour "naviguer" dans les enregistrements renvoyés par ta requête, tu peux utiliser les méthodes Next() et Prior(). Il y a également les méthode First() et Last() qui te renvoient sur le premier et le dernier enregistrement.
    Petite remarque sinon, la méthode FieldValues est plutôt gourmande car elle renvoie un Variant et permet de s'affranchir du type de la donnée. Sachant que tu manipules une chaîne de caractères, tu peux très bien utiliser la méthode FieldByName.

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Query1->Close();
    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT Nom_Film FROM film_tbl Film_tbl");
    Query1->Prepare();
    Query1->Open();
    Query1->First();
    while(!Query1->Eof())
    {
      Memo1->Lines->Add(Query1->FieldByName("Nom_Film")->AsString);
      Query1->Next();
    }
    Bon courage

    Eric

  8. #8
    Membre averti
    Inscrit en
    Février 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 14
    Par défaut
    Merci beaucoup à vous deux !

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

Discussions similaires

  1. [AC-2010] Afficher/cacher champs sur demande et pas tous en même temps
    Par laznic23 dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/05/2014, 08h02
  2. Réponses: 2
    Dernier message: 23/05/2010, 10h24
  3. Forum sur lequel on s'identifie en même temps que sur le site
    Par Nix6800 dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 10/10/2008, 11h48
  4. Réponses: 13
    Dernier message: 10/12/2005, 13h34
  5. [Débutant] Question de base sur le BDE et les SGBD
    Par Invité dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/03/2005, 08h45

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