Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports > Formules
Formules Forum sur l'utilisation des formules sous Crystal reports
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2007, 09h58   #1
Membre expérimenté
 
Avatar de kikidrome
 
Inscription : décembre 2004
Messages : 841
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 841
Points : 563
Points : 563
Par défaut [XI] ordre des tests dans une formule if or then

bonjour

j'ai tout à coup de gros doutes sur ma "culture" algorithmique
voici une formule :
Code :
1
2
3
4
5
6
7
8
9
IF onlastrecord then true
else
    IF {Array2z.ET_ECH_ID} <> next({Array2z.ET_ECH_ID}) then true
    else
       IF (next({Array2z.CODE_FR_Int}) IN (1 TO 6)) OR 
            ({Array2z.CODE_FR_Int} IN (1 TO 6)) OR 
             (previous({Array2z.CODE_FR_Int}) IN (1 TO 6))  then true
       else
            false
si je l'écris comme ceci (j'inverse les 2 tests dans le 2_me "if")
Code :
1
2
3
4
5
6
7
8
9
IF onlastrecord then true
else
    IF {Array2z.ET_ECH_ID} <> next({Array2z.ET_ECH_ID}) then true
    else
       IF ({Array2z.CODE_FR_Int} IN (1 TO 6)) OR 
            (next({Array2z.CODE_FR_Int}) IN (1 TO 6)) OR 
            (previous({Array2z.CODE_FR_Int}) IN (1 TO 6))  then true
       else
            false
je n'obtiens pas le même résultat

j'utilise cette formule pour supprimer des sectiosn pieds de groupe qui contiennent des traits (mon rapport est sous forme de tableau quadrillé)

une explication ?
__________________
Les paysages sont plus beaux quand on transpire.
Olaf Candau
kikidrome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 10h14   #2
Membre expérimenté
 
Avatar de kikidrome
 
Inscription : décembre 2004
Messages : 841
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 841
Points : 563
Points : 563
j'essaie différement et j'ai toujours le même problème :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
IF onlastrecord then true
else
    IF {Array2z.ET_ECH_ID} <> next({Array2z.ET_ECH_ID}) then true
    else
       IF ({Array2z.CODE_FR_Int} IN (1 TO 6)) then true
       else 
            IF (next({Array2z.CODE_FR_Int}) IN (1 TO 6)) then true
            else 
                IF (previous({Array2z.CODE_FR_Int}) IN (1 TO 6))  then true
                else
                        false
et si j'inverse le 2ème et le 3ème test :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
IF onlastrecord then true
else
    IF {Array2z.ET_ECH_ID} <> next({Array2z.ET_ECH_ID}) then true
    else
            IF (next({Array2z.CODE_FR_Int}) IN (1 TO 6)) then true
            else 
 
       IF ({Array2z.CODE_FR_Int} IN (1 TO 6)) then true
       else 
 
                IF (previous({Array2z.CODE_FR_Int}) IN (1 TO 6))  then true
                else
                        false
je n'obtiens pas le même résultat
__________________
Les paysages sont plus beaux quand on transpire.
Olaf Candau
kikidrome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 12h34   #3
say
Membre Expert
 
Avatar de say
 
Inscription : août 2002
Messages : 1 175
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : août 2002
Messages : 1 175
Points : 1 135
Points : 1 135
Envoyer un message via MSN à say
il me semble avoir déjà croisé sur le forum des personnes ayant des soucis dans le genre...
nous avions alors conseillé de baliser le code avec de accolades pour bien identifier les blocs, il semble que CR s'embrouille quelque peu.

U should try
__________________
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _

La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _

Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
say est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h49   #4
Membre expérimenté
 
Avatar de kikidrome
 
Inscription : décembre 2004
Messages : 841
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 841
Points : 563
Points : 563
j'ai remarqué qu'une formule du type
Code :
1
2
IF cond1 OR cond2 then true
else false
ne donnait pas le même résultat que
Code :
1
2
3
IF cond1 thn etrue
else IF cond2 then true
else false
c'est normal ? moi, je trouve çà vraiment bizarre

qu'entends tu par accolade ?

j'ai essayé de baliser par des parenthèses :
Code :
1
2
3
4
5
6
7
8
9
10
 
IF onlastrecord then true
else(
    IF {Array2z.ET_ECH_ID} <> next({Array2z.ET_ECH_ID}) then true
    else (
       IF ({Array2z.CODE_FR_Int} IN (1 TO 6)) then true
       else (
            IF (next({Array2z.CODE_FR_Int}) IN (1 TO 6)) then true
            else 
                        false)))
et çà ne change pas le résultat ! le dernier if passe à la trappe !
__________________
Les paysages sont plus beaux quand on transpire.
Olaf Candau
kikidrome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h26   #5
say
Membre Expert
 
Avatar de say
 
Inscription : août 2002
Messages : 1 175
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : août 2002
Messages : 1 175
Points : 1 135
Points : 1 135
Envoyer un message via MSN à say
oui, je parlais des parenthèses, je m'embrouille entre les différents langages (C++, SQL, etc...)...

bizarre, cette histoire...je vais essayer de retrouver le post où ns en avions déjà parlé...
__________________
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _

La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _

Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
say est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h31   #6
say
Membre Expert
 
Avatar de say
 
Inscription : août 2002
Messages : 1 175
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : août 2002
Messages : 1 175
Points : 1 135
Points : 1 135
Envoyer un message via MSN à say
bon, je l'ai retrouvé mais c pas concluant..

http://www.developpez.net/forums/sho...hlight=formule
__________________
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _

La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _

Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
say est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h31   #7
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
Bonjour kikidrome,
t'as essayé de traduire ton code en syntaxe basic pour voir si ce comportement anormal se répète ?
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h41   #8
Membre expérimenté
 
Avatar de kikidrome
 
Inscription : décembre 2004
Messages : 841
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 841
Points : 563
Points : 563
Citation:
Envoyé par say
bon, je l'ai retrouvé mais c pas concluant..

http://www.developpez.net/forums/sho...hlight=formule

oui, je l'avais vu, mais çà ne ressmble pas à mon problème !
__________________
Les paysages sont plus beaux quand on transpire.
Olaf Candau
kikidrome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h55   #9
Membre expérimenté
 
Avatar de kikidrome
 
Inscription : décembre 2004
Messages : 841
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 841
Points : 563
Points : 563
Citation:
Envoyé par L.nico
Bonjour kikidrome,
t'as essayé de traduire ton code en syntaxe basic pour voir si ce comportement anormal se répète ?
bonjour Nico
je n'utilise jamais la syntaxe basic je viens d'essayer et je n'arrive pas à "traduire" ma formule !
j'ai craqué, j'ai inséré une section dans mon pied de group et j'ai créé 4 formules qui contiennent mes 4 tests et qui initialisent une variable booléenne et je teste cette variable dans la section en dessous.
CA MARCHE !

conclusion : à mon avis, il y a un gros blème dans les formules "if then else if .." !

je m'en tire par une pirouette mais j'ai perdu des heures et des heures
__________________
Les paysages sont plus beaux quand on transpire.
Olaf Candau
kikidrome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 17h11   #10
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
Non testé mais ca doit donner un truc du genre en syntaxe basic :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IF onlastrecord then 
   formula=true
else
    IF {Array2z.ET_ECH_ID} <> next({Array2z.ET_ECH_ID}) then 
       formula=true
    else
       IF (nextValue({Array2z.CODE_FR_Int}) IN (1 TO 6)) OR 
          ({Array2z.CODE_FR_Int} IN (1 TO 6)) OR 
          (previousValue({Array2z.CODE_FR_Int}) IN (1 TO 6))  then 
          formula=true
       else
          formula=false
       end IF
    end IF 
end IF
Pour ma part je n'utilise jamais la syntaxe crystal
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 23h07   #11
Membre expérimenté
 
Avatar de kikidrome
 
Inscription : décembre 2004
Messages : 841
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 841
Points : 563
Points : 563
Merci Nico, j'essaieraie çà lundi !
__________________
Les paysages sont plus beaux quand on transpire.
Olaf Candau
kikidrome est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h38.


 
 
 
 
Partenaires

Hébergement Web