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 :

Problème décalage checkbox formulaire/table affiliée [AC-2003]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Géomaticien
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur Géomaticien

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 31
    Points
    31
    Par défaut Problème décalage checkbox formulaire/table affiliée
    Bonjour,

    je vais essayer de vous exposer mon problème le plus clairement possible. Le début de l'explication n'est pas obligatoire mais sa permet de recadrer le pourquoi de mon formulaire.

    J'ai une base de donnée Access 2003 contenant un certain nombre de tables dont une table "application" et une table "auteurs-app". Une application peut avoir plusieurs auteurs c'est pourquoi ces tables sont reliées entre elles à l'aide de la table affect_app_auteur contenant 2 clefs primaires (celle de la table application "id_app" et celle de la table auteur "id-auteur").

    En naviguant sur le net j'ai trouvé une méthode pour créer un formulaire de sélection que j'ai adapté "à ma sauce" pour permettre à l'utilisateur de choisir le/les auteur(s) de l'application lors de leur saisie.

    J'ai donc créée une table "tbl_selection" avec pour clef primaire le champ "numero" de type numérique, entier long (permettant d’accueillir "id_auteur) et un champ "selectionne" de type booléen (oui/non).

    Dans mon formulaire de sélection d'auteur j’obtiens donc un formulaire tabulaire contenant l'ensemble des données existantes de la table "auteurs_app" (nom_auteur, prenom_auteur, email_auteur) ainsi que les checkbox de la table "tbl_selection" en face de chaque enregistrements.

    J'ai donc utiliser le code proposer sur la page internet pour créer mon formulaire de sélection que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    ' ---
    ' INITIALISATION DES SELECTIONS
    ' ---
     
     
    Sub InitialiserSelection( _
      ByVal str_auteurs_app As String, _
      ByVal str_id_auteur As String, _
      Optional ByVal str_tbl_selection As String = "tbl_selection", _
      Optional ByVal strWhere As String = "")
     
      ' Vider la table des sélections
     str_tbl_selection = "[" & str_tbl_selection & "]"
      CurrentDb.Execute "DELETE * FROM " & str_tbl_selection & ";"
     
      ' Renseigner les nouvelles valeurs
      ' de la table des sélections
     Dim strSQL As String
     
      strSQL = "INSERT INTO " & str_tbl_selection & " (numero, selectionne)" _
        & " SELECT [" & str_id_auteur & "], False" _
       & " FROM [" & str_auteurs_app & "]"
     If strWhere <> "" Then strSQL = strSQL & " WHERE " & strWhere
     CurrentDb.Execute strSQL
     
    End Sub
    Puis j'ai fait appel à ce module dans mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    '-------------------------------------UTILISATION DU MODULE D'INITIALISATION AU CHARGEMENT DU FORMULAIRE------------------------------------------------------
     
    Private Sub Form_Open(Cancel As Integer)
     
      InitialiserSelection "auteurs_app", "id_auteur", "tbl_selection" 'On lance le module
      Me.Requery
     
    End Sub
    Mon problème vient du fait que lorsque je coche une des checkbox de la liste elle s'affiche bien comme cochée mais en réalité ne l'est pas dans la table "tbl_selection" (elle est toujours false), pour qu'elle soit réellement activée il est nécessaire de cocher une seconde checkbox de la liste. Mais cette seconde checkbox n'est alors elle non plus pas réellement cochée (sa valeur est toujours false) etc...

    La problématique est identique si je souhaite décocher une checkbox, l'effet ne se fera réellement que lorsque j'aurais décocher une seconde checkbox.

    Je ne voit pas trop d’où vient le problème, je pensais que cela pouvait venir d'un problème d'initialisation des checkbox, j'ai donc essayer de mettre comme valeur par défaut "false" aux checkbox mais sa ne change rien.

    Donc la je sèche (je suis un débutant en vba donc ça m'aide pas non plus ) auriez vous une idée/indication ????

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Citation Envoyé par Florent_45 Voir le message
    Mon problème vient du fait que lorsque je coche une des checkbox de la liste elle s'affiche bien comme cochée mais en réalité ne l'est pas dans la table "tbl_selection" (elle est toujours false), pour qu'elle soit réellement activée il est nécessaire de cocher une seconde checkbox de la liste. Mais cette seconde checkbox n'est alors elle non plus pas réellement cochée (sa valeur est toujours false) etc...
    Ça me paraît normal.
    Si tu ouvres une table et que tu modifies la valeur d'un champ, mais que tu laisses le curseur sur le même enregistrement, les modifications ne sont pas enregistrées dans la table.
    Il faut un événement pour déclencher l'écriture dans la table.
    Le plus courant étant le changement d'enregistrement actif (celui qui a le curseur).
    Dans une table ou une requête ouverte en mode feuille de données, des données modifiées mais non enregistrées sont matérialisées par un petit crayon dans le sélecteur d'enregistrement.

    Si tu veux sauvegarder l'enregistrement dès modification d'une case à cocher, gère l'événement "Sur clic" de la case à cocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub chkMaCaseAcocher_Click()
    DoCmd.RunCommand acCmdSaveRecord
    End Sub
    A+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Géomaticien
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur Géomaticien

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Points : 31
    Points
    31
    Par défaut
    Ok je viens de faire la petite modification et sa marche niquel

    Je ne savait pas qu'un événement était nécessaire pour déclencher un enregistrement dans une table, mais une fois qu'on le sait ça parait logique, il ne se passe rien si on fait rien....

    En tout cas merci beaucoup pour ton aide, il me reste à voir comment appliquer cet événement d'enregistrement pour mes boutons "tout sélectionner" et "tout déselectionner", ce sera fait demain matin.

    J’espère qu'avec l’expérience je serai apte à répondre aux questions sur le forum car sa fait toujours plaisir d'avoir et donc de donner un coup de main .

    @+

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

Discussions similaires

  1. [XL-2010] Problème de Checkboxes formulaire
    Par Tyrex5555 dans le forum Excel
    Réponses: 0
    Dernier message: 28/08/2012, 09h30
  2. Problème d'envoi formulaire avec checkboxes
    Par neospirit dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2011, 11h14
  3. Problème relation formulaire/table
    Par moilou2 dans le forum IHM
    Réponses: 5
    Dernier message: 28/02/2008, 14h49
  4. [SQL]Problème liens formulaires / tables
    Par PAINCO dans le forum IHM
    Réponses: 13
    Dernier message: 06/04/2007, 16h07
  5. Réponses: 4
    Dernier message: 30/10/2005, 09h13

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