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

Bases de données Delphi Discussion :

[Débutante] Relation entre DBGrid et la Base de Données


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut [Débutante] Relation entre DBGrid et la Base de Données
    Bonjour,

    j'aurais voulu avoir des renseignements.
    J'ai une fênetre qui affiche deux "tDBGrid" pour la première je n'ai eu aucun problème pour la créer et la relier à ma base de données.

    Cependant pour la deuxième, la création est faite mais j'ai un souci avec la base de donnée.
    J'utilise les memes nom pour les deux "TDBGrid" avec une condition en plus pour la deuxieme, si c'est "oui" elle s'affiche sinon non.

    Or quand je rentre mes données dans la première, elles s'inscrivent également dans la deuxième "DBGrid".
    Est-ce normale? D'où peux venir mon problème?

    Je vous remercie de votre aide, en espèrant avoir été assez claire.

    merci

    Lilo

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Les deux DbGrid doivent partager le même Datasource d'où le fait que les données se répercutent de l'une à l'autre.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut
    Merci de m'avoir réopndu.

    Est-ce possible de ne pas afficher mes données dans la deuxième DBGrid??

    Merci d'avance

    Lilo

  4. #4
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Points : 119
    Points
    119
    Par défaut
    Une grille de type TDBGrid va afficher les données qui sont dans ta base. Dès que tu rentres tes données dans ta première grille, elles sont ajoutées à la base de données et donc la base informe ta deuxième grille qu'elle a été modifiée, donc la deuxième grille se met à jour pour afficher les nouvelles données.

    J'utilise les memes nom pour les deux "TDBGrid" avec une condition en plus pour la deuxieme, si c'est "oui" elle s'affiche sinon non.
    Qu'appelles-tu j'utilise les mêmes noms pour les deux tdbgrid.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut
    En faite pour plus de Précisions.

    J'ai une "DBGrid" pour afficher les" élèves" et disons une autre "DBGrid" pour afficher les " professeurs" .
    Donc dedans on retrouve le nom, le sexe, date de naissance, etc...

    J'ai creer un champ dans ma base de données pour dire que si c'est un "professeur" ça va dans la deuxieme "DBGrid" mais j'arrive pas à le faire, ça s'inscrit dans les deux.

  6. #6
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Les élèves et professeurs sont t'ils dans la même table ?
    Si oui : ta DBGRID doit être peuplée par une requète (une requète différente par DBGRID).
    Si non : chaque DBGRID pointe sur une table différente.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut
    En effet les élèves et les professeurs sont sur la même table.

    Donc je dois créer une rêquete différente par DBGrid.
    Excusez moi d'avance pour la question mais: est-ce qu'on peut directement écrire le requête dans le code??
    et si oui, vous avez un petit exemple simple pour pas que je me trompes pas.

    Merci d'avance pour votre aide.

    Lilo

  8. #8
    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 Lilo415,

    Personnellement, pour ce qui est des requêtes SQL, j'utilise :

    - un DataSource
    - un TQuery(pour ma requête)
    - un DBGrid.

    On renseigne le champs DataSet du DataSource en lui mettant le TQuery concerné.
    Pour le DBGrid, on renseigne le DataSource par celui du composant DataSource.

    Ensuite, pour ta requête, ca ressemblerait à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from maTable where statut=Professeur');
    Query1.Open;
    J'espère que c'est bon car de tête, on est jamais sur de rien

  9. #9
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Disons que un DBGRID est rempli par un TDATASOURCE auquel est associé un TDATASET, ça je pense que c'est oK pour toi.
    EN fait ce TDATASET peut être, par exemple si tu utilises une base ADO (Access), un TADOQuery qui a une propriété SQL que tu renseigne avec la requète qui t'interesse.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut
    ok, merci ero-sennin et philnext pour vos réponses.

    Je vais tester et voir si ça marche.

    Encore merci de votre aide.

    Lilo

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut
    Petit récapitulatif.

    Si j'ai bien compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from maTable where statut=Professeur');
    Query1.Open;
    Query1 => je le remplace par le nom de ma DataSource ?

    mais je vois pas comment mettre le nom du DataSet avec cette exemple!


    merci d'avance

    Lilo

  12. #12
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Citation Envoyé par lilo415
    Query1 => je le remplace par le nom de ma DataSource ?
    Je vais essayer d'être précis.

    Sur ta form tu dois avoir:

    • 2 Query
    • 2 DataSource
    • 2 DBGrid


    1° Etape: Tu renseignes les instructions SQL pour chacun de tes Query.
    Code QueryProf : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      select * from PERSONNEL
      where STATUT = 'Professeur'
      order by NOM;
    Code QueryEleve : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      select * from PERSONNEL
      where STATUT = 'Elève'
      order by NOM;

    Ensuite tu relies tes 2 DataSources: DataSourceProf et DataSourceEleve respectivement à leur Query: QueryProf et QueryEleve à l'aide de la propriété DataSet.

    Et enfin, tu relies les DBGrid à leurs DataSource à l'aide de leurs propriétés DataSource:
    DBGridProf relié à DataSourceProf et
    DBGridEleve relié à DataSourceEleve.

    Voilà pour le principe.

    [edit] Avec les conseils supplémentaires de Yurck et Malatar, tu devrais t'en sortir [/edit]

    @+ Claudius

  13. #13
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from maTable where statut=Professeur');
    Query1.Open;
     
    Datasource1.dataset := Query1;
    Grille1.datasource := Datasource1;
     
    Query2.SQL.Clear;
    Query2.SQL.Add('Select * from maTable where statut=Eleve');
    Query2.Open;
     
    Datasource2.dataset := Query2;
    Grille2.datasource := Datasource2;
    Bonne chance.

    La prochaine question c'est comment faire apparaître dans la grille2 Les éléves du professerur actif de la grille 1 ?

    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  14. #14
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    je pense que tu devrais aller voir les tutoriels sur les bases de données car tu as encore quelque lacune sur leurs focntionnement.

    normalement :
    1- Un DbGrid pour afficher les données d'une source de données (TxxTable, TxxxQuery, TxxxStoredProc, etc) doit être relié à ceux-ci par un DataSource
    2- Un DataSource pour fournir les données aux composants Db (DbGrid,DbEdit, etc...) doit être relié à un composant DataSet (TxxxTable,TxxxQuery, etc).

    oui je sais c'est redondant comme explication, mais j'utilise la méthode couet (euh .. ca s'ecrit comme ca ?) pour que ca rentre mieux

    Pour ce que tu veux faire il te faut 2 requetes,2 dataSource et 2 DbGrid
    La première requete renverra la liste des élèves la deuxieme la liste des profs
    Après il te reste plus qu'a lié tous cela correctement

    QueryEleve -> DataSourceEleve -> DbGridEleve
    QueryProf -> DataSourceProf -> DbGridProf
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Je vous remercie de votre aide.

    Je vais essayer tester ce que vous m'avez donnée , en espèrant réussir. Et je lirais le tutoriel car je suis débutante et donc j'ai de grosses lacunes.

    En tout cas merci.

    Lilo.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/08/2010, 16h11
  2. Jointure entre table de différentes bases de données
    Par iLoLo21 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/01/2009, 15h35
  3. Comment créer une connexion entre Delphi et une base de données ?
    Par pttangediabolik dans le forum Débuter
    Réponses: 2
    Dernier message: 29/04/2008, 15h59
  4. relation 0..1 __ 1..* => base de donnée
    Par luna007 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 30/08/2007, 02h42
  5. [débutant] besoin d'aide pour une Base de Données
    Par james-mi dans le forum Ruby
    Réponses: 6
    Dernier message: 12/03/2007, 01h17

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