Page 3 sur 3

MessagePublié: 23 Nov 2010 à 17:49
par Mick
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,

MessagePublié: 23 Nov 2010 à 18:58
par Michael DELIQUE
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

MessagePublié: 23 Nov 2010 à 22:20
par roubech
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]

MessagePublié: 24 Nov 2010 à 10:58
par Mick
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,

MessagePublié: 24 Nov 2010 à 11:16
par Michael DELIQUE
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

MessagePublié: 25 Nov 2010 à 01:33
par roubech
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

MessagePublié: 25 Nov 2010 à 13:22
par Mick
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:

MessagePublié: 25 Nov 2010 à 13:39
par Michael DELIQUE
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

MessagePublié: 25 Nov 2010 à 20:46
par roubech
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éé ?

MessagePublié: 25 Nov 2010 à 20:54
par Mick
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 ...