Vous avez un problème bizarre dans une instruction IF
avec plusieurs conditions. La dernière version de travail ressemble à:VB6 déclaration IF multiple problème bizarre
If VAR1 = "SCRT" And InStr("|TEC|FIN|", "|" & VAR2 & "|")) And VAR3 = 1 Then
Et maintenant, je mets en œuvre une autre condition à la déclaration:
If VAR1 = "SCRT" And InStr("|TEC|FIN|", "|" & VAR2 & "|")) And (VAR3 = 1 or VAR3 = 15) Then
Avec ces valeurs: VAR1: "" (vide) VAR2: "FIN" VAR3: 1
Le code fonctionnera correctement dans le débogage. Le bizarre est la compilation et l'exécution sur l'environnement de production, la condition a passé même avec la première condition pas ok.
Déjà connecté les valeurs pour vérifier. L'environnement de production a les mêmes fichiers (bibliothèques).
La seule chose qui a changé en dehors de la condition est l'option explicite au début de ce module.
Merci!
'Sur erreur Resume Next' et' VAR1' est nul? – wqw
Instr retourne la position de la correspondance (1 ou 5 ou 0) L'opérateur And est bit à bit dans VB6 Une valeur TRUE est -1, donc tous les bits Vous devriez vérifier que le résultat de Instr est> 0. Cela retournera soit 0 soit -1 et votre expression sera plus correcte –
J'ai vu ceci, mais dans ce cas, vb6 convertit implicitement une valeur> 0 en True –