Page 1 sur 1

[R] Problème If/EndIf pour un champs vide

Posté : mar. 12 août 2008 18:05
par SteelHawk
Bonjour,

Je suis total noob sur AutoIt et j'essaye actuellement de faire un petit programme pour simplifier la vie de mes collègues sur SAP. Il doit rechercher dans un liste SAP la présence de robinets

J'ai parcouru le forum et je n'ai pas trouvé de reponse... en meme temps j'ai pas tout compris ^^

voila en gros mon problème... j'ai crée un GUI dans lequel l'utilisateur saisi son login, son mdp ainsi que 3 robinets aux choix.
#include <GuiConstants.au3>
; Architecture de la fenetre d'identification
GuiCreate("Requete GMAO", 400, 220,(@DesktopWidth-191)/2, (@DesktopHeight-157)/2)

$Version = GuiCtrlCreateLabel("Ver. 1.2", 360, 5, 131, 21)
$Label_1 = GuiCtrlCreateLabel("Login", 30, 30, 131, 21)
$InputLogin = GuiCtrlCreateInput("", 30, 50, 130, 21)
$Label_3 = GuiCtrlCreateLabel("Mot de Passe", 30, 80, 131, 21)
$InputPass = GuiCtrlCreateInput('',30, 100, 130, 21, 0x21)
$Label_4 = GuiCtrlCreateLabel("N° Rob 1 à controler", 230, 30, 131, 21)
$Robinet = GuiCtrlCreateInput("", 230, 50, 130, 21)
$Label_5 = GuiCtrlCreateLabel("N° Rob 2 à controler", 230, 80, 131, 21)
$Robinet2 = GuiCtrlCreateInput("", 230, 100, 130, 21)
$Label_6 = GuiCtrlCreateLabel("N° Rob 3 à controler", 230, 130, 131, 21)
$Robinet3 = GuiCtrlCreateInput("", 230, 150, 130, 21)
$ok = GuiCtrlCreateButton("Ok", 30, 190, 130, 20)
$ligne=GuiCtrlCreateGraphic(200, 20, 80,80)
GUICtrlSetGraphic(-1,$GUI_GR_LINE, 0,180)
[...] Jusque la tout va bien. Mais le problème que je rencontre c'est que les utilisateurs ne rentrent pas forcement 3 robinets. Ils peuvent en saisir 1, 2 OU 3. Ce que j'aimerais faire c'est un "If Then" qui, si le champs de départ n'est pas renseigné, passe directement au EndIf

Le programme consiste en gros en une suite de macro et arrivé à ce point....
; Recherche si le robinet nommé au depart se trouve dans la requete
Send("{TAB 20}")
Send("^a")

Send("^+{F2}")
Sleep(5000)
Send("{TAB 11}")
Send("{ENTER}")
Sleep(2000)
Send("*")
Send(GUICtrlRead($Robinet))
Send("*")


If $Robinet2 = True Then
Send("{TAB 2}")
Send("*")
Send(GUICtrlRead($Robinet2))
Send("*")
EndIf

If $Robinet3 = True Then
Send("{TAB 2}")
Send("*")
Send(GUICtrlRead($Robinet3))
Send("*")
EndIf


Send("{F8}")
Sleep(2000)
Send("{ENTER}")
Voila, j'ai bien conscience que mon if////endif est completement foireux... Mais je n'y comprend pas grand chose en logique booleen.... j'ai essayer avec des <> des ="" des >0.... mais rien n'y fait.......

Si vous pouvez me dépanner, merci d'avance ^^

Re: [..] Probleme If/EndIf pour un champs vide

Posté : mer. 13 août 2008 20:01
par Gollem
Bonjour,

La logique du if est simple , il faut que le résultat donne true ou false, 1 ou 0.

Le test est du style : if $robinet = "" then

les "" représentent une chaîne non saisie

Re: [..] Probleme If/EndIf pour un champs vide

Posté : jeu. 14 août 2008 10:55
par SteelHawk
Gollem, merci pour ta reponse, mais j'avais deja essayer = ""....

En cherchant j'ai finalement trouver mon erreur...

Il fallait mettre

If GUICtrlRead($Robinet2) = True Then

Et non pas
If $Robinet2 = True Then
Merci ^^

Re: [..] Probleme If/EndIf pour un champs vide

Posté : dim. 17 août 2008 23:55
par Tlem
Vous devriez plutôt utiliser ceci :

Code : Tout sélectionner

If Not GUICtrlRead($Robinet2) = 0
car la fonction GUICtrlRead renvoie le texte du contrôle (Si il y en à), ou 0 si le contrôle est vide.