aurelien0306
Messages postés181Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention 2 mars 2009
-
21 mars 2006 à 09:52
aurelien0306
Messages postés181Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention 2 mars 2009
-
21 mars 2006 à 14:38
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
aurelien0306
Messages postés181Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention 2 mars 2009 21 mars 2006 à 14:38
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