IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Booléen dans une requête


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Booléen dans une requête
    Bonjour et bonne année à tous.
    Je travaille en ACCESS2000.
    J'ai une requête qui, telle qu'écrite ci-dessous, marche sans problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        SQL = "INSERT INTO t_opsimu ( op_bien, op_scenario, op_num, op_liée, op_genere) " _
        & " Values ( " & bien & ", " & scenario & ", " & num & ", 0, Yes );"
    Si, au lieu de Yes, je mets le nom d'une variable bolléenne : gen que j'ai préalablement initialisée à True ou False, l'exécution de la requête donne lieu à une erreur de conversion de type.
    Faut-il encadrer la variable gen par un caractère spécial (du type de Chr(34)) ?
    Merci de me sortir de ce mauvais pas !

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut et meilleurs voeux aussi.
    essaye comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL = "INSERT INTO t_opsimu ( op_bien, op_scenario, op_num, op_liée, op_genere) " _
        & " Values ( " & bien & ", " & scenario & ", " & num & ", 0, " & gen & " );"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut booléen dans une requêt
    Merci pour ta réponse rapide.
    J'avais déjà essayé auparavant, mais j'ai recommencé (au cas où j'aurais fait une faute de syntaxe. J'ai eu le même résultat :
    le système me demande la valeur de la variable 'Vrai' et quand je fais Debug.Print pour avoir le code généré, j'obtiens
    INSERT INTO t_opsimu ( op_bien, op_scenario, op_num, op_liée, op_genere) Values ( 447, 3, 1468, 0, Vrai );
    .

    C'est ce qui me fait dire que les booléens dans une requête, doivent être encadrés par une balise, mais laquelle ?
    Merci pour ta réponse rapide.

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 917
    Points : 4 818
    Points
    4 818
    Par défaut
    Salut,
    ta variable gen doit être déclarée de type Boolean (ou Long)
    et dans ce cas ta première syntaxe marchera (il faut se rappeler que derrière True se cache -1 )

    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Booléen dans une requête
    Merci micniv
    Ma variable est bien déclarée comme 'boolean' et sa valeur est, selon les cas, à 'true' ou 'False'. Ma variable op_genere est déclarée de type Oui/Non dans la constitution de la table t_opsimu.
    J'ai bien une solution, c'est celle que j'utilise à défaut, elle consiste après avoir inséré mon enregistrement, à faire un test sur la valeur de gen et, s'il est à 'true' de faire un UPDATE de l'enregistrement en utilisant Yes comme dans la requête INSERT.
    Mais je trouve cette solution quelque peu 'bestiale'. Il doit bien y avoir un moyen d'insérer directement une valeur booléenne.
    A+

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Oui le problème vient du fait que la contenation sans la variable SQL réalise un cast automatique du booléen en String.

    Essaye ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL = "INSERT INTO t_opsimu ( op_bien, op_scenario, op_num, op_liée, op_genere) " _ 
        & " Values ( " & bien & ", " & scenario & ", " & num & ", 0, " & IIF(gen,-1,0) & " );"
    Là, on utilise un numérique au lieu d'un booléen dans la chaine SQL. Et le numérique casté en string conserve sa valeur contrairement au booléen qui est traduit

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut booléen dans une requête

    Merci Tofalu, ca baigne et, en prime, ca m'explique d'autres trucs que j'avais contournés.
    A h, si on ne les avait pas ces chefs à 8 plumes !

    Encore merci et bonne année

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment traiter un booléen dans une requête ?
    Par souhail72 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/02/2014, 15h38
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31
  4. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo