Importer des données de plusieurs tables dans un même Dbgrid

overtaker Messages postés 8 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 17 mai 2010 - 27 mars 2010 à 14:05
beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 - 27 mars 2010 à 19:23
Salut...
J'ai un petit problème.
Je développe une application en delphi et l'un des formulaires permet d'afficher une liste dans un dbgrid selon un mois donné.
Les données que je dois afficher dans le dbgrid proviennent de tables différentes et c'est justement ça mon problème. Comment faire entrer des données de plusieurs tables dans un même dbgrid. En d'autres termes, je veux par exemple que les données qui doivent s'afficher dans les 3 premières colonnes proviennent d'une table a, et que les données qui doivent s'afficher dans le reste des colonnes proviennent d'une table b...
Aidez moi svp... moi j'arrive pas à le faire

3 réponses

beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
27 mars 2010 à 18:21
bonjour,

utiliser un composant TQuery est une solution.
0
overtaker Messages postés 8 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 17 mai 2010
27 mars 2010 à 19:05
oui... je connais ce composant... je l'ai même déjà utilisé dans l'application, dans d'autres formulaires. Mais jusque là, je n'avais pas encore importé des données de plusieurs tables dans le même dbgrid. Ce que je veux savoir c'est s'il y a un paramétrage à faire sur TQuery ou s'il y un code particulier à écrire pour le faire. Voici un exemple de code que j'ai déjà écrit lorsqu'il s'agit d'une seule table cette fois.

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select Matricule, Nom, Prenom, Sexe, categorie from Agent');
Query1.SQL.Add('Order By Nom, Prenom');
Query1.ExecSQL;

//Remplissage des colonnes de tab1
DBgrid1.Columns[0].FieldName := 'Matricule';
DBgrid1.Columns[1].FieldName := 'Nom';
DBgrid1.Columns[2].FieldName := 'Prenom';
DBgrid1.Columns[3].FieldName := 'Sexe';
DBgrid1.Columns[4].FieldName := 'Categorie';
Query1.Open;

Y a t il quelque chose à ajouter à ce code pour que mon problème soit résolu? je veux dire pour que cette fois je puisse importer des données de plusieurs tables dans ce même dbgrid
0
beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
27 mars 2010 à 19:23
Bonsoir,

tout d'abord on n'importe pas les données dans un dbgrid, on les affiche...

Pour afficher les données de plusieurs tables, ces tables doivent être jointes par une colonne. Par exemple :

create table toto (
id_toto integer not null,
label_toto varchar(20) not null);

create table titi (
id_titi integer not null,
label_titi varchar(25) not null,
id_toto integer);

insert into toto values (1, "premier enregistrement");
insert into toto values (2, "second enregistrement");
insert into toto values (3, "troisième enregistrement");
insert into titi values (10, "premièrement", 1);
insert into titi values (30, "troisièmement", 3);
insert into titi values (40, "quatrièmement", 4);

select toto.id_toto, toto.label_toto, titi.label_titi from toto inner join titi on toto.id_toto = titi.id_titi;


cette requête devrait afficher :
1 "premier enregistrement" "premièrement"
3 "troisième enregistrement" "troisièmement"
0
Rejoignez-nous