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

Access Discussion :

Mise à jour champs formulaire à partir d'un autre champ formulaire


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Mise à jour champs formulaire à partir d'un autre champ formulaire
    Bonjour,

    J'ai un soucis , pour une chose qui me paraissait évidente.
    Je voulais mettre à jour le contrôle [Temps_reel], dans mon formulaire qui est attaché à une table( [Source Controle] = un champ de la table [Projet]), avec un champ calculé dans mon formulaire = [Temps Consommé].
    Je pensais que sur l'évènement Avant MAj ou Après MAJ du Formulaire il suffisait d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.[Temps_reel] = Me.[Temps Consommé]
    End Sub
    Mais cela ne marche pas.
    Vous avez une idée ?

    Merci beaucoup !

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonjour,
    l'évènement Form_BeforeUpdate se déclenche quand on change d'enregistrement, il faut utiliser l'évènement AfterUpdate de [Temps Consommé]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Cela ne marche pas non plus !
    Bonjour,

    Merci pour votre réponse, mais Cela ne marche pas non plus .
    Je précise que [Temps_Consommé] est un champ calculé : Somme des temps consommés dans le sous formulaire, puis Stocké dans le pied du sous formulaire et repris dans le Formulaire principal champ [Temps_Consommé].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Temps_Consommé_AfterUpdate()
    Me.[Temps_reel ] = Me.[Temps_Consommé]
    End Sub
    Merci !

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    Je précise que [Temps_Consommé] est un champ calculé : Somme des temps consommés dans le sous formulaire, puis Stocké dans le pied du sous formulaire et repris dans le Formulaire principal champ [Temps_Consommé].
    si ce n'est pas sur mise à jour de [Temps Consommé], mets-le l'évènement sur Form_Current() du formulaire
    Mais quelle idée de vouloirs stocker des valeurs calculées issues de données adjacentes

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Justification de mon besoin
    Bonsoir oui vous avez raison, ça marche ainsi.
    En fait je voulais récupérer cette valeur dans un champ de ma table liée au Formulaire principal [PROJET].
    L'utilisateur doit pouvoir soit :
    -Utiliser le champ calculé par défaut :[Temps_consommé] (Somme des champs des temps consommés dans les [Actions] de mon sous formulaire), pour son suivi
    - Soit pouvoir directement affecter une valeur en saisissant un temps consommé, mais comme c'est un champ calculé ....


    Vous avez peut être une solution?

    Merci pour vos indications.
    ALEXM

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    en effet, on ne peut pas permettre les 2 à la fois (valeur calculée et saisie directe) sans mettre un contrôle qui autorise ou non la saisie avec le risque qu'a la prochaine ouverture du formulaire la saisie soit écrasée par le calcul ...
    C'est donc dangereux cette manière de faire, à mon sens

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite de la demande
    Bonjour Merci beaucoup !

    J'ai bien mis Me.[Temps_reel ] = Me.[Temps_Consommé]
    sur l'évènement sur Form_Current() du formulaire : Ca marche très bien sauf que le premier enregistrement reste toujours à "0", cela semble normal : la procédure se déclenche sur changement d'enregistrement.
    Il y a moyen de contourner pourque le premier enregistrement s'execute aussi?

    Merci pour votre réponse

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonjour,
    sur l'évènement sur Form_Current() du formulaire : Ca marche très bien sauf que le premier enregistrement reste toujours à "0", cela semble normal : la procédure se déclenche sur changement d'enregistrement.
    c'est bizarre, elle doit se déclencher juste après l'ouverture et le chargement (Form_Open et Form_Load) et à priori, le sous-formulaire doit être chargé...

    Mais le problème avec ce code, même si il n' y a aucune mise à jour, le fait d'ouvrir le formulaire et de passer à l'enregistrement suivant va mettre à jour le champ à chaque fois. Est-ce vraiment ce que tu souhaites ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite de notre affaire
    Bonjour,

    Merci pour ta réponse.
    Non je ne souhaite pas remettre à jour à chaque ouverture d'une fiche, je souhaite que la valeur de [Temps_reel] soit figé une fois que le champs [Temps _consommé] a été mis à jour.
    Mais sur procédure After_update du contrôle [Temps _consommé], cela ne marche pas. C'est vous vous m'avez conseillé de mettre sur la procédure Form_Current() du formulaire et à juste titre.

    Bonne soirée

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    une mise à jour implique une modification d'un champ de la table par une saisie.
    Si le champ Temps_Consommé n'est pas un champ de la table mais un champ calculé comme indiqué ici:
    Je précise que [Temps_Consommé] est un champ calculé : Somme des temps consommés dans le sous formulaire, puis Stocké dans le pied du sous formulaire et repris dans le Formulaire principal champ [Temps_Consommé].
    le code actuel se produira à chaque fois.
    Donc, il faut que tu précises la manière dont le champ doit être mis à jour: sur modification d'un enregistrement du sous-formulaire par exemple ou éventuellement un bouton appuyé dans le formulaire principal, mais certainement pas comme actuellement

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Fin de discussion
    Bonjour,

    Donc en fait j'ai compris le problème. Le champs [Temps_reel] se met à jour à partir du champ [Temps_consommé] (champ qui se met à jour à partir d'un sous formulaire), que quand il est appelé
    à partir d'un autre contrôle , en ajoutant Me.refresh. je voulais à l'origine mettre à jour [Temps_reel] quand la valeur calculée de [Temps_consommé] changeait, cela ne marche pas comme cela.
    J'ai donc contourné le problème en mettant cet évènement sur l'enregistrement du formulaire.

    Bonne journée

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

Discussions similaires

  1. [AC-2019] Aciver un champ à partir d'un autre formulaire
    Par irimi54 dans le forum Access
    Réponses: 5
    Dernier message: 09/09/2020, 18h48
  2. Réponses: 4
    Dernier message: 22/09/2017, 12h24
  3. Modifier les champs d'un formulaire à partir d'un autre
    Par ToTo13 dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/07/2007, 12h50
  4. Réponses: 8
    Dernier message: 04/07/2007, 18h41
  5. Réponses: 2
    Dernier message: 22/03/2007, 18h47

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