bonjour,
je voudrais savoir comment compter le nombre de lignes d'une DBGrid, pour
l'afficher à travers un label.caption
merci
bonjour,
je voudrais savoir comment compter le nombre de lignes d'une DBGrid, pour
l'afficher à travers un label.caption
merci
On ne compte pas les lignes d'un DbGrid, mais les "lignes" (enregistrements) de l'ensemble de données source. Là on peut utiliser RecordCount, même si ce n'est pas 100 % fiable dans certains cas, ou alors lancer une requête qui ramène le nombre d'enregistrements.
Effectivement, le RecordCount de tout ce qui peut être TDataSet (TTable, TQuery) ne fonctionne pas du tout lorsque :
- La table ou la requète est filtrée (propriété filter=true) : RecordCount retourne 0 ou 1 (vide ou non vide)
- Lorsqu'elle n'est pas implémentée : retourne toujours -1
La problématique est exactement la même avec la propriété RecNo !
Voir cette FAQ ici pour info :
Comment connaître le nombre de lignes d'un ensemble de résultats avec RecordCount ?
Mais il est possible d'obtenir les valeur exactes, à coup sur, de ces valeurs.
En fait, dans votre cas, il faut utiliser le DataLink (TDataLink) sous-jascent du DBGrid. Par contre c'est une propriété "protected" donc celà necessite une astuce de programmation.
Voici le code qui fait tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 type TPublicCustomGrid=class(TCustomGrid); .... var MonRecordCount, MonRecNo:integer; begin MonRecNo:=TPublicCustomGrid(DBGrid1).FDataLink.ActiveRecord; MonRecordCount:=TPublicCustomGrid(DBGrid1).FDataLink.RecordCount; end;
Mais ca dépend de la base que tu utilises, c'est d'ailleurs spécifié dans la FAQ.
Avec Paradox, le RecordCount marche parfaitement que la table soit filtrée ou non
Que le filtre soit d'ailleurs défini tant au niveau Table.Filter qu'au niveau dynamique 'OnFilter'. Ne serait-ce que faire un refresh de la table avant.
a+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager