Vba access 2003 : not true ne vaut plus false !!!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 417 fois - Téléchargée 29 fois

Contenu du snippet

Bong sang, mais c'est pas vrai ! mais si !, Not True reste vrai maintenant ! MS a du redéfinir la valeur interne de True de telle sorte que Not True ne soit plus égal à 0 (qui est la valeur interne de False) ou alors je me demande si ce n'est pas plutôt un problème de traduction en français de True en Vrai, toujours est-il que Not True ne vaut plus toujours False ! En fait, selon la version du moteur VBA, la version d'Access et la version du projet Access qui est ouverte, tantôt le test fonctionne normalement (comme pour les précédentes versions d'Office et de VBA), et tantôt il reste toujours vrai : il n'est donc plus possible de prévoir quand le code va fonctionner ou pas. Du coup toutes les lignes de code telle que If Not MonBooleen Then ... doivent être réécrite en If MonBooleen = False Then ... car Not MonBooleen peut être évalué à vrai quelque soit la valeur de MonBooleen !
Heureusement, un ami m'a donné une idée simple, qui ressemble un peu à la technique de l'injection SQL : il suffit de remplacer toutes les occurrences de [Not] par [False =] mais seulement pour les booléens (de toute façon, on se demande bien qui peut utiliser Not avec autre chose que des booléens, à savoir pour inverser les bits d'un entier !). Sacré farceur ce Bill !

Source / Exemple :


Public Sub TestNotTrue()

    Dim bMonBooleen As Boolean
    bMonBooleen = True
    If Not bMonBooleen Then
        MsgBox "Not True ne vaut pas False !!!"
    Else
        MsgBox "Ok, Not True vaut bien False."
    End If

End Sub

Conclusion :


C'est pas une blague !

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
NON, en C/C++ différent de 0 n'est pas considéré comme True ni comme rien du tout, c'est 0 OU NON 0 mais rien de plus.
> BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
C'est exactement la même chose.
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Oui mais dans Access, le problème est que la variable était bien un booléen, alors que si tu fais un test avec un int, ce n'est pas la même chose.
NeerLess
Messages postés
1
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
22 janvier 2008
-
Salut à tous !

Du point je code aussi en C/C++, je porte à ta connaissance que ce genre d'interprétation existe !!!

En effet, en C/C++, toute valeur différente de 0 (en binaire) est consdérée comme un True, ceci est du à un test des drapeaux de ALU au coeur du CPU (le drapeau Z [Zero] précisement). Le code source qui suit marche avec Dev-C++ :

#include<stdio.h>

int main()
{
clrscr();

int r=1;

if (r) printf("R est vrai. R=%d",r);
r=(!r); // l'exclamation est pour le Not
if (r) printf("R est vrai. R=%d",r);

getch();
}

J'éspère avoir été utile, et à la prochaine.
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
Le vba.net est en bonne phase d'avancement. Il y aura un peu de travail de migration mais au moins ça harmonisera avec le vb actuel qui est entierement devenu .net, en avant avec le framework.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.