Bon comme le dit le titre nous n'arrivons pas à parcourir un Db_grid ligne par ligne qui est connecté a une base de données ACCESS 97.
Alors s'il vous plait, aidez-nous !!!!
On lutte trop !!!
Merci d'avance
![]()
![]()
![]()
Bon comme le dit le titre nous n'arrivons pas à parcourir un Db_grid ligne par ligne qui est connecté a une base de données ACCESS 97.
Alors s'il vous plait, aidez-nous !!!!
On lutte trop !!!
Merci d'avance
![]()
![]()
![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var monDataset : TDataset; begin monDataset := maDBGrid.dataset; monDataset.First; while not monDataset.Eof do begin //... monDataset.Next; end;
sniff sniff cmen76, TDataset est non déclarer, Delphi le ne connais pas !!??
Je comprend pas !!
merci qd meme
Parcours la table qui est utilisé par la DBGrid et pas la DBGrid en elle meme![]()
Si la DBGrid est reliée par sa propriété Dataset à la table, le parcours de la table fait un parcours de la DBGrid.
C'est le principe même des composants orientés DB.
De plus, le uses DB doit se mettre automatiquement dès la conception quand on relie la dbgrid au dataset
Ca ressemble à une histoire de fou ; envoie le .dfm et le .pas
le uses db ne se met pas tout seul si le dataset est ailleurs que sur la fiche utilise (dans un datamodule par ex), c donc normal qu'il ai pas le DB dans uses![]()
Avec quels composants ta base de donnée est-elle connectée ?
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 procedure dbgridtostringgrid(db:tdbgrid;str:tstringgrid); var ta:tdataset; // dataset est le lien de donné de la base du dbgrid i,j:integer; // compteur de parcours begin ta:=db.DataSource.DataSet; //on récupère le dataset dans ta if ta.Filtered then //on place le pointer sur le premier élément du filtre si le dbgrid est filtré ta.FindFirst else ta.First; //sinon on place le pointer sur le premier élément j:=0; //initialisation de j str.RowCount:=1; str.FixedCols:=0; //nombre de colonne fixe (gris) str.ColCount:=db.Columns.Count; //on ajuste le nombre de colonne du stringgrid en fonction du dbgrid for i:=0 to db.Columns.Count-1 do //on parcours toutes les colonnes de la première ligne pour ajuster la ligne fixe begin str.Cells[i,0]:=db.Columns.Items[i].FieldName; end; while not ta.Eof do //tant que l'on a pas atteint la fin des données begin j:=j+1; //on incrémente le conteur de ligne (pour le stringgrid) str.RowCount:=str.RowCount+1; //on ajoute une ligne dans le stringgrid for i:=0 to db.Columns.Count-1 do //pour toutes les colonnes on recopie les données str.Cells[i,j]:=db.Columns.Grid.Fields[i].AsString; ta.Next; //on passe à la prochaine ligne de la source de données end; if str.RowCount>1 then str.FixedRows:=1; //si il y a au moins une ligne, la première est fixe end;
Partager