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 :

Afficher une bdd avec une TBGRID [builder 2007]


Sujet :

C++Builder

  1. #1
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut Afficher une bdd avec une TBGRID [builder 2007]
    Bonjour a tous.

    Voila j'ai une base de donnée avec une table client et je voudrais afficher cette table dans une TBGRID.

    J'arrivais a le faire avec borland 6 mais ici avec la nouvelle version 2007 de codeGear je suis un peu perdu

    J'ai creer un TSQL connection et j'arrive a me connecter.

    Ensuite lorsque je fais le TSQLQUERY il me demande un DATASOURCE et lorsque je le fais et que je cree un TBGRID il me marque qu'il ne peut afficher les données... enfin bref je suis un peu perdu par la procedure a suivre...

    Si quelq'un a deja reussi a faire ca si il pouvais me donner un peu plus d'explication.

    Merci

  2. #2
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    Apres plusieurs essaie j'ai enfin trouver comment afficher ma bdd dans une DBGrid

    Maitenant je suis calé pour inserer des données dans ma table via un formulaire... encore une fois sous builder 6 ca marchais mais ici je suis bloqué.

    J'utilise ma commande :

    AnsiString Nom=Edit2->Text;
    AnsiString Prenom=Edit3->Text;
    AnsiString Adresse=Edit4->Text;

    AnsiString sql ("INSERT INTO 'SQLTable1' ('Nom') VALUES ('"+Nom+"');");


    ShowMessage("Nouveau client créer");
    J'ai mis un TSQLCONNECTION avec un SQLTABLE1... je sais pas si il faut rajouter encore qqchose ?

  3. #3
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    en fait il exécute bien le code mais il n'enregistre pas dans ma table

  4. #4
    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 : 37
    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
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je ne suis pas trop doué dans ce domaine, mais je ne vois pas l'instruction qui fait que tu executes la reqûete SQL

    Il faudrai faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TSQLQUERY->SQL-Clear();
    TSQLQUERY->SQL->Add(sql);
    TSQLQUERY->ExecSQL();
    Je ne suis pas sur de ma façon de faire n'ayant pas BCB sous la main ...

  5. #5
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    Ah oui en effet j'avais oublier de mettre les parametres la.

    Merci Je passe en résolu

  6. #6
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    Ca marche a moitier en fait

    Je rentre via mon formulaire les données ( creer dans un Tfrom1 )

    Puis je clic sur créer le client et il me dit que le client est créer.

    Je lance mon Tform2 via mon menu pour afficher ma liste et je ne vois pas mon nouvel enregistrement !

    Si je recompile mon programme alors je le vois

    Faut t-il relancer qqchose afin de mettre a jour arpres mon button "créer" ?

  7. #7
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Et il n'y a pas de besoin de ' Commit ' sur la base ? A tout hasard ...
    (et donc aussi d'un 'StartTransaction' ou qqchose dans le même genre)

    En espérant t'aider,
    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  8. #8
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    Ce sont des composant ou du code a rajouter car je vois pas de quoi tu parle

  9. #9
    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 : 37
    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
    Points : 4 935
    Points
    4 935
    Par défaut
    Quelle SGBD utilises tu ? Oracle , MySQL, ... ?

  10. #10
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    mysql que j'ai installer avec easyphp

  11. #11
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Pour Commit et StartTransaction, je parlais de méthodes au niveau du TSQLConnection.
    Jettes un oeil, ca peut toujours servir.

    Si je recompile mon programme alors je le vois
    Je n'ai pas fait attention a cela de toutes facons, donc l'enregistrement est bien dans la table ... ?
    Un 'Refresh()' sur le TSQLTable ?
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  12. #12
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    Je vais expliquer en details

    Donc j'ai un Form1 avec un menu principal ( Tmenu)... la je clic sur New client et il m'ouvre la Form pour creer un nouveau client.



    Dans la Form nouveau client j'ai ceci :

    TSQLCOnnection
    TSQLQuery
    TSQLTABLE1

    Ensuite j'ai mon formulaire pour entre nom,prenom,etc... et j'ai le bouton pour enregistrer les valeurs avec le code ici :

    AnsiString nom = Edit2->Text;

    AnsiString prenom = Edit3->Text;

    AnsiString sql("INSERT INTO `clients` (`nom`,`prenom`) VALUES ('"+nom+"','"+prenom+"');");



    NewClients->SQLQuery1->Close();

    NewClients->SQLQuery1->SQL->Clear();

    NewClients->SQLQuery1 ->SQL->Add(sql);

    NewClients->SQLQuery1->ExecSQL();

    ShowMessage("Nouveau client créer");
    La il me dit bien que le client a été créer.



    E,suite je clic sur mon Menu et je vais dans un nouveau Form qui m'affiche la table client ( table mysql ) avec une DBGRID.

    Dans mon forme qui affiche la liste j'ai ceci:

    TSQLCONECTION
    TSQLSIMPLEDATASET
    DATASOURCE

    et j'ai mon DBGRID qui doit afficher ma table.


    Hors si je cree mon client et puis que je vais voir ma table il n'y a pas d'enregistrement par contre si je recompile le programme et que je vais voir l'enregistremet est la.... il faudrait une sorte de refresh..

  13. #13
    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 : 37
    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
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Sunchaser Voir le message
    Bonjour,

    Pour Commit et StartTransaction, je parlais de méthodes au niveau du TSQLConnection.
    Jettes un oeil, ca peut toujours servir.
    Après avoir regardé l'aide de BCB, il y a bien un commit pour le TSQLConnection.
    A mon avis, le commit se fais automatiquement lorsque tu quittes ton application, or, pour bien faire, il faudrait le faire à la main ... voici ce que dit l'aide de BCB :

    La procédure suivante illustre la gestion explicite de transactions à l'aide d'un composant TSQLConnection. Elle utilise deux objets TSQLDataSet pour transférer les fonds. Le premier, appelé Debit, contient une requête de mise à jour paramétrée qui débite un compte. Le second, appelé Credit, contient une requête de mise à jour paramétrée qui crédite un autre compte.
    Dans cet exemple, le serveur interdit l'imbrication des transactions.

    void __fastcall TForm1::TransferButtonClick(TObject *Sender)

    {
    if (!SQLConnection1->InTransaction)
    {

    TTransactionDesc TD;

    TD.TransactionID = 1;
    TD.IsolationLevel = xilREADCOMMITTED;
    SQLConnection1->StartTransaction(TD);
    try
    {
    int Amt = StrToInt(AmtEdit->Text);
    Debit->Params->ParamValues["Amount"] = Amt;
    Credit->Params->ParamValues["Amount"] = Amt;
    SQLConnection1->Commit(TD); // en cas de réussite, les modifications sont validées;
    }
    catch (...)
    {
    SQLConnection1->Rollback(TD); // en cas d'échec les modifications sont annulées

    ShowMessage("Echec du transfert")
    }
    }
    }
    Je ne suis pas sur d'aider beaucoup plus que celà vu que je ne connais pas ce composant ...

  14. #14
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Après avoir regardé l'aide de BCB, il y a bien un commit pour le TSQLConnection
    Tout a fait ... de toutes facons, ne connaissant pas particulièrement l'utilisation de ce genre de composants, j'ai fait une petite recherche la dessus aussi avant d'en parler; et on tombe vite la dessus.
    Je ne dis pas que je suis sur a 100% que ce soit la solution a son problème, mais en revanche, le concept de 'Commit' et autres - lorsqu'on travaille sur un problème de BDD - ne devrait pas vraiment susciter d'interrogations.

    Maintenant, ce qui est fort étrange, c'est que le problème ne semblait pas subvenir avec une ancienne version de Borland, et qu'il apparait la avec le Builder 2007. (c'est bien ce qui est dis au début, su je ne m'abuse ...)
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  15. #15
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    quand je clic sur le bouton créer il me le crée bien car si je regarde dans ma base de donnée mysql je vois ma nouvelle entrée.

    mais si je regarde directement dans ma dbgrid il ne me l'affiche que apres recompilation...

    Donc je suppose qu'il fais bien un commit quand je ferme ma form "creation de client" ?

  16. #16
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    J'ai fait quelque test et apprement le probleme viendrait de mon Form ou J'affiche ma table

    donc via le menu je selction form 2 qui affiche ma table => ok elle s'affiche.
    Je lance phpmyadmin et j'ajoute manuellement une entrée dans ma table
    ensuite je quitte mon form 2 et je relance ma form2 et la : ma nouvelle entrée ne s'affiche pas.

    Donc je pense que mon programme se connecte une fois qu'il memorise la table et ensuite il ne se reconecte plus.. donc y a t-il moyen de reactualiser une table ?


    Dans mon form 2 j'ai :

    TSQLCONECTION
    SQLSIMPLEDATA
    DAtASOURCE

  17. #17
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    J'ai essayer de faire un sqltable1->Refresh(); dans ma formCreate mais le truc c'est que toutes les From sont créer lors de la compilation du programme ( c'est pour cela que ma bdd se met a jour uniquement lorsque je le compile )

    Je voudrais donc que lorsque je clic sur mon menu pour afficher ma form 2 liste des clients qu'il me fasse en meme temp une mise a jour de ma table...

  18. #18
    Membre habitué
    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
    Points : 146
    Points
    146
    Par défaut
    J'ai finalement trouvé

    Enfaite il y a l'option OnCreate et l'option OnActivate et donc il falait rafraichir la SimpleData dans la fonction OnActivate et comme ca la table est rafraichie quand je lance mon Tform via le menu.

    Merci a tous qd meme

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  3. afficher les infos d'une bdd avec un area shape
    Par Invité dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 08/10/2011, 08h37
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

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