IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Formules Discussion :

Ordre des tests dans une formule if or then


Sujet :

Formules

  1. #1
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut
    j'essaie différement et j'ai toujours le même problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    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

  4. #4
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut
    j'ai remarqué qu'une formule du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if cond1 or cond2 then true
    else false
    ne donnait pas le même résultat que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  5. #5
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    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é...

  6. #6
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    bon, je l'ai retrouvé mais c pas concluant..

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

  7. #7
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour kikidrome,
    t'as essayé de traduire ton code en syntaxe basic pour voir si ce comportement anormal se répète ?

  8. #8
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut
    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 !

  9. #9
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut
    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

  10. #10
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Non testé mais ca doit donner un truc du genre en syntaxe basic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut
    Merci Nico, j'essaieraie çà lundi !

Discussions similaires

  1. [VB6]ordre des images dans une toolbar
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 11/05/2006, 20h39
  2. [Débutant]Ordre des champs dans une table
    Par goony dans le forum Débuter
    Réponses: 4
    Dernier message: 16/02/2006, 13h05
  3. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 15h01
  4. Ordre des tests dans la clause WHERE
    Par Tans98 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/09/2004, 11h52
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 07h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo