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

IHM Discussion :

Formulaire principal modifié si sous-formulaire modifié


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut Formulaire principal modifié si sous-formulaire modifié
    Bonjour,

    J'aimerais que lorsque mon sous-formulaire est modifié, la propriété Dirty du formulaire principal soit mise à vrai. Je pensais utiliser des champs pères et fils, mais comme mon sous-formulaire n'est pas lié, Access n'accepte pas leur gestion... Quelqu'un pourrait-il me donner un tuyau?

    Merci d'avance

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut, quelle propriété?!...
    Depuis le sous-form tu peux faire référence au form avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Parent.Lapropriété
    Parent.Lecontrôle

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Avec l'évènement OnDirty du sous formulaire, changer la valeur du contrôle propriété.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MonSubFom_OnDirty()
    Forms!MonFom![Propriété].value = true
    End Sub

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    Oups, désolé j'ai tapé un peu vite! C'est la propriété Dirty.

    Je réédite le post.

    J'ai essayé de de mettre manuellement la propriété à true mais Access me donne une erreur. ça me paraît d'ailleurs pas très orthodoxe...

  5. #5
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Il faut:
    Activer un Champ dépendant modifiable du form principal
    Modifier la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Parent.ChampDépendantModifiable.SetFocus
    Parent.Dirty = True

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    Merci pour vos réponses.

    Faw ta solution fonctionne, mais je crois que ce n'est pas la solution idéale à mon problème (s'il en existe une).

    Je récapitule: j'aimerais que lorsque je modifie mon sous-formulaire, le formulaire principal soit aussi mis à l'état Dirty, ceci afin que les événements BeforeUpdate et AfterUpdate s'exécute aussi (par exemple à la fermeture du formulaire) même si le formulaire principal n'a pas été modifié.

    J'ai essayé en mettant ta solution, Faw, dans l'événement Dirty du sous-formulaire. Bien sûr, le problème est que ça impose de sortir du sous-formulaire alors qu'on est en train de le modifier. Du coup j'ai essayé de mettre ta solution dans l'événement Exit du sous-formulaire en utilisant un flag que je mets à true lorsque le sous-formulaire est modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub SousForm_Exit(Cancel As Integer)
        If sousFormDirty = True Then
            ChampDépendantModifiable.SetFocus
            Me.Dirty = True
            sousFormDirty = False
        End If
    End Sub
    Dans ce cas là on est quitte de sortir du sous-form en pleine modification mais ça positionne tjs le curseur sur ce ChampDépendantModifiable à la sortie du sous-form, c'est pas très agréable à l'utilisation...

    Si tu as une idée elle est la bienvenue!

    Merci beaucoup pour ton aide en tout cas.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    Finalement j'ai trouvé une solution qui me satisfait (mais qui n'est intéressante que dans mon cas):

    J'ai remarqué qu'il existe un moyen de modifier l'enregistrement courant d'un formulaire lié par le code comme s'il l'avait été par l'utilisateur: en utilisant Me("NomDuChamp") = Valeur. Dans ce cas la propriété Dirty du formulaire est mise automatiquement à True.

    Dans mon cas, j'ai champ date qu'il est important de mettre à jour à chaque fois qu'une modification est faite dans mon formulaire (y compris le sous-formulaire). Donc en modifiant ce champ à chaque modification du sous-formulaire je mets du même coup la propriété Dirty du formulaire principal à True.

    Et ça me donne dans le sous-formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_Dirty(Cancel As Integer)
        Me.Parent("Date") = Now()
    End Sub
    En espérant que ça puisse être utile à quelqu'un d'autre...

    Merci à tous en tout cas!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/09/2009, 17h22
  2. Réponses: 2
    Dernier message: 23/07/2009, 14h18
  3. Réponses: 4
    Dernier message: 08/02/2007, 15h00
  4. Réponses: 5
    Dernier message: 01/10/2006, 13h48
  5. Réponses: 7
    Dernier message: 21/07/2006, 08h56

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