banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Mon 30 August 2010 10:26

geofL
Juste Inscrit !
Date d'inscription: 9 Jul 2009
Messages: 6

[ACCESS 2003] Problème d'export de donnée d'un formulaire -> table

Bonjour,

Je me sers d'un formulaire pour mes relevés terrains. Celui-ci est organisé de cette façon:

  * Deux grandes thématiques: Intérêt et Faisabilité,
  * Chaque thématique est constituée de 5 zones à liste déroulante comportant chacune uniquement 3 choix,
  * Chacun des choix possibles correspond à une note (0, 0.5, ou 1) qui renseigne une case du même formulaire via un code VBA,
  * Ces notes sont additionnées dans une case permettant une évaluation sur 5 de la thématique traitée,
  * Enfin les deux notes sur 5 concernant la Faisabilité, et l'Intérêt sont additionnée dans une case "note globale" sur 10.

Tout fonctionne bien au niveau du formulaire, mais j'ai du mal à trouver une méthode pour automatiquement remplir les colonnes de la table de ma base concernant les notes sur 5 pour les thématiques, ainsi que la note globale sur 10.
Le seul système que j'ai trouvé est un bouton qu'il faut cliquer une fois chaque fiche remplie ce qui n'est pas pratique du tout. Voici la code affilié au bouton:

Code:

'Intégration des notes dans la table access
Private Sub Commande668_Click()
Dim GLOB As Variant
Dim Upt_faisabilite As Variant
Dim Upt_interet As Variant

GLOB = Forms![Formulaire_de_saisie]![LNOTE_GLOBALE]
Me.[NOTE_GLOBALE] = GLOB
Me.Refresh

Upt_faisabilite = Forms![Formulaire_de_saisie]![LNOTE_FAISABILITE]
Me.[NOTE_FAISABILITE] = Upt_faisabilite
Me.Refresh

Upt_interet = Forms![Formulaire_de_saisie]![LNOTE_INTERET]
Me.[NOTE_INTERET] = Upt_interet
Me.Refresh
End Sub

Avec cela ça fonctionne, ma table est bien remplie mais je cherche à faire la même chose de façon automatique.
J'aimerai que dès qu'un changement intervient dans ma note globale, les 3 champs de ma table soit mis à jour.
J'ai essayé en jouant sur les évènements de ma case NOTE GLOBALE, sans succès.

Quelques autres informations concernant les champs du formulaire:

Nom: LNOTE_GLOBALE
Source contrôle: =[LNOTE_FAISABILITE]+[LNOTE_INTERET]

Nom: LNOTE_FAISABILITE
Source contrôle: =[LNOTE_VITESSE]+[LNOTE_PENTE]+[LNOTE_RESTRICT]+[LNOTE_FONCIER]+[LNOTE_TRAFIC]


Nom: LNOTE_INTERET
Source contrôle: =[LNOTE_AMENAG]+[LNOTE_POLE]+[LNOTE_TYPE_POLE]+[LNOTE_TYPE_USAGER]+[LNOTE_SECU]

Merci d'avance pour vos réponses.

Hors ligne

 

#2 Mon 30 August 2010 10:41

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3183
Site web

Re: [ACCESS 2003] Problème d'export de donnée d'un formulaire -> table

Bonjour,

Je ne suis pas sur d'avoir tout compris, car vous ne décrivez pas le contenu de vos tables. Et il me semble que le pb ce situe à ce niveau.
Il faut stocker chaque note (0,0.5,1) pour chaque ?? et ensuite faire une requête calculée pour obtenir les notes sur 5 et celle sur 10.

Si vous ne souhaitez enregistrer que les notes sur cinq et sur 10 il faut jouer sur l'événement mis à jour de chaque contrôle renseignant la note (0,0.5,1). Mais d'un point de vue conception c'est pas joli !

A+


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#3 Mon 30 August 2010 10:46

geofL
Juste Inscrit !
Date d'inscription: 9 Jul 2009
Messages: 6

Re: [ACCESS 2003] Problème d'export de donnée d'un formulaire -> table

Bonjour,

En fait, il n'y a qu'une seule table et le formulaire n'est pas construit sur une requête, mais via la liaison entre le nom de la case du formulaire, et celui de la colonne de la table.

En fait, tout se passe bien au niveau des calculs, le stockage des notes intermédiaires aussi se passe bien, c'est au niveau des notes thématiques et de la note finale que ça coince.

Le code lié au bouton fonctionne mais je n'arrive pas à trouver le moyen de faire la même chose de façon automatique.


** EDIT **

Finalement je suis passé par une procédure évènementielle sur le formulaire même.
En me servant de l'évènement Avant MAJ, et en calant mon code sans les refresh ce qui donne:

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim GLOB As Variant
Dim Upt_faisabilite As Variant
Dim Upt_interet As Variant

GLOB = Forms![Formulaire_de_saisie]![LNOTE_GLOBALE]
Me.[NOTE_GLOBALE] = GLOB


Upt_faisabilite = Forms![Formulaire_de_saisie]![LNOTE_FAISABILITE]
Me.[NOTE_FAISABILITE] = Upt_faisabilite


Upt_interet = Forms![Formulaire_de_saisie]![LNOTE_INTERET]
Me.[NOTE_INTERET] = Upt_interet

End Sub

Et pour le moment cela fonctionne.

Dernière modification par geofL (Mon 30 August 2010 14:23)

Hors ligne

 

Pied de page des forums

Powered by FluxBB