Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2011, 16h27   #1
Invité de passage
 
Homme Florent Millet
Étudiant
Inscription : juin 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme Florent Millet
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 6
Points : 3
Points : 3
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 (http://grenier.self-access.com/?post...e-de-selection) 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 :
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 :
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 ????
Florent_45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 18h50   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
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 : 3 939
Points : 6 278
Points : 6 278
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 :
1
2
3
Private Sub chkMaCaseAcocher_Click()
DoCmd.RunCommand acCmdSaveRecord
End Sub
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/06/2011, 22h05   #3
Invité de passage
 
Homme Florent Millet
Étudiant
Inscription : juin 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme Florent Millet
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 6
Points : 3
Points : 3
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 .

@+
Florent_45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h21.


 
 
 
 
Partenaires

Hébergement Web