Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 23-09-2008 09:10:08

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

[RESOLU] count distinct dans une DS

Bonjour à tous,

J'ai un problème que je suis pas arrivé à résoudre...
dans une fenêtre j'ai une datawindow de sélection, je saisi des critères de sélection, ensuite je les récupère.
On peut avoir plusieurs critères dans un seul champ. et ici le problème...
le besoin maintenant c'est je voulais savoir combien de variable dans ma datastore.


je fais comme suit mais toujours ll_find = -5, malgré j'ai des lignes.
Exemple :

dans les critères de sélection j'ai  : ls_xxx = A, B, C, T, K

datastore : champ1   champ2

ligne 1          A            6
ligne 2          B            1
ligne 3          A            3
ligne 4          A            4
ligne 5          C            0

==> le résultat doit être  ll_find = 3

Code: pb

ll_find = ids_mydatastore.find ("champ = '" + ls_xxx + "'", 1, ids_mydatastore.RowCount())


j'ai bien ids_mydatastore.RowCount() = 5

Merci et bonne journée

Dernière modification par mattdamon (23-09-2008 10:40:49)

Hors ligne

 

#2 23-09-2008 09:14:35

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] count distinct dans une DS

un compute directement dans la DWO : Count(champ1 for all distinct)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 23-09-2008 10:06:48

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] count distinct dans une DS

erasorz

Matt, le find ne fonctionne pas comme ça.
Find te renvoie la première ligne qui vérifie un critère

Code: pb

ls_xxx = "B"
ll_find = ids_mydatastore.find
("champ1 = '" + ls_xxx + "'", 1, ids_mydatastore.RowCount())

Renvoie 2



Sinon, tu peux faire un filtre avec : champs1 in ('A', 'B', 'C', 'T,' 'K')
puis rowcount


never let people work on more than one thing at once.

Hors ligne

 

#4 23-09-2008 10:17:33

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: [RESOLU] count distinct dans une DS

Bonjour,

Juste pour clarifier, la méthode find permet de trouver un indice de ligne de la datawindow ou datastore selon le critère défini et non un nombre de lignes correspondant au critère.

Pour ll_find = -5 (Bad argument)

Code: pb

ls_xxx = "'A' or 'B' or 'C' or 'T' or 'K'
ll_find = ids_mydatastore.find ("champ1 = " + ls_xxx + ", 1, ids_mydatastore.RowCount())


Pour ton exemple, ll_find = 1

Pour résoudre ton problème avec la méthode ll_find :

Code: pb

integer li_i, li_count
long ll_find
string ls_array[] = {'A','B','C','T','K'}

FOR li_i = 1 TO UpperBound(ls_array)
ll_find = ids_mydatastore("champ1='" + ls_array[li_i] + "'", 1, ids_mydatastore.RowCount())
IF ll_find > 0 THEN li_count++
NEXT


Normalement, li_count = 3
La méthode d'erasorz est la plus efficace pour ton cas.

Désolé redondance, il semble que nous étions deux à rédiger la même remarque

Hors ligne

 

#5 23-09-2008 10:21:13

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] count distinct dans une DS

buck a écrit:

Désolé redondance, il semble que nous étions deux à rédiger la même remarque

Bonjour Buck, il vaut mieux ça que l'inverse
Merci pour ton intervention


never let people work on more than one thing at once.

Hors ligne

 

#6 23-09-2008 10:22:49

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] count distinct dans une DS


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#7 23-09-2008 10:39:53

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] count distinct dans une DS

Je vous remercie pour vos réponses    j'ai utilisé en fait, la solution de  erasorz :    erasorz

erasorz a écrit:

un compute directement dans la DWO : Count(champ1 for all distinct)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22