Compter le nombre de ligne d'un dbgrid

newgame Messages postés 52 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 24 juillet 2013 - 17 juil. 2013 à 13:03
newgame Messages postés 52 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 24 juillet 2013 - 24 juil. 2013 à 15:16
Bonjour,
Je suis en train de créer une application avec 2 dbgrid
Quand on sélectionne une ligne dans le premier dbgrid le 2eme dbgrid (relation entre les deux tables via masterfield et mastertable)
Maintenant je veux compter les lignes du 2eme dbgrid
Alors si je fais un recordcount il m'affiche le nombre de ligne de la table entière mais pas ceux affiché seulement dans le dbgrid
Que faire dans ce cas????
svp aidez moi!
merci d'avance

7 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
18 juil. 2013 à 15:11
Bonjour,

Regarde l'exemple que j'ai crée dans un de mes sources.

si tu ajoutes dans le OnDataChange :

[code=pas]
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if Sender nil then exit; {sender nil pas de changement d'enregistrement !}
if Field <> nil then exit; {Field = Nil pas de champ donc on sort]
if Self = nil then exit; {la forme n'est pas créée alors on sort}
Edit1.Text := ''; {on vide la zone de texte}

if (Query1SaleDate.Text <> '') and (Query1ShipDate.Text <> '') then {on transtype les dates en texte en DateTime}
if StrToDateTime(Query1SaleDate.Text) < {afin de pouvoir les comparer}
StrToDateTime(Query1ShipDate.Text) then
Edit1.Text := 'SaleDate Inférieure à Shipdate'; {on affiche un message dans Edit1 si le test est vrai}

// ajout
if not query2.active then exit;
ShowMessage('table2' + ' ' + IntToStr(Query2.RecordCount));
end;
/code

ces deux lignes, tu peux constater que le showmessage affiche
le nombre d'enregistrements filtrés de la table 2 et non le total
de toutes les données de cette table.

cantador
0
beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
19 juil. 2013 à 08:39
Bonjour,

@cantador
if Self = nil then exit; {la forme n'est pas créée alors on sort}

comment cela peut-il être possible ?
Une méthode d'objet ne peut pas être appelée si l'instance de cet objet est nul, non ?
ou je n'ai rien compris ;-))
(enfin, cela ne bloque en rien le code).

Luc.
0
newgame Messages postés 52 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 24 juillet 2013
22 juil. 2013 à 10:06
Re,
@ cantador
Bon j'ai plus au moins compris ton code et ce que je peux en résumer c'est que pour connaitre le nombre de lignes d'un DBGrid qui affiche le contenu d'une table lié avec une autre il faut faire un count sur le résultat d'une requête.
c'est ça
0
newgame Messages postés 52 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 24 juillet 2013
22 juil. 2013 à 10:14
Alors mon résonnement est juste?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 juil. 2013 à 11:39
@newgame:
tu as noté comme moi
le query2.Recordcount donne le bon chiffre..

@beckerich
if Sender = nil then exit;

oui, je sais cette ligne fait couler beaucoup d'encre et pourtant
elle est nécessaire dans un cas bien particulier mais dont je ne me souviens pas !
mais elle ne gène pas..

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 juil. 2013 à 11:42
@newgame:
précision:

tu auras aussi noté que la relation entre les deux tables est active en permanence..

attention, aux généralisation dans ce domaine.

cantador
0
newgame Messages postés 52 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 24 juillet 2013
24 juil. 2013 à 15:16
Salut,
Bon j'ai essayé le query.recordcount et ça marche pas que faire alors??
ya t'il d'autre solution??
merci
0
Rejoignez-nous