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 :
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
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
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...
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
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 ????
Partager