Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 12 sur 12
  1. #1
    Rédacteur/Modérateur

    Avatar de loufab
    Homme Profil pro Fabrice CONSTANS
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    8 606
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice CONSTANS
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 8 606
    Points : 15 687
    Points
    15 687

    Par défaut Détecter la modification dans un formulaire.

    Comment détecter la modification de données dans un formulaire au travers de cet article.

    http://loufab.developpez.com/tutorie...ns_formulaire/

    N'hésitez pas à commenter ce tutoriel.

  2. #2
    Modérateur

    Homme Profil pro René MAROT
    Inscrit en
    octobre 2005
    Messages
    7 017
    Détails du profil
    Informations personnelles :
    Nom : Homme René MAROT
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 7 017
    Points : 10 216
    Points
    10 216

    Par défaut

    Et encore un des mystères de Access révélé :-).

    Merci pour ce tutorial très clair et exhaustif.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.

  3. #3
    Membre Expert
    Avatar de Papy Turbo
    Homme Profil pro Etienne Pailleret
    Développeur VBA
    Inscrit en
    mars 2004
    Messages
    810
    Détails du profil
    Informations personnelles :
    Nom : Homme Etienne Pailleret
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : mars 2004
    Messages : 810
    Points : 1 477
    Points
    1 477

    Par défaut

    Salut, fabrice, bravo et super ! très clair et instructif.

    Je me permettrai juste 2 petites remarques de pinailleur : je trouve certaines définitions d'évènements, dans la 1ère colonne du tableau II-B, un peu confuses. Notamment les Before/AfterUpdate du contrôle et surtout du formulaire : oui, ils peuvent être déclenchés par une perte de focus, mais aussi par bien d'autres évènements comme un clic sur le sélecteur d'enregistrement, la fermeture... Ils ne se déclenchent, par contre, que si le contrôle (ou au moins un des contrôles, pour le formulaire) a été modifié... Suis je clair ?

    Par ailleurs, l'exemple Form_Current (III-C) ne fonctionnera pas. Comme tu l'as bien montré dans le tableau, si un enregistrement est modifié,
    - l'évènement Form_BeforeUpdate aura Dirty = vrai (pas enregistré : possibilité d'annuler)
    - Form_AfterUpdate > Dirty = faux (enregistrement terminé),
    et donc, nécessairement
    - Form_Current (le dernier !) > Dirty = Faux.
    Développement Office, support technique, assistance, sur place ou à distance

  4. #4
    Rédacteur/Modérateur

    Avatar de loufab
    Homme Profil pro Fabrice CONSTANS
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    8 606
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice CONSTANS
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 8 606
    Points : 15 687
    Points
    15 687

    Par défaut

    En effet Etienne je suis entièrement d'accord avec ton analyse.

  5. #5
    Rédacteur/Modérateur

    Avatar de argyronet
    Homme Profil pro Jean-Philippe AMBROSINO
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Philippe AMBROSINO
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : Finance

    Informations forums :
    Inscription : mai 2004
    Messages : 3 995
    Points : 6 322
    Points
    6 322

    Par défaut

    Bonjour,

    Bravo pour ce nouveau tuto...

    Pour ma part, la propriété Dirty exprime un usage aussi significatif que son nom.
    Tout comme moi, certains ingé de Microsoft eux-mêmes ne l'utilisent pas dans certains des développements dont j'ai eu les source ; ils préfèrent user d'une classe avec une propriété booléenne qui fait la même chose à la différence que l'on à la main sur le comportement.
    Par ailleurs, adepte du mode déconnecté dans mes développements, je suis contraint d'user d'un autre procédé pour ma part bien plus fiable.
    Pour finir, je construits le plus souvent des formulaires pour la saisie/création et d'autres pour la consultation et donc, cela limite les risques

    En tout état de cause, bien utilisé, il peut rendre effectivement service aux neophytes sur le comportement des données.

    Argy
    Ils comptent sur vous...

    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Web Site@Mail
    Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
    Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2013
    MDB Viewer : Visionneuse Access v4.0

  6. #6
    Membre Expert
    Avatar de Papy Turbo
    Homme Profil pro Etienne Pailleret
    Développeur VBA
    Inscrit en
    mars 2004
    Messages
    810
    Détails du profil
    Informations personnelles :
    Nom : Homme Etienne Pailleret
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : mars 2004
    Messages : 810
    Points : 1 477
    Points
    1 477

    Par défaut

    Citation Envoyé par argyronet Voir le message
    ils préfèrent user d'une classe avec une propriété booléenne qui fait la même chose à la différence que l'on à la main sur le comportement.
    Salut, Argy

    C'est une classe secrète, ou on peut y accéder ?
    Je ne vois pas bien ce qu'elle peut faire de plus que notre booléen 'pas propre' à nous ?
    Développement Office, support technique, assistance, sur place ou à distance

  7. #7
    Rédacteur/Modérateur

    Avatar de loufab
    Homme Profil pro Fabrice CONSTANS
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    8 606
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice CONSTANS
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 8 606
    Points : 15 687
    Points
    15 687

    Par défaut

    Un Dirty manuel !

    Un booléen qui change d'état suivant les évènements habituellement concernés. Peut-on voir ça ?!

  8. #8
    Rédacteur/Modérateur

    Avatar de argyronet
    Homme Profil pro Jean-Philippe AMBROSINO
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Philippe AMBROSINO
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : Finance

    Informations forums :
    Inscription : mai 2004
    Messages : 3 995
    Points : 6 322
    Points
    6 322

    Par défaut

    Bah, il n'y a rien d'extraordinaire...

    Au lieu de capter la propriété Dirty en son sens, on affecte un booléen au moment souhaité et on contrôle sa valeur au moment souhaité aussi.

    Pourquoi donc..? A vrai dire, je ne sais pas trop mais pour ma part, un climat de confiance à l'égard de la propriété Dirty et son comportement par fois bizarre peut être l'explication.

    Argy
    Ils comptent sur vous...

    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Web Site@Mail
    Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
    Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2013
    MDB Viewer : Visionneuse Access v4.0

  9. #9
    Membre à l'essai
    Inscrit en
    janvier 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 107
    Points : 23
    Points
    23

    Par défaut

    Bonjour,

    Je suis en train de m'auto-former sur VBA pour Access tout en réalisant une application. Je suis tombé sur ce tuto puis cette discussion. Le Dirty a l'air intéressant mais au vu de ce qui est dit plus haut, je me demande si l'utiliser ne me créera pas certains bugs que j'aurais du mal à gérer.

    Quels sont vos retours d'expériences sur son utilisation svp ?

    Si vous avez eu des bugs avec, y avez vous trouvé une solution et si oui lesquelles ?

    Merci à ceux qui réalisent des tuto et qui me permettent d'apprendre beaucoup de choses.

  10. #10
    Rédacteur/Modérateur

    Avatar de loufab
    Homme Profil pro Fabrice CONSTANS
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    8 606
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice CONSTANS
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 8 606
    Points : 15 687
    Points
    15 687

    Par défaut

    Qu'est ce que tu appelles bugs ? Une mauvaise utilisation de la propriété/méthode ?

    Je l'utilise fréquemment pour ne pas dire systématiquement et je n'ai pas constaté de bugs. Sinon comme l'indique argy il s'agit d'une boite noire qu'on ne contrôle pas réellement.

  11. #11
    Membre Expert
    Avatar de Papy Turbo
    Homme Profil pro Etienne Pailleret
    Développeur VBA
    Inscrit en
    mars 2004
    Messages
    810
    Détails du profil
    Informations personnelles :
    Nom : Homme Etienne Pailleret
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : mars 2004
    Messages : 810
    Points : 1 477
    Points
    1 477

    Par défaut

    + 1 pour Fabrice et son article.
    J'utilise aussi la propriété Dirty et l'évènement correspondant depuis longtemps, ne serait-ce que pour mettre "en lumière" le (sous-)formulaire en cours de saisie, jusqu'à l'enregistrement...
    Sans problème.

    Mais c'est peut être mon côté grunge qui me le fait apprécier ?
    Développement Office, support technique, assistance, sur place ou à distance

  12. #12
    Rédacteur/Modérateur

    Avatar de argyronet
    Homme Profil pro Jean-Philippe AMBROSINO
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Philippe AMBROSINO
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : Finance

    Informations forums :
    Inscription : mai 2004
    Messages : 3 995
    Points : 6 322
    Points
    6 322

    Par défaut

    Citation Envoyé par Papy Turbo Voir le message
    Mais c'est peut être mon côté grunge qui me le fait apprécier ?
    Oui c'est ça

    Bon, pour ma part, ainsi que je l'ai précisé, je créé mon "propre dirty"...
    Voici un exemple pratique :

    Code Dans le formulaire :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Option Compare Database
     
    Private cMyClass                                       As MyClass
    Private m_sFirstName                                   As String
     
    Private Property Get FirstName() As String
        FirstName = m_sFirstName
    End Property
     
    Private Property Let FirstName(ByVal sFirstName As String)
        m_sFirstName = sFirstName
    End Property
     
    Private Sub Form_Timer()
        Me.lblDirtyStatus.Caption = IIf(cMyClass.DataChanged, "Modifié", "Inchangé")
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
        If cMyClass.DataChanged Then
            If MsgBox("On sauvegarde ce qui a changé ?", vbQuestion + vbYesNo) = vbYes Then
                '[...]
            End If
        End If
        Set cMyClass = Nothing
    End Sub
     
    Private Sub txtFirstName_Exit(Cancel As Integer)
        With cMyClass
            .DataChanged = .ChangesMadeOnForm(Me!txtFirstName, FirstName)
        End With
    End Sub
     
    Private Sub Form_Load()
        Me.TimerInterval = 1000
        Set cMyClass = New MyClass
        GetCurrentValues
    End Sub
     
    Private Sub GetCurrentValues()
        FirstName = Nz(Me!txtFirstName, "")
    End Sub
    Code Module de classe :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Option Compare Database
     
    Private m_bDataChanged As Boolean
     
    Public Property Get DataChanged() As Boolean
        DataChanged = m_bDataChanged
    End Property
     
    Public Property Let DataChanged(ByVal bDataChanged As Boolean)
        m_bDataChanged = bDataChanged
    End Property
     
    Public Function ChangesMadeOnForm(ByVal DataField As Variant, ByVal OldFieldValue As Variant)
        If Len(Nz(DataField, "")) Then
            ChangesMadeOnForm = StrComp(DataField, OldFieldValue, vbTextCompare) <> 0
        End If
    End Function

    Certes, j'avoue, ça fait plus de code mais ici, si la personne annule l'entrée en cours de saisie ou retape la même valeur, l'effet "pseudo Dirty" est à False.

    C'est ma vision même si elle est criticable, elle peut donner des idées.
    Et puis, autre point primordial, mes formulaires sont toujours en mode déconnecté ; donc difficile de faire des boulettes dans ce cas ou alors, il faut le faire exprès

    Argy
    Ils comptent sur vous...

    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Web Site@Mail
    Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
    Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2013
    MDB Viewer : Visionneuse Access v4.0

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •