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 :

StringGrid ou DBGrid ?


Sujet :

C++Builder

  1. #1
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut StringGrid ou DBGrid ?
    Bonjour,

    Voila j'ai une appli en rapport avec une base de donn�es, j'ai cr�� une interface afin de lister le contenu de ma base en fonction de certains crit�res...

    donc ma form se compose de TEdit etc...ou je taperai les premi�res lettres de mes mots cl�s, et donc en dessous je suis cens� mettre un "tableau".

    Donc StringGrid ou DBGrid d'apr�s vous?

    Dans tous les cas je suis bon pour faire des requ�tes sql visant � chercher des infos dans ma base mais bon, la question la est plus sur le cot� esth�tique.

    merci d'avance de me donner votre avis

  2. #2
    Membre �prouv�
    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 : 54
    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
    Par d�faut
    Bonjour,

    De mon c�t�: de toutes facons, vu que cela est en rapport avec une base de donn�es, c'est DBGrid de suite afin de pouvoir profiter facilement de toutes les fonctionnalit�s "d'acc�s aux donn�es", etc ... et ne pas devoir tout g�rer/r��crire soit m�me.
    Apr�s pour un point de vue esth�tique, je ne suis pas sur de toutes mani�res que la StringGrid puisse �tre plus "belle" que la DBGrid, et en g�rant les �v�nement de "rendu" et de dessin de la grille et de ses �l�ments, ya moyen surement d'am�liorer / customiser l'aspect de la chose.

    @+

  3. #3
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut
    Donc pour toi, DBGrid serait la meilleure solution.

    D'un certain cot�, c'est logique, c'est orient� BDD.

    Je tente la chose...alors

    merci

  4. #4
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Je dirait DBGrid aussi.

    Au passage, tu n'est pas obliger de faire appel � du sql pure pour ta recherche. Pour info, voinci un bout de code tir� d'un programme que j'ai fait :

    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
    void __fastcall TRechercheMem::Edit1Change(TObject *Sender)
    {
    if((Edit1->Text!="")&&(Edit2->Text==""))
    appel->Membres->Filter="archiver = 0 AND nom LIKE '"+ Edit1->Text + "%'" ;
    if((Edit1->Text=="")&&(Edit2->Text!=""))
    appel->Membres->Filter="archiver = 0 AND prenom LIKE '"+ Edit2->Text + "%'";
    if((Edit1->Text!="")&&(Edit2->Text!=""))
    appel->Membres->Filter="archiver = 0 AND nom LIKE '"+ Edit1->Text + "%' AND prenom LIKE '"+ Edit2->Text + "%'";
    if((Edit1->Text=="")&&(Edit2->Text==""))
    appel->Membres->Filter="archiver = 0 OR archiver = NULL";
    }
    void __fastcall TRechercheMem::Edit2Change(TObject *Sender)
    {
    Edit1Change(Sender);
    }
    Edit1 contien le nom � recherche, edit2 le pr�nom.
    appel->Membres et un TADOTable.
    Le code s'ex�cute sur l'�venement OnChange des 2 TEdit de mani�re � changer de facon dynamique.

  5. #5
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut
    C'est valable surtout si tu n'as qu'une seule table.

    Moi mes crit�res de recherches sont au dela d'une table, ils se font sur 2 tables.

    Donc je suis surement oblig� de faire des requetes ?

  6. #6
    Membre �prouv�
    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 : 54
    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
    Par d�faut
    Tout a fait, mais ca ne change rien.
    Garde toutes les capacit�s de liaison avec tes donn�es via le DBGrid, et les objets orient�s DB que tu vas utiliser (TQuery, TDatasource, etc ou autre), et travaille sur les �v�nements "OnDraw..." de la DBGrid pour customiser le dessin / l'aspect de la grille.

    @+

  7. #7
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut
    le hic c'est que je n'arrive pas � faire mes liens entre DBGrid et Base de donn�es.

    Dans mon projet j'ai mes Forms, un DataModule (ou se trouve mon TQuery,et mes TTables)

    donc sur la form ou se trouve mon DBGrid, j'ai mis un DataSource qui pointe vers DataModule->Tquery

    le DBGrid � la propri�t� DataSource param�tr�e vers le TDataSource de la form.

    Mais apr�s je ne sais pas comment faire une requete pour ne remplir qu'une seule colonne par exemple, et/ou une seconde colonne � partir d'une autre table...


    Faire un DBGrid sur une table ok je sais faire, mais vers plusieurs tables je n'y arrive pas...

    merci d'avance

  8. #8
    Membre �prouv�
    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 : 54
    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
    Par d�faut
    Bonjour,

    Oui mais la, si je comprends bien ton probl�me, c'est un soucis de SQL et non plus un probl�me avec builder. Tu dois effectivement faire une requ�te (que tu mettra dans la propri�t� "SQL" de ton TQuery) qui va te ressortir les colonnes dont tu as besoin dans les tables dont tu as besoin.

    Donc peut �tre cela vaut il la peine de jeter un oeil sur les FAQ/forums de developpez.com (�videmment ) qui concernent le type de Base de donn�es sur laquelle tu travailles, afin de trouver ton bonheur.

    Sinon, effectivement, tu peut toujours d�crire ici le type de tables, les champs, et les jointures / relations entre eux afin que qqu'un t'aide a faire le SQL.

    C'est quoi au fait comme BDD ?
    @+

  9. #9
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut
    Je taf sur une bdd MySql.

    J'ai bien saisi qu'il faut que je modifie la valeur "SQL" du TQuery (sans doute par le code?), mais je ne vois pas quand ? (sur un OnShow ?) et surtt � quelle propri�t� de mon DBGrid l'appliquer (Columns->Item ?).

    merci d'avance

  10. #10
    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
    Citation Envoy� par Freud44 Voir le message
    Je taf sur une bdd MySql.

    J'ai bien saisi qu'il faut que je modifie la valeur "SQL" du TQuery (sans doute par le code?), mais je ne vois pas quand ? (sur un OnShow ?) et surtt � quelle propri�t� de mon DBGrid l'appliquer (Columns->Item ?).

    merci d'avance
    Pour effectuer ta requ�te SQL via un TQuery c'est tout simple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    myQuery->Active = false ;
    myQuery->SQL->Clear() ;
    myQuery->SQL->Add( "SELECT CHAMPS1, CHAMPS2 FROM MATABLE" ) ;
    myQuery->Active = true ;
    Comme ton DBGrid est reli� � ton Query (via le DataSource) il contiendra automatiquement le r�sultat de la requ�te. Ce qu'il faut bien comprendre, c'est que tu travail sur ton TQuery, et pas directement sur ton TDBGrid (qui ne fera que afficher les donn�es contenu dans ton TQuery).

  11. #11
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut
    Oki!

    merci de l'infos, par contre, dans la DBGrid, au niveau des diff�rentes colonnes, dois obligatoirement ajouter le nom d'un champ dans la partie "FieldName" ?
    Je suppose que oui, sinon ma requ�te ne fonctionnera pas.

  12. #12
    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
    Si ton DBGrid est destin� a contenir le m�me type de donn�e (<=> la m�me requ�te) tu peux effectivement pr�parer en mode conception:

    - Compl�ter la propri�t� SQL de ton TQuery
    - double-clic sur ton TQuery, puis clic-droit Ajouter des Champs
    - S�lectionne les champs que tu souhaite afficher dans ton DBGrid
    - double-clic ensuite sur ton DBGrid (ou va dans la propri�t� Columns)
    - Clic sur Ajouter tous les champs

    Tu peux ensuite modifier la taille des colonnes, le nom des colonnes, etc...

  13. #13
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut
    Je viens de tester une requ�te faites dans le vide, et effectivement elle remonte un de mes champs,
    j'ai alors tent� ceci, faire une seconde requ�te � la suite, et au final sur mon DBGrid, ne remonte qu'un seul champ...

    Il doit bien falloir faire une requ�te sur un �v�nement bien pr�cis non?

Discussions similaires

  1. DBGrid ou StringGrid ou autre
    Par exyacc dans le forum Composants VCL
    R�ponses: 17
    Dernier message: 04/11/2014, 12h25
  2. Copier un stringgrid vers un dbgrid
    Par uriel2k dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 22/02/2010, 16h46
  3. copi� les donn�es de DBGrid dans un StringGrid
    Par faniette dans le forum C++Builder
    R�ponses: 12
    Dernier message: 07/11/2009, 17h04
  4. D'un DBGrid � un StringGrid
    Par nanine85 dans le forum Bases de donn�es
    R�ponses: 1
    Dernier message: 29/05/2009, 11h38
  5. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de donn�es
    R�ponses: 7
    Dernier message: 24/08/2004, 15h18

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