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

VBA Access Discussion :

Petit problème avec les cases à cocher vrai/faux et -1/0 [AC-365]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut Petit problème avec les cases à cocher vrai/faux et -1/0
    Bonjour

    Je sèche sur un petit détail :

    J'ai des cases à cocher sur un formulaire
    Au load() du formulaire, pas de souci, les cases ont des valeurs vrai ou faux
    Si je décoche une case, elle prend la valeur 0
    Si je coche une case, elle prend la valeur -1

    et ça pose des pb de mise à jour de table ensuite (pb d'incompatibilité de type)
    Je peux faire "oui, mets quand même à jour la table", mais bon...

    Si je pouvais comprendre ce binz....

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 596
    Points : 1 092
    Points
    1 092
    Par défaut
    Bonjour,

    Dans ta table tu as donc un champ booléen ?

    Si oui ne t'embête pas avec les valeurs, utilise True et False.

    ONTAYG

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Je lance un SQL UPDATE pour mettre à jour une table (TabPlan)
    Dans TabPlan les champs AstL, AstMa, AstMe.... sont bien du type booleen OUI/NON
    Dans mon formulaire, me.AstL, me.AstMa.... sont des cases à cocher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    monsql2 = "UPDATE TabPlan SET TabPlan.[1M] = '" & Me.LM & "', TabPlan.[1A]= '" & Me.LA & "', TabPlan.[2M]= '" & Me.MaM & "', TabPlan.[2A]= '" & Me.MaA & "', TabPlan.[3M]= '" & Me.MeM & "', TabPlan.[3A]= '" & Me.MeA & "', TabPlan.[4M]= '" & Me.JM & "', TabPlan.[4A]= '" & Me.JA & "', TabPlan.[5M]= '" & Me.VM & "', TabPlan.[5A]= '" & Me.VA & "'"
    monsql2 = monsql2 & ", TabPlan.[AstL] = '" & Me.AstL & "', TabPlan.[AstMa] = '" & Me.AstMa & "',TabPlan.[AstMe] = '" & Me.AstMe & "',TabPlan.[AstJ] = '" & Me.AstJ & "',TabPlan.[AstV] = '" & Me.AstV & "' WHERE (TabPlan.Semaine like '" & Me.ChoixS & "' AND TabPlan.Nom like '" & Me.ChoixNom.Column(1) & "')"
     
    DoCmd.RunSQL monsql2
    Je ne pige pas ce qui se passe, pourquoi c'est -1 et 0 (je le vois quand je passe la souris sur les champs concernés dans monsql2 en débug) au lieu de renvoyer true ou false

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Bon, ce n'est pas une question de FAUX/VRAI ou 0/-1 apparemment, mais c'est sûr que c'est cette mise à jour de booléen qui pose pb
    Quand je supprime le texte de mise à jour des champs booléens, je n'ai plus de msg d' erreur
    Peut-être ai-je mal écrit monsql2 (2e ligne) ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 596
    Points : 1 092
    Points
    1 092
    Par défaut
    Re

    Pour les champs booléens ne pas mettre de quotes (')

    ONTAYG

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Merci ONTAYG, faut le savoir !

    monsql2 est maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monsql2 = "UPDATE TabPlan SET TabPlan.[1M] = '" & Me.LM & "', TabPlan.[1A]= '" & Me.LA & "', TabPlan.[2M]= '" & Me.MaM & "', TabPlan.[2A]= '" & Me.MaA & "', TabPlan.[3M]= '" & Me.MeM & "', TabPlan.[3A]= '" & Me.MeA & "', TabPlan.[4M]= '" & Me.JM & "', TabPlan.[4A]= '" & Me.JA & "', TabPlan.[5M]= '" & Me.VM & "', TabPlan.[5A]= '" & Me.VA & "'"
    monsql2 = monsql2 & ", TabPlan.[AstL] = " & Me.AstL & ", TabPlan.[AstMa] = " & Me.AstMa & ",TabPlan.[AstMe] = " & Me.AstMe & ",TabPlan.[AstJ] = " & Me.AstJ & ",TabPlan.[AstV] = " & Me.AstV & " WHERE (TabPlan.Semaine like '" & Me.ChoixS & "' AND TabPlan.Nom like '" & Me.ChoixNom.Column(1) & "')"
    Mais à l'exécution j'ai 2 fenêtres me demandant "Entrer une valeur de paramètre" pour FAUX et VRAI !
    je me suis trompé dans la correction de la ligne 3 ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 596
    Points : 1 092
    Points
    1 092
    Par défaut
    Re

    Si on te demande d'entrer un paramètre en général c'est qu'un champ est mal orthographié

    ONTAYG

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    tout a l'air bien orthographié, dans la table, dans le formulaire et dans le sql

    Quand je passe les 2 popups, c'est comme tout à l'heure avec le 1er pb, ça se met quand même à jour !

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 920
    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 920
    Points : 4 828
    Points
    4 828
    Par défaut
    Bonjour,
    place un après les lignes
    monsql2 = ...
    dans la fenetre Execution du VBE tu verras la valeur de cette chaine et mieux diagnostiquer

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Merci Micniv,

    voici ce que le debug.print donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TabPlan SET TabPlan.[1M] = '', TabPlan.[1A]= '', TabPlan.[2M]= '', TabPlan.[2A]= '', TabPlan.[3M]= '', TabPlan.[3A]= '', TabPlan.[4M]= '', TabPlan.[4A]= '', TabPlan.[5M]= '', TabPlan.[5A]= '', TabPlan.[AstL] = Faux, TabPlan.[AstMa] = 0,TabPlan.[AstMe] = 0,TabPlan.[AstJ] = Faux,TabPlan.[AstV] = Faux ,TabPlan.DateLundi = '29/04/2024' WHERE (TabPlan.Semaine like '18' AND TabPlan.Nom like 'LEMESSAGER')
    je ne sais qu 'en penser

  11. #11
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 920
    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 920
    Points : 4 828
    Points
    4 828
    Par défaut
    et quand tu lances directement cette requete SQL, qu'est ce se passe ?

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 380
    Points : 2 007
    Points
    2 007
    Par défaut
    Hello,

    Quid d'écrire une requête paramétrée plutot que construire une chaine par concaténation qui pose plein de problèmes de conversion de données ?

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Sql As String
    Sql = Sql & "PARAMETERS Flag Boolean;" & VbCrLf    '// Declaration de paramètres
    Sql = Sql & "UPDATE MaTable" & VbCrLf
    Sql = Sql & "SET MaColonne = [Flag];"    '// Utilisation du paramètre
     
    Dim Db As DAO.Database
    Set Db = CurrentDb
     
    Dim Qd As DAO.QueryDef
    Set Qd = Db.CreateQueryDef("TempQuery", Sql)    '// Creation d'une requête
    Qd.Parameters("Flag"].Value = Me.CheckBox.Value    '// Initialisation du Paramètre
    Qd.Execute
     
    Db.QueryDefs.Delete Qd.Name    '// Destruction de la requête
    Avantages:
    Le code de la requête est plus lisible (il n'est pas pollué par la concaténation de variables).
    Le code de la requête est plus facile à maintenir.
    Les types de données sont vérifiés avant exécution de la requête (donc les problèmes sont plus facile à détecter)
    Les valeurs nulle sont supportées.

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Merci Deedolith, mais désolé, là ça me complique bien les choses, ce n'est pas de mon niveau
    même si j'ai déjà utilisé les Querydefs et Cie

    Je ne saurai pas adapter ce que tu proposes à ce que je fais en ce moment, surtout qu'il faut que ce se soir ok demain
    Je vais essayer de ruser en stockant des valeurs dans des champs cachés quand on "actionne" une case à cocher
    et ce seront ces valeurs (string) qui mettront à jour la table

    je voulais juste comprendre pourquoi une case à cocher présente parfois 0 et -1 au lieu de VRAI ou FAUX

    Je garde ta solution dans un coin et la réutiliserai sûrement à une autre occasion

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 380
    Points : 2 007
    Points
    2 007
    Par défaut
    La seule réelle difficulté, est de réécrire ta requête avec des paramètres.

    Pour cela tu peux t'aider du requêteur:
    Nom : Capture d'écran 2024-04-11 221440.png
Affichages : 80
Taille : 65,9 Ko
    Ensuite, tu affiches la requête en mode SQL et tu obtiens le code source de cette dernière.

  15. #15
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    merci je vais regarder ça

    là, j'ai contourné mon pb et ça marche - c'est un peu dans l' urgence

    Je recommencerai à zéro avec ta méthode à tête reposée

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

Discussions similaires

  1. Problème d'impression avec les cases à cocher
    Par madseb dans le forum Access
    Réponses: 7
    Dernier message: 17/09/2022, 18h20
  2. [Toutes versions] Cases à cocher Vrai/Faux avec ODBC
    Par nico.mollet dans le forum Access
    Réponses: 5
    Dernier message: 10/06/2009, 20h44
  3. Problème avec les cases à cocher
    Par psycopat dans le forum Access
    Réponses: 8
    Dernier message: 20/10/2005, 14h25
  4. Pb avec les cases à cocher
    Par magic8392 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/03/2005, 16h49
  5. Pb avec les cases à cocher
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/03/2005, 13h44

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