Opérations binaires/logiques [Résolu]

Signaler
Messages postés
181
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
2 mars 2009
-
Messages postés
181
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
2 mars 2009
-
Bonjour,
voilà je voudrais faire des opérations binaires :
J'ai un paramètre qui peut prendre plusieurs valeurs à la fois et je dois tester si telle ou telle valeur est affectée
J'ai défini mes constantes :
<%
Const ENTIER = &h1
Const CHAINE = &h2
Const NOTNULL = &h4
Const ENTIER_LONG = &h8
Const BLOB = &h16

'...
Dim champs_idExemple
champs_idExemple = 0

champs_idExemple = champs_idExemple Or ENTIER ' 00000000 Or 00000001 -> 00000001 &h1
champs_idExemple = champs_idExemple Or NOTNULL ' 00000001 Or 00000100 -> 00000101 &h5

Response.write " valeur champs_idExemple = " & champs_idExemple & vbCrLf
' champs_idExemple est entier et Non Null
'...
Response.write vbCrLf & "le champ est un entier? "
if champs_idExemple And ENTIER Then
Response.write "OK"
Else
Response.write "NON"
End If

Response.write vbCrLf & "le champ est une chaine? "
if champs_idExemple And CHAINE Then
Response.write "OK"
Else
Response.write "NON"
End If

Response.write vbCrLf & "le champ est NON null? "
if champs_idExemple And NOTNULL Then
Response.write "OK"
Else
Response.write "NON"
End If

Response.write vbCrLf & "le champ est un long? "
if champs_idExemple And ENTIER_LONG Then
Response.write "OK"
Else
Response.write "NON"
End If

Response.write vbCrLf & "le champ est un blob? "
if champs_idExemple And BLOB Then
Response.write "OK"
Else
Response.write "NON"
End If
%>

Or J'ai le résultat suivant :
valeur champs_idExemple = 5
le champ est un entier? OK
le champ est une chaine? NON
le champ est NON null? OK
le champ est un long? NON
OK</gras>

Et je ne comprends pas pourquoi... (quand j'en ai 12 constantes qui peuvent se combiner ça fait plusieurs erreurs....)
Enfin je n'arrive pas à trouver un paliatif au And logique pour arriver à mon résultat... pourtant je pense que c'est la bonne chose car quand je fais(ais) la même chose en PHP, ça marche nickel...
Une bonne âme pourrait-elle m'aider?
Merci d'avance

1 réponse

Messages postés
181
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
2 mars 2009

La solution :
Remplacer :
Const ENTIER = &h1
Const CHAINE = &h2
Const NOTNULL = &h4
Const ENTIER_LONG = &h8
Const BLOB = &h16
Par :
Const ENTIER = 1
Const CHAINE = 2
Const NOTNULL = 4
Const ENTIER_LONG = 8
Const BLOB = 16
Et le résultat est parfait (normal sans hexadécimal)
valeur champs_idExemple = 5
le champ est un entier? OK
le champ est une chaine? NON
le champ est NON null? OK
le champ est un long? NON
le champ est un blob? NON

Encore merci