Condition sur le IF

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

Condition sur le IF

Messagepar Mick » 20 Nov 2010 à 13:05

Bonjour

J'ai besoin de vos lumières car les miennes sont faiblardes ...

Voilà où ça coince :

Dim PlateTraite() As String
Dim JourTraite () As String
Dim TourneTraite () As String
Dim tournee As String
Dim jour As String
IF Not platetraite(i_p) = Trim(doccli.CliTriCo7(0)) And jourtraite(i_p) = jour And tournetraite(i_p)= tournee Then
traitement
ELSE
traitement


Aucune erreur lors du déroulement de programme.
J'arrive dans un cas de IF NOT mais le programme passe directement au ELSE.
J'ai fait un debug et j'ai comparé les variables.
Elles sont toutes de type STRING.

Une idée pour moi ... :?:


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

Messagepar Michael DELIQUE » 21 Nov 2010 à 13:45

salut

si ta condition passe toujours au else, c'est qu'elle n'est jamais vraie.
il n'y aucun "bug" sur le if.

pour voir ce qui ne va pas :

- utiliser le débuggeur
- essais ça (tu devrais voir ou ça coince)
Code : Tout sélectionner
IF Not platetraite(i_p) = Trim(doccli.CliTriCo7(0)) then
msgbox "1"
if jourtraite(i_p) = jour then
msgbox "3"
if tournetraite(i_p)= tournee then
msgbox "5"
else
msgbox "6"
end if
else
msgbox "4"
end if
else
msgbox "2"
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 Mick » 21 Nov 2010 à 20:58

Merci pour la réponse

le problème se trouve donc ici :
IF Not platetraite(i_p) = Trim(doccli.CliTriCo7(0))


J'ai essayé d'un côte ou l'autre, des deux côtes : du TRIM, du STR, du UCASE$ ...

Je ne vois pas ce que je peux faire ... ?*


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

Messagepar Michael DELIQUE » 21 Nov 2010 à 22:49

re

montre moi tout ton code, là comme ça je peut rien dire
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 » 22 Nov 2010 à 00:45

tu peux essayer d'afficher les 2 valeurs que tu compares pour vérifier :
[syntax="LotusScript"]Dim tmp1 as String, tmp2 as String
tmp1 = platetraite(i_p)
print "tmp1= '" & tmp1 & "'"
tmp2 = doccli.CliTriCo7(0)
print "tmp2= '" & tmp2 & "'"
if tmp1 = tmp2 then
print "tmp1 = tmp2"
elseif ucase(trim(tmp1)) = ucase(trim(tmp2)) then
print "tmp1 like tmp2)
else
print "tmps1 not like tmp2"
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 LSong » 22 Nov 2010 à 12:09

il faudrait voir les valeurs
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar Mick » 22 Nov 2010 à 14:32

Voilà le message que j'obtiens ...
Not =079=079 lue
C'est pourtant bien égal ... :cry:

Ci-dessous le code complet :

[syntax="lotusscript"]Sub Initialize
Dim s As New NotesSession
Dim dbCur As NotesDatabase
Dim vpal As NotesView
Dim vCliPlat As NotesView
Dim arg(0 To 2) As String
Dim doc As NotesDocument
Dim doccli As NotesDocument

Dim fileRead As Integer
Dim fileWrite As Integer
Dim Chemin As String
Dim PlateTraite() As String
Dim JourTraite () As String
Dim TourneTraite () As String
Dim t_pltfDejaMax As Integer
Dim tournee As String
Dim jour As String
Dim Filw As String
Dim OkModif As Integer, OkNouveau As Integer
Dim FileTaille As Long, FilePos As Long

Set dbCur = s.currentDatabase
Set vpal = dbcur.getView("Vpaljouract")
Set vCliPlat = dbcur.getView("Vcliplat")
t_pltfDejaMax = -1
i_p = 0

RepStr = "C:\"

Print "Intégration fichier acteos"

fileRead = Freefile()
chemin = repStr+"logivif.txt"
Open chemin For Input As fileRead

fileWrite = Freefile()
filw = "C:\logMPO.txt"
Open filw For Output As fileWrite

Do Until Eof(fileRead)

Line Input #fileRead, ligStr
codeE = Mid(ligStr,1,1)

If codeE = "E" Then
codeexpe = Mid(ligStr,2,12)
'blanc = Mid(ligStr,14,1)
tournee = Mid(ligStr,14,5)
NumCom = Mid(ligStr,19,17)
TiersFact = Mid(ligStr,36,12)
jour = Mid(ligStr,48,8)
HeureDep = Mid(ligStr,56,4)
DateLiv = Mid(ligStr,60,8)
Transp = Mid(ligStr,68,12)
CodeSite = Mid(ligStr,80,8)
client = Mid(ligStr,88,17)
LibCli = Mid(ligStr,105,30)
ClientFac = Mid(ligStr,135,17)
CatCli = Mid(ligStr,152,2)
Enseigne = Mid(ligStr,154,10)
PaysDest = Mid(ligStr,164,3)
DepDest = Mid(ligStr,167,3)
CPDest = Mid(ligStr,170,6)
LibCommune = Mid(ligStr,176,30)
TypeMouv = Mid(ligStr,206,2)
Incoterm = Mid(ligStr,208,3)
Blanc2 = Mid(ligStr,211,1)
NatProd = Mid(ligStr,211,4)
Poids = Mid(ligStr,216,10)
Qt4 = Mid(ligStr,226,10)
NbPalette = Mid(ligStr,236,10)
Fin = Right(ligStr,129)

Set doccli = vCliPlat.GetDocumentByKey(Trim(client),True)
If Not doccli Is Nothing Then
If t_pltfDejaMax = -1 Then
arg(0) = Trim(tournee)
arg(1) = Trim(jour)
arg(2) = Trim(doccli.CliTriCo7(0))
Else
For i_p = 0 To t_pltfDejaMax
If Not (platetraite(i_p)) = doccli.CliTriCo7(0) Then
Msgbox "1"
If jourtraite(i_p) = jour Then
Msgbox "3"
If tournetraite(i_p)= tournee Then
Msgbox "5"
Else
Msgbox "6"
End If
Else
Msgbox "4"
End If
Else
Msgbox "not =" & platetraite(i_p) & "=" & doccli.CliTriCo7(0)&" lue"
End If
'If Not platetraite(i_p) = Trim(doccli.CliTriCo7(0)) And jourtraite(i_p) = jour And tournetraite(i_p)= tournee Then
' arg(0) = Trim(tournee)
' arg(1) = Trim(jour)
' arg(2) = Trim(doccli.CliTriCo7(0))
'Else
Erase arg
' End If
' End If
Next
End If
Else
arg(0) = Trim(tournee)
arg(1) = Trim(jour)
arg(2) = Trim(client)
End If

Set doc = vpal.GetDocumentByKey(arg, True)
If Not doc Is Nothing Then
nbpal = codeE & codeexpe & blanc & tournee & numcom & tiersfact & jour & heuredep & dateliv & _
transp & codesite & client & libcli & clientfac & catcli & enseigne & paysdest & depdest & _
cpdest & libcommune & typemouv & incoterm & blanc2 & natprod & poids & qt4 & _
Right("0000000000" & doc.palnombre(0), 10) & fin
'po = Left(ligStr,236) & "452" & Right(ligStr,Len(ligStr)-236)
Print #filewrite,nbpal

t_pltfDejaMax = t_pltfDejaMax + 1
Redim Preserve platetraite(t_pltfDejaMax)
Redim Preserve jourtraite(t_pltfDejaMax)
Redim Preserve tournetraite(t_pltfDejaMax)
platetraite(t_pltfDejaMax) = Trim(doccli.CliTriCo7(0))
jourtraite(t_pltfDejaMax) = Trim(jour)
tournetraite(t_pltfDejaMax)= Trim(tournee)

Else
Print #filewrite,ligstr
End If
Else
Print #filewrite, ligStr
End If
Loop
Close fileread
Close filewrite

Print "Importation acteos terminée."

Exit Sub
GestErreur :
Print "Error" & Str(Err) & ": " & Error$
Exit Sub
End Sub[/syntax]


Une piste ?

Encore merci
Dernière édition par Mick le 22 Nov 2010 à 14:39, édité 1 fois.
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 22 Nov 2010 à 14:34

plus tot qu'un "not"

essais un

if platetraite(i_p) <> doccli.CliTriCo7(0) then

et tu peut blinder par un

if trim(cstr(platetraite(i_p))) <> trim(cstr(doccli.CliTriCo7(0))) then
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 Mick » 22 Nov 2010 à 14:53

Merci pour le tuyau ... mais malheureusement ça ne change rien à mon pb.

Pourtant les deux valeurs sont bien identiques et de même type ...


Comment puis je m'en sortir ?
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 22 Nov 2010 à 15:00

ya un pb quelque part sur ton code

soit d'algo soit de variable.

le "IF" en lui même ne bug pas.
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 Mick » 22 Nov 2010 à 15:03

Le IF ne bug pas

Mais pourquoi quand j'affiche les valeurs, le IF trouve une différence entre 079 et 079 ?

C'est quand bien égal ça.

Vous vous en sortiriez comment de cette impasse ?
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 22 Nov 2010 à 15:12

déjà prendre un peu de recule sur le pb.

ensuite via le débugger (en pas à pas), analyse ligne par ligne du code et du contenu des variables.

ya pas de raison que ça marche pas. donc c'est qu'il ya un truc qui coince quelque part.

tu as mis un "option declare" ?
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 Mick » 22 Nov 2010 à 15:24

non je vais essayer de le rajouter et de prendre du "recul" ...

Mais il faudrait que je livre ce prog mercredi matin ...


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

Messagepar Michael DELIQUE » 22 Nov 2010 à 15:27

Toujours déclarer ses variables : TOUJOURS
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 Wildcat » 22 Nov 2010 à 15:31

Les deux 079 sont bien de même type ?

J'ai déjà eu des égalités apparemment vraies qui retournaient faux. notamment des ''='' en SQL Oracle mais ça ne semble pas être ton cas.

La première chose que je fais quand j'ai un comportement bizarre sur une appli : je supprime le cache du client local. Essaie, on sait jamais.
Avatar de l’utilisateur
Wildcat
Premier posts
Premier posts
 
Message(s) : 19
Inscrit(e) le : 06 Jan 2010 à 11:11
Localisation : Montpellier

Suivant

Retour vers Développement