Powerbuilder pour les completement Geeks !

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 09-02-2007 13:56:23

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

[RESOLU] Demande conseil sur Report ramenant aucune ligne.

Bonjour à tous

Alors voilà.
J'ai une Datawindow principale (Composite) qui comprend plusieurs Report avec un cadre (Box).

Pour certains report, il se peut que leur requête ne ramène aucune ligne -- Leur rowcount est donc à 0.
Dans ce cas là, dans la datawindow principale, le report ramenant aucune ligne, n'est pas visible, il n'y a même pas son cadre.

Or j'aimerai d'une part que le report soir visible (que l'on voit le cadre) dans le cas où il ne ramène aucune ligne, et faire apparaître un message du type "Aucun domaine disponible",

La solution que j'ai trouvé, c'est de modifier dans le report la requête pour que celle-ci me ramène toujours au moins une ligne:

J'ai rajouté à ma requête un UNION SELECT NULL , 1 FROM DUAL
(il y a 2 champs dans ma requête d'origine)

Comme ça, j'ai toujours au moins une ligne en retour.

Et dans le report, j'ai ajouté un champs Computed field contenant le texte "Aucun Domaine diponible" qui sera affiché si je n'ai qu'une seule ligne avec NULL dans le premier champs et j'ai un champs Domaine qui sera affiché autant de fois qu'il y aura de domaines en retour de la requête (Je joue avec la propriété Visible)

ça fonctionne très bien: J'ai soit ma liste de domaines avec un cadre autour du report, soit j'ai mon message "Aucun domaine disponible" avec le cadre autour du report. Le report est dans tous les cas visible.

Seulement si ma datawiondow principale ramène plusieurs lignes (ou fiches), j'ai des décalages ou des superpositions de zones à partir de la deuxième fiche de la datawindow principale.  Le cadre du report des domaines s'agrandit bizarement. Enfin, ça fout le bordel  dans certains cas. Et c'est bien du à ma modification de requête dans le report.

Bref., ma question n'est pas de savoir pourquoi ça fait ça, mais plutôt ma question serait de savoir si vous aviez une autre idée pour que mon report reste visible (avec son cadre) même si la requête n'apporte aucune ligne.

J'espère avoir été assez clair.

Merci à vous..

Kalini

Hors ligne

 

#2 09-02-2007 13:57:47

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

tu peux aussi faire un decode dans ta requête pour que ca te ramène quelque chose quand le rowcount est égal à zéro

Hors ligne

 

#3 09-02-2007 14:10:28

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

thezerg a écrit:

tu peux aussi faire un decode dans ta requête pour que ca te ramène quelque chose quand le rowcount est égal à zéro

C'est à dire, qu'appelles tu un "decode" ?
Tu peux me donner un exemple ?
merci

Dernière modification par Kalini (09-02-2007 14:10:54)

Hors ligne

 

#4 09-02-2007 14:16:15

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

Code:

Select decode(count(*), 0, 0, 1)

Ceci te ramène 0 si la valeur retournée est 0 sinon on retourne 1.J'espère être clair, sinon je te ferai un autre exemple

Hors ligne

 

#5 09-02-2007 14:37:44

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

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

thezerg a écrit:

Code:

Select decode(count(*), 0, 0, 1)

NB : si DECODE() existe dans ton SGBDR (Oracle) sinon CASE WHEN ou autres


Sinon rajouter une couche avec un DW composite "container" qui contient le report et qui affiche le message "Aucun domaine disponible" le cas échéant


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

Hors ligne

 

#6 09-02-2007 14:46:33

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

thezerg a écrit:

Code:

Select decode(count(*), 0, 0, 1)

Ceci te ramène 0 si la valeur retournée est 0 sinon on retourne 1.J'espère être clair, sinon je te ferai un autre exemple

Alors, le decode a l'air d'exister, car si j'exécute la requête suivante,
SELECT decode(count(*), 0, 0, 1)   WHERE "AA_ZONE_ACTION"."PK_ASSOCIATION" = 7258;
ça me ramène 1

Mais par contre, dans mon report, ma requête est la suivante :
SELECT AA_ZONE_ACTION.PK_QUARTIER,   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association 

Comment dois-je utiliser le decode ? Comment dois-je faire ma requête avec le decode ?

Hors ligne

 

#7 09-02-2007 14:52:46

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

eRaSorZ a écrit:

NB : si DECODE() existe dans ton SGBDR (Oracle) sinon CASE WHEN ou autres


Sinon rajouter une couche avec un DW composite "container" qui contient le report et qui affiche le message "Aucun domaine disponible" le cas échéant

OK pour le deuxième cas. Je pense comprendre ce que tu veux dire. Mettre, dans la DW principale, un report qui contient le message "Aucun domaine ..." et le report où il y a ma requête des domaines.
C'est bien ça ?

Mais je ne vois pas de composite "container" ? Tu trouves ça où ?
Je suis en PB 8 ?

Hors ligne

 

#8 09-02-2007 15:08:30

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

avec le decode sinon ca doit donner ca :

Code:

SELECT AA_ZONE_ACTION.PK_QUARTIER, decode(count(*),0,'Aucun domaine'),   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
group by AA_ZONE_ACTION.PK_QUARTIER

Hors ligne

 

#9 09-02-2007 15:10:50

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

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

Kalini a écrit:

OK pour le deuxième cas. Je pense comprendre ce que tu veux dire. Mettre, dans la DW principale, un report qui contient le message "Aucun domaine ..." et le report où il y a ma requête des domaines.
C'est bien ça ?

:yes:

Kalini a écrit:

Mais je ne vois pas de composite "container" ? Tu trouves ça où ?
Je suis en PB 8 ?

en fait oublie composite"container", c'est juste une DW tabular (p.ex) avec le count(*) tu mets ton report en faisant passer ton argument :an_association  + un compute qui affiche le message "aucun domaine" selon le nb de lignes retournées

j'ma ben fait comprendre ?


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

Hors ligne

 

#10 09-02-2007 15:18:10

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

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

thezerg a écrit:

avec le decode sinon ca doit donner ca :

Code:

SELECT AA_ZONE_ACTION.PK_QUARTIER, decode(count(*),0,'Aucun domaine'),   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
group by AA_ZONE_ACTION.PK_QUARTIER

t'es sur de toi thezerg ?
je sens un AA_ZONE_ACTION.PK_ASSOCIATION n'est pas une expression GROUP BY...


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

Hors ligne

 

#11 09-02-2007 15:25:00

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

autant pour moi 

Code:

SELECT AA_ZONE_ACTION.PK_QUARTIER, decode(count(*),0,'Aucun domaine'),   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
group by AA_ZONE_ACTION.PK_QUARTIER,
             AA_ZONE_ACTION.PK_ASSOCIATION

Hors ligne

 

#12 09-02-2007 15:31:15

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

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

thezerg a écrit:

autant pour moi 

Code:

SELECT AA_ZONE_ACTION.PK_QUARTIER, decode(count(*),0,'Aucun domaine'),   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
group by AA_ZONE_ACTION.PK_QUARTIER,
             AA_ZONE_ACTION.PK_ASSOCIATION

en fait, je crois que ça ne te renvoie aucune ligne si le where n'est pas vérifié...


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

Hors ligne

 

#13 09-02-2007 15:33:40

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

En effet c'est pas faux... je refléchi à autre chose alors

Hors ligne

 

#14 09-02-2007 15:44:03

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

eRaSorZ a écrit:

thezerg a écrit:

autant pour moi 

Code:

SELECT AA_ZONE_ACTION.PK_QUARTIER, decode(count(*),0,'Aucun domaine'),   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
group by AA_ZONE_ACTION.PK_QUARTIER,
             AA_ZONE_ACTION.PK_ASSOCIATION

en fait, je crois que ça ne te renvoie aucune ligne si le where n'est pas vérifié...

Effectivement, j'ai testé, si le where n'est pas vérifié, je n'ai aucune ligne en retour, donc, on en revient au départ.

eRaSorZ a écrit:

en fait oublie composite"container", c'est juste une DW tabular (p.ex) avec le count(*) tu mets ton report en faisant passer ton argument :an_association  + un compute qui affiche le message "aucun domaine" selon le nb de lignes retournées

j'ma ben fait comprendre ?

Pour la solution de eRaSorz, j'ai une petite question :
Comment récupérer dans le premier report où il y a le message "Aucun domaine..", le nombre de lignes du dernier report (celui contenant la requête des domaines) ?

Hors ligne

 

#15 09-02-2007 15:47:57

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

dans ta proc, tu ne peux pas faire des tests ?

genre

Code:

SELECT @nb_lignes = count(*)
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  

if @nb_lignes > 0 
  SELECT AA_ZONE_ACTION.PK_QUARTIER,   
         AA_ZONE_ACTION.PK_ASSOCIATION 
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association 
else
 SELECT "VIDE",   
         "VIDE"

un truc de ce genre quoi...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#16 09-02-2007 16:03:17

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

pick ouic a écrit:

dans ta proc, tu ne peux pas faire des tests ?

genre

SELECT @nb_lignes = count(*)
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association 

if @nb_lignes > 0
  SELECT AA_ZONE_ACTION.PK_QUARTIER,   
         AA_ZONE_ACTION.PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association
else
SELECT "VIDE",   
         "VIDE"
 


un truc de ce genre quoi...

Alors, en fait, il n'y a pas de procédure stockée.
Tout se fait via PB..

Dernière modification par Kalini (09-02-2007 16:08:58)

Hors ligne

 

#17 09-02-2007 16:03:42

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

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

Kalini a écrit:

Pour la solution de eRaSorz, j'ai une petite question :
Comment récupérer dans le premier report où il y a le message "Aucun domaine..", le nombre de lignes du dernier report (celui contenant la requête des domaines) ?

en fait c'est un peu tiré par les cheveux car il faudrait pouvoir faire un "d_report.rowcount()" mais je ne sais pas comment dans une expression de compute ? (si qq'un sait je suis prenneur... )
donc la fin justifiant les moyens tu fais un tabular avec un count(*) et le même where... et tu colles ton report dedans...
( en plus niveau optimisation c'est pas le top vu que la requête est exécutée deux fois... )


mieux en SQL avec juste un report:

Code:

SELECT 0 AS VISIBLE, COUNT(*) AS NB, '' AS PK_QUARTIER, '' AS PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association                  
UNION 
SELECT 1 AS VISIBLE, 0 AS NB, AA_ZONE_ACTION.PK_QUARTIER AS PK_QUARTIER,AA_ZONE_ACTION.PK_ASSOCIATION
 AS PK_ASSOCIATION
    FROM ENTETE_OP
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association

soit tu n'as pas de données => une seule ligne dans la datawindow , facile à tester pour le message

soit tu as n données => n+1 lignes dans la datawindow, ne pas afficher la ligne avec le count(*)


(la requête est aussi exécutée deux fois... )


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

Hors ligne

 

#18 09-02-2007 16:12:33

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

eRaSorZ a écrit:

en fait c'est un peu tiré par les cheveux car il faudrait pouvoir faire un "d_report.rowcount()" mais je ne sais pas comment dans une expression de compute ? (si qq'un sait je suis prenneur... )
donc la fin justifiant les moyens tu fais un tabular avec un count(*) et le même where... et tu colles ton report dedans...
( en plus niveau optimisation c'est pas le top vu que la requête est exécutée deux fois... )

C'est exactement ça que j'aimerai faire, tout à fait. Dans un computed field, récupérer le rowcount du report. Or, ça ne fonctionne pas en mettant le nom du report devant le rowcount.

eRaSorZ a écrit:

mieux en SQL avec juste un report:

Code:

SELECT 0 AS VISIBLE, COUNT(*) AS NB, 'Aucun domaine' AS PK_QUARTIER, '' AS PK_ASSOCIATION
    FROM AA_ZONE_ACTION
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association                  
UNION 
SELECT 1 AS VISIBLE, 0 AS NB, AA_ZONE_ACTION.PK_QUARTIER AS PK_QUARTIER,AA_ZONE_ACTION.PK_ASSOCIATION
 AS PK_ASSOCIATION
    FROM ENTETE_OP
   WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association

soit tu n'as pas de données => une seule ligne dans la datawindow , facile à tester pour le message

soit tu as n données => n+1 lignes dans la datawindow, ne pas afficher la ligne avec le count(*)


(la requête est aussi exécutée deux fois... )

Je vais essayé ça, mais c'est vrai qu'une requête exécutée 2 fois, c'est pas le top. Surtout que le report sera lancé autant de fois qu'il y aura de lignes dans la DW principale, c'est à dire + de 3000 fois .. donc * 2 = + de 6000 fois..

Hors ligne

 

#19 09-02-2007 22:16:00

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

tiens, voici ma requete... 

Code:

 SELECT QUARTIER = AA_ZONE_ACTION.PK_QUARTIER,   
       ASSOCIATION = AA_ZONE_ACTION.PK_ASSOCIATION 
  FROM AA_ZONE_ACTION
  WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
UNION
 SELECT QUARTIER = "Aucun Domaine",   
        ASSOCIATION = "Aucun Domaine"
   FROM AA_ZONE_ACTION
   WHERE 1 = 1
    AND (SELECT count(*)
               FROM AA_ZONE_ACTION
               WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association) = 0

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#20 10-02-2007 10:54:35

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

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

pick ouic a écrit:

Code:

 SELECT QUARTIER = AA_ZONE_ACTION.PK_QUARTIER,   
       ASSOCIATION = AA_ZONE_ACTION.PK_ASSOCIATION 
  FROM AA_ZONE_ACTION
  WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
UNION
 SELECT QUARTIER = "Aucun Domaine",   
        ASSOCIATION = "Aucun Domaine"
   FROM AA_ZONE_ACTION
   WHERE 1 = 1
    AND (SELECT count(*)
               FROM AA_ZONE_ACTION
               WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association) = 0

Pick je ne te félicite pas pour cette requête...

quand count(*)=0 la deuxième partie de la requête (après UNION) renverra autant de lignes que la table AA_ZONE_ACTION (utilise plutot DUAL)

d'ailleurs pourquoi "1 = 1 AND"  ??


<maitre capelloracle>

si c'est Oracle : QUARTIER = AA_ZONE_ACTION.PK_QUARTIER renvoie une erreur...
"Aucun Domaine" : aussi, (entre guillemets=nom de colonne, il faut utiliser les quotes pour les chaines...)

</maitre capelloracle>


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

Hors ligne

 

#21 10-02-2007 12:02:19

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

j'ai testé ca sous sqlanywhere, et ca fonctionne bien.
apres, il faut adapter et optimiser suivant la base...

Belle reactivité


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#22 12-02-2007 07:54:42

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

pick ouic a écrit:

j'ai testé ca sous sqlanywhere, et ca fonctionne bien.
apres, il faut adapter et optimiser suivant la base...

Belle reactivité

Salut à tous les 2.
Me revoila.

Tout d'abord, merci déjà de prendre sr votre temps poir chercher avec moi.
Donc, je vais essayer cette requête tout de suite et je vous tiens au courant..

A tout à l'heure.
Kalini

Hors ligne

 

#23 12-02-2007 16:11:13

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

Alors ?????
T'en es ou ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#24 14-02-2007 16:49:56

Kalini  
Membre Geek
Date d'inscription: 18-01-2007
Messages: 65
Pépites: 269
Banque: 0

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

Salut..

Désolé, j'étais pris par un autre soucis et j'arrive enfin  à finir mon état.. Ouf.

Alors, pour en revenir à la requête ci-dessus, je l'ai donc testé en l'adaptant un peu:

Code:

SELECT AA_ZONE_ACTION.PK_QUARTIER AS QUARTIER
            AA_ZONE_ACTION.PK_ASSOCIATION AS ASSOCIATION
            ' ' AS MESSAGEINFO
  FROM AA_ZONE_ACTION
  WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association  
UNION
 SELECT ' ' AS QUARTIER,   
             0 AS ASSOCIATION,
           ' AUCUN QUARTIER DISPONIBLE' AS MESSAGEINFO
FROM AA_ZONE_ACTION
   WHERE 1 = 1
    AND (SELECT count(*)
               FROM AA_ZONE_ACTION
               WHERE AA_ZONE_ACTION.PK_ASSOCIATION = :an_association) = 0

La requête fonctionnait parfaitement bien. (je rappelle que c'est une requête écrite directement dans la DW, et nondans une Procédure stockée). J'ai joué avec la propriété visible des champs pour les faire apparaître ou non. (MESSAGEINFO était visible quand il ASSOCIATION = 0 etc..)
Bref, j'avais toujours mon report qui apparaîssait avec soit une ligne contenant le message d'info ou alors plusieurs lignes avec mes quartiers.
Seulement, j'avais toujours des décalages de report suivants qui apparaissaient dans certains cas.

C'est cet UNION que PB a du mal à gérer quand on affiche plusieurs report dans une DW contenant plusieus lignes... Enfin, assez difficile à cerner..
Donc, il a fallu par n'importe quel moyen trouver une requête qui donne le même résultat mais ne contenant pas d'UNION .

Et la voici grâce à votre DECODE donné plus haut, j'ai fait ceci:

Code:

 SELECT AA_ZONE_ACTION.PK_QUARTIER AS QUARTIER,   
             AA_ZONE_ACTION.PK_ASSOCIATION AS ASSOCIATION,
             DECODE(AA_ZONE_ACTION.PK_ASSOCIATION,NULL,'AUCUN QUARTIER DISPONIBLE','') AS MESSAGEINFO
    FROM AA_ASSOCIATION,
            AA_ZONE_ACTION  
  WHERE   AA_ASSOCIATION.PK_ASSOCIATION = AA_ZONE_ACTION.PK_ASSOCIATION (+) AND
      AA_ASSOCIATION.PK_ASSOCIATION = :an_association

Donc, dans un cas, j'ai la jointure qui se fait, et donc PK_ASSOCIATION de la table AA_ZONE_ACTION qui n'est pas nul. Le MESSAGEINFO sera alors NULL. Et dans l'autre cas, je n'ai pas de jointure, mais j'ai quand même une ligne en sortie, celle de la table AA_ASSOCIATION. Dans ce cas, le MESSAGEINFO prend pour valeur le message d'avertissement.
Je joue ensuite sur la propriété visible des champs pour les faire apparaître ou non (si le message est null ou i le message est renseigné)
Voila

ça fonctionne super bien, je n'ai plus d'UNION, et plus de décalage..

Après peut-être que ce "bug" n'existe pas dans les versions plus récentes de PB..

En tout cas, merci beaucoup à vous 2, car c'est grâce à vous si j'ai avancé..

Kalini

PS: j'espère avoir été assez clair dans mes explications..

Dernière modification par Kalini (14-02-2007 16:50:17)

Hors ligne

 

#25 14-02-2007 17:13:27

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Demande conseil sur Report ramenant aucune ligne.

on etait 3...

ok, tout est résolu alors


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22