
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.
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.
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.
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()
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.
|