titre_site.jpg (51607 octets)

COUNT

Calcule le nombre d'enregistrements de la table qui satisfont aux conditions spécifiées.

Syntaxe

COUNT [<portée>] [FOR <condition 1>] [WHILE <condition 2>] [TO <variable>]

<portée> :

Le nombre d'enregistrements à compter. RECORD <n> identifie un enregistrement unique par son numéro d'enregistrement. NEXT <n> identifie n enregistrements, en commençant par l'enregistrement en cours. ALL spécifie tous les enregistrements. REST spécifie tous les enregistrements à partir de l'enregistrement en cours jusqu'à la fin du fichier.

FOR <condition 1>WHILE <condition 2> :

Détermine les enregistrements affectés par COUNT. FOR restreint COUNT aux enregistrements qui satisfont à <condition 1>, en commençant au premier enregistrement de la table ou de la portée et en continuant jusqu'à la fin de la table ou de la portée. WHILE commence le traitement à l'enregistrement en cours et le poursuit avec chaque enregistrement suivant tant que <condition 2> est vraie.

TO <variable> :

Stocke le résultat de COUNT, un nombre, dans la variable mémoire spécifiée.

 ico_MsDos.jpg (1668 octets)   Description


Utilisez COUNT pour compter le nombre d'enregistrements qui satisfont au critère spécifié. Si SET TALK est à ON, la commande COUNT affiche aussi le total. Si SET DELETED est à ON, les enregistrements marqués pour suppression ne sont pas inclus dans le compteur.
Dans un environnement multi-utilisateur, COUNT verrouille automatiquement la table pendant son opération si SET LOCK est à ON (valeur par défaut) et la déverrouille après l'exécution de COUNT. Si SET LOCK est à OFF, vous pouvez toujours réaliser un comptage ; mais le résultat peut varier si un autre utilisateur a modifié la table.

Vous pouvez aussi compter le nombre total d'enregistrements d'une table au moyen de la fonction RECCOUNT( ). Cependant, à l'opposé de COUNT, RECCOUNT( ) ne vous permet pas de spécifier des conditions pour déterminer les enregistrements à compter.

Plus2_5-Icon.jpg (1250 octets) xDML vers ooDML

L'équivalent OODML sont les méthodes du rowset count() ou rowCount().

Pour que cela fonctionne avec un filtre, vous devez définir en premier le filtre, plutôt que d'ajouter une sorte de qualificatif à la méthode de comptage.

form.rowset.count()

Cela compte toutes les lignes du jeu de lignes. Si vous souhaitez filtrer le jeu de lignes:

form.rowset.filter = "un filtre"
form.rowset.count()
form.rowset.filter = ""


La différence entre count() et rowCount() est que rowCount() prendra en compte les enregistrements supprimés - ce qui peut renvoyer des valeurs qui seront source de confusion ...

Il convient donc de retenir que l'équivalent ooDML est doncform.rowset.count()

bug_jpg.jpg (2635 octets)  Les problèmes connus :

COUNT

En 2002, un utilisateur (1) avait évoqué une différence entre l'utilisation de la commande par l'intermédiaire du menu ou par la fenêtre de commande, la fenêtre de commande donnant un résultat exact, au contraire de la demande faite par l'intermédiaire du menu.

 

ROWSET.COUNT()

Toujours en 2002, une "curiosité", en ooDML a aussi été solutionnée (2):

J'ai eu une question sur OODML et le rowset,
Sur le formulaire ouvert, Pas de problème, mais, si vous appuyez sur le bouton de compter,
Je reçois un message d'erreur

this.rowset = this.datamodref1.ref.cut1.rowset

function form_onOpen
this.rowset.first()
msgBox( str( this.rowset.count(), 5, 0 ) )
return

function PUSHBUTTON1_onClick
this.rowset.count() // produit une erreur !!
return


Réponse :
Modifier comme suit:

function PUSHBUTTON1_onClick
// this.rowset.count() // produit une erreur !!
form.datamodref1.ref.cut1.rowset.count()
ou
this.parent.datamodref1.ref.cut1.rowset.count()
return

 

retour

Sources :

Aide Visual dbase V5.5

http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm

(1) :

Groupes de discussion : dbase.bug-reports
De : Frank J. Polan <fpo...@pcassist.on.ca>
Date : Mon, 02 Dec 2002 16:09:20 -0500
Date/heure locale : Lun 2 déc 2002 23:09
Objet : Table - count rows
Groupes de discussion : dbase.bug-reports
De : Frank J. Polan <fpo...@pcassist.on.ca>
Date : Mon, 09 Dec 2002 13:02:40 -0500
Date/heure locale : Lun 9 déc 2002 20:02
Objet : Re: table / count rows

 

(2) :

Question
Groupes de discussion : dbase.programming
De : "Jack" <z...@mail.abc.com.tw>
Date : Mon, 25 Mar 2002 22:39:28 +0800
Date/heure locale : Lun 25 mar 2002 16:39
Objet : Data Module and rowset.Count?
Réponse
Groupes de discussion : dbase.programming
De : Robert Cline <RobCl...@Sonic.net>
Date : Mon, 25 Mar 2002 09:41:37 -0600
Date/heure locale : Lun 25 mar 2002 17:41
Objet : Re: Data Module and rowset.Count?

 

Si vous voyez des erreurs, n'hésitez pas à le signaler.

Dernière modification : samedi 24 juillet 2010

©  M.A.