PB à toute heure et à tout moment. (à parcourir avec modération)

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 06-07-2016 07:12:46

Saria  
Membre Geek
Lieu: Lille
Date d'inscription: 24-02-2012
Messages: 25
Pépites: 117
Banque: 0

Ne filtrer que sous certaines conditions ?

Bonjour,

J'ai une DataWindow qui contient X lignes.
Je ne veux parcourir que certaines lignes, sans pour autant la vider, car les lignes que je ne souhaite pas parcourir sont utiles plus loin.

J'avais donc pensé à :
* filtrer ma DW
* parcourir ma DW (for i = 1 to ma_dw.rowcount())
* défiltrer ma DW

Ma version 1 était la suivante :

Code: pb

lb_gar_filtree = false

if (dw_gar.find("prs_typ = 'C'", 1, dw_gar.rowcount()) > 0) then
  dw_gar.setFilter("prs_typ = 'C'")
  dw_gar.Filter()
  lb_gar_filtree = true
end if

for ll = 1 to dw_gar.RowCount()
(...)
next

if lb_gar_filtree then
  dw_gar.setFilter("")
  dw_gar.Filter()
end if

Seulement, elle ne convient pas, car je ne dois pas filtrer les lignes dans tous les cas.

Si par exemple, j'ai :
OPT_COD   PRS_TYP
1. Opt1   C
2. Opt1   E

3. Opt2   C
4. Opt2   E

5. Opt3   C
6. Opt3   E

7. Opt4   C
8. Opt4   E

Je peux enlever toutes les lignes où PRS_TYP est différent de C (lignes 2, 4, 6, 8), car chaque option possède une ligne PRS_TYP = C.

Mais si j'ai :
OPT_COD   PRS_TYP
1. Opt1   C
2. Opt1   E

3. Opt2   E

4. Opt3   C
5. Opt3   E

6. Opt4   E

Je ne dois enlever les lignes où PRS_TYP est différent de C, que sur les lignes 2 et 5 (lignes Opt1 et Opt3).

En bref, je peux enlever les lignes où PRS_TYP est différent de C, que s'il existe déjà une ligne PRS_TYP = C pour l'OPT_COD.
Ma DW est déjà triée par OPT_COD.


Une idée SVP ?
Je ne fais quasiment plus de PB depuis 2 ans, je ne m'y remets que de façon ponctuelle, et j'ai perdu quelques automatismes.


Merci.

Hors ligne

 

#2 06-07-2016 09:45:07

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Ne filtrer que sous certaines conditions ?

Saria a écrit:

Une idée SVP ?

Tu peux modifier la requête ou la DW ?
En ajoutant un count() des OPT_COD (dans le sql ou via un champ calculé), après tu peux filtrer  dans le genre (prs_typ = 'C' or count = 1).


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#3 06-07-2016 10:18:42

Saria  
Membre Geek
Lieu: Lille
Date d'inscription: 24-02-2012
Messages: 25
Pépites: 117
Banque: 0

Re: Ne filtrer que sous certaines conditions ?

Merci, je vais tenter.
Il faut que je regarde où elle est utilisée, pour vérifier si l'ajout d'un champ n'est pas gênant.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22