Utilisation de la fonction Somme

Product :4D - 4D Server
4D : v17
OS : Mac OS X

Bonjour,

J’ai une liste d’enregistrements sélectionnés et j’utilise : $resultat:=Somme([table]Booleen) pour avoir Vrai ou Faux, tout fonctionne bien sauf quand je fais “vérifier la syntaxe” dans compiler il me met “Le résultat de la fonction est incompatible avec l’expression.”, ce que je peux comprendre mais comment faire autrement sans créer une boucle??

Merci.

Mais que veux-tu calculer ?

On prend une table [table] avec une champ booléen ‘BO_TOLE’
On sélectionne 3 enregistrements :
1er : [table]BO_TOLE = Vrai
2eme : [table]BO_TOLE = Faux
3eme : [table]BO_TOLE = Faux

Je fais
$verif:=somme(table]BO_TOLE)
—>> $verif retourne ‘Vrai’

Je viens de trouver une solution :

Il faut que je mette :

$verif:=somme(table]BO_TOLE)=Vrai

Salut,

Fais un VALEURES DISTINCTES

si le tableau a deux items alors tu as des True et des False

Salut Soub.

C’est ce que j’allais proposer mais apparemment Florent a trouvé une parade.

Sinon, SELECTION VERS TABLEAU suivi de Compter dans tableau permet de savoir combien il y en a.

: Bertrand SOUBEYRAND

Salut,

Fais un VALEURES DISTINCTES

si le tableau a deux items alors tu as des True et des False

tu vas obtenir un tableau de deux éléments (True et False) :slight_smile: :lol:

Oh! La même question a déjà été posée https://forums.4d.com/Post/FR/32483220/1/32483221#32483221dans un autre post>

Le thread est maintenant localisé dans le bon forum ! :slight_smile:

Oui, il me suffisait de mettre une condition booléenne
merci

oui, c’est moi, je me suis trompé de forum :lol:

Je n’ai pas compris le but recherché.
Quand est-ce que tu t’attends à ce que cette fonction retourne vrai ?
Quelle est la signification de sommer des booléens ?

La somme de booléen peut être interessante mais elle devrait retourner un résultat numérique

Somme des cases cochées à vrai (càd. nombre des paramètres dont la valeur est vrai)

Ce qu’il cherche à obtenir est différent, c’est semble-t’il un résultat booléen d’un calcul de logique booléenne c’est pas une somme mais un résultat d’expression du style:
A ou B ou C avec A, B, C des booléens
si A=vrai B=faux et C=faux on obtient en résultat pour l’expression (A | B | C) = Vrai.
Cela revient a chercher la présence d’au moins un booléen à vrai dans les paramètres de l’expression.

Alors la fonction Somme n’est pas la bonne méthode. Elle ne semble pas être prévue pour ça. Si ça marche, rien ne garantit que ça continuera à marcher à l’avenir.

S’il s’agit de savoir si au moins un des enregistrements de la sélection a ce champ à vrai, je ferais plutôt ça :
<code 4D>
FIXER DESTINATION RECHERCHE(Vers variable;$n)
FIXER LIMITE RECHERCHE(1)
CHERCHER DANS SÉLECTION([Table];[Table]Booleen=Vrai)
FIXER DESTINATION RECHERCHE(Vers sélection courante)
FIXER LIMITE RECHERCHE(0)
$verif:=($n>0)
</code 4D>

Je ferais remarquer que si somme “fonctionnait” (retour du nombre de paramètre à vrai) sur un champ booléen, on pourrait faire simplement:
$resultatBool:=(Somme([table]ChampBool)>0)

Je ne vois pas ce qui empêche d’implémenter cela c’est simplement en fait Somme(Num([table]ChampBool)) en interne. :?:

Merci, c’est bien ça

Il faut faire une demande de feature request car actuellement cela n’existe pas… :frowning:

Le cas d’usage pourrait être de pouvoir faire une somme (en automatique) dans une colonne booléen d’une listbox selection pour connaitre le nombre de réponse (coche à Vrai) à un QCM par exemple.
A,B,C,D combien de A, combien de B, combien de C, combien de D ont-ils été cochés.

: Maurice INZIRILLO
: Bertrand SOUBEYRAND

Salut,

Fais un VALEURES DISTINCTES

si le tableau a deux items alors tu as des True et des False

tu vas obtenir un tableau de deux éléments (True et False) :slight_smile: :lol:

En l’occurence ce n’est pas si bête que cela :razz: ,si on utilise le 3eme paramètre de valeur distinctes qui retourne pour le coup le nombre d’occurrence de chaque valeur, et justement ce qui nous intéresse c’est le nombre de “VRAI” :idea:

Manuel, le code que je propose répond complètement à ta demande.
Il suffit de ne pas limiter la recherche à 1 et tu auras dans $n le nombre d’enregistrements à vrai.
Pourquoi faire une demande pour un truc déjà possible facilement ?

Je t’ai exposé un cas d’usage, pouvoir faire directement une somme sur un champ booléen qui retourne un numérique qui est la somme de valeur à vrai.
On pourrait ainsi utiliser les sommes en automatique dans les pieds des listbox par exemple.

À noter que même en ORDA je n’ai pas trouvé de solution “directe” car sum() ne fonctionne pas non plus avec un champ booléen, c’est dommage…

Hey joe, tu rigoles ? Ça existe depuis la 15R4

https://livedoc.4d.com/4D-Langage-18/Tableaux/VALEURS-DISTINCTES.301-4504605.fr.html

VALEURS DISTINCTES ( leChamp ; tableau {; tabNbVal} )