Condition sur le IF

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Messagepar Mick » 23 Nov 2010 à 17:49

C'est donc le IF ... AND qui ne fonctionne pas

Voilà la modif que j'ai fait pour limiter le problème éventuel de variable :
Code : Tout sélectionner
   c1 = "079"
   c2 = "079"
   c3 = "13112010"
   c4 = "15112010"
   c5 = "K4520"
   c6 = "M4510"
If (c1 <> c2) And (c3 <> c4) And (c5 <> c6) Then                     
      arg(0) = Trim(tournee)                     
      arg(1) = Trim(jour)
      arg(2) = Trim(doccli.CliTriCo7(0))
Else
 Msgbox "la plateforme stocke" &  c1 & "est bien egale a la plateforme lue" & c2
 Msgbox "le jour stocke" & c3 & "est bien egale au jour  lue" & c4
 Msgbox "la tournee stocke" & c5 & "est bien egale a la tournee lue" & c6
  Erase arg
End If


Donc je tombe sur le ELSE car C1 est égal à C2, le IF ne s'occupe donc pas du AND.
Moi ce que je souhaite c'est IF 079-13112010-K4520 <> 079-15112010-M4510 alors traitement.

Comment traduire cela en LS ?


Merci,
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 23 Nov 2010 à 18:58

re,

je pense que ton probleme c'est pas le "if" qui bug, mais que tu n'arrive pas a concevoir la condition.

alors comme dirais mon vieux maitre Oguruma (hurle pas Ogu) , une feuille, un crayon et 3 sous de réflexion ;)

prend ton probleme autrement plustot que de faire un if complexe

concatene tes élément de cette facon
Code : Tout sélectionner
t1 = c1+"-"+c3+"-"+c5
t2 = c2+"-"+c4+"-"+c6

if t1 <> t2 then

traitement
end if
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 23 Nov 2010 à 22:20

si je prend ton code, c'est les messages dans le ELSE qui sont inexactes
pour rappel NOT (A AND B) = NOT A OR NOT B

[syntax="LotusScript"]c1 = "079"
c2 = "079"
c3 = "13112010"
c4 = "15112010"
c5 = "K4520"
c6 = "M4510"
If (c1 <> c2) And (c3 <> c4) And (c5 <> c6) Then
arg(0) = Trim(tournee)
arg(1) = Trim(jour)
arg(2) = Trim(doccli.CliTriCo7(0))
Else
Msgbox "c1=c2 OU c3=c4 OU c5=c6"
Erase arg
End If[/syntax]
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Mick » 24 Nov 2010 à 10:58

Je viens d'avoir la solution par un ancien collègue mais que Michael avait aussi donnée ...

Code : Tout sélectionner
traite = Trim(platetraite(i_p) + jourtraite(i_p) + tournetraite(i_p))
lue = Trim(doccli.CliTriCo7(0) + jour + tournee)
                  
If traite <> lue Then   


Mon enchainement de IF AND ne fonctionnait donc pas.
Par contre je n'ai rien trouvé dans l'aide lotus, vous avez un lien sur le codage du IF en LS ?


Merci encore à vous tous,
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 24 Nov 2010 à 11:16

re,

la seule chose à savoir sur le if, c'est qu'il évalue toute la condition (meme si en cas de condition multiple la premiere est fausse)

je pense que ton pb viens plus de la compréhension du besoin : l'algo que du If en lui même
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 25 Nov 2010 à 01:33

dans ce cas, l'équivalent serait
If (c1 <> c2) Or (c3 <> c4) Or (c5 <> c6) Then
si l'une des 3 valeurs est différente alors la chaine concaténée sera différenrte et pas forcément toutes les 3 différentes
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Mick » 25 Nov 2010 à 13:22

Je suis embué ... je ne vois pas comment coder ceci :

Code : Tout sélectionner
Set doccli = vCliPlat.GetDocumentByKey(Trim(client),True)
If not doccli is nothing then
For i_p = 0 To t_pltfDejaMax   
 traite = Trim(platetraite(i_p) + jourtraite(i_p) + tournetraite(i_p))
 lue = Trim(doccli.CliTriCo7(0) + jour + tournee)
   If traite <> lue Then                     
      arg(0) = Trim(tournee)                     
      arg(1) = Trim(jour)
      arg(2) = Trim(doccli.CliTriCo7(0))
   Else
      Erase arg
   End If
Else
  arg(0) = Trim(tournee)                     
  arg(1) = Trim(jour)
  arg(2) = Trim(client)
end If


Je ne vois pas où placer ceci pour que çà fonctionne :
Set doc = vpal.GetDocumentByKey(arg, True)
-- traitement --

Excusez moi ... :oops:
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 25 Nov 2010 à 13:39

ben comme je ne sais pas ce que tu dois faire...

je pense que ton souci viens plus de l'algo que de la compréhension du LS.

ecrit ton code en pseudo-code
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 25 Nov 2010 à 20:46

il faut reprendre le pb à la base, papier / crayon pour remettre les choses à plat.

Tu parcours un fichier texte contenant des infos sur des tournées faites chez des clients
Pour chaque ligne lue, tu recherches le doc client associé pour faire quoi ? rechercher sur le doc tournée associé et déjà créé ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Mick » 25 Nov 2010 à 20:54

Merci pour vos réponses.
:wink:

J'avais effectivement un problème d'algorithme, un collègue m'a permis d'y voir plus clair.


Par contre, je ne comprend pourquoi mon IF avec les AND ne fonctionnait pas ...
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Précédent

Retour vers Développement