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

Contribuez Discussion :

Détecter la modification dans un formulaire. [Tutoriel]


Sujet :

Contribuez

  1. #1
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 595
    Points
    24 595
    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.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    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 (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 595
    Points
    24 595
    Par défaut
    En effet Etienne je suis entièrement d'accord avec ton analyse.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    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
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  6. #6
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    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 (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 595
    Points
    24 595
    Par défaut
    Un Dirty manuel !

    Un booléen qui change d'état suivant les évènements habituellement concernés. Peut-on voir ça ?!
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    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
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 138
    Points : 67
    Points
    67
    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
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 595
    Points
    24 595
    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.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    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 (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. [AC-2010] Détecter des modifications dans un formulaire indépendant
    Par MarieRoy dans le forum IHM
    Réponses: 1
    Dernier message: 17/04/2015, 22h13
  2. détecter des modifications dans une table Firebird
    Par DAGADA dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/05/2007, 10h05
  3. Modification dans un formulaire
    Par Zytop dans le forum IHM
    Réponses: 4
    Dernier message: 12/01/2007, 09h41
  4. Horodatage d'une modif dans un formulaire
    Par kluh dans le forum Access
    Réponses: 1
    Dernier message: 25/11/2005, 08h59
  5. Enregistrer une modification dans un formulaire
    Par micheline dans le forum Access
    Réponses: 5
    Dernier message: 26/06/2005, 19h13

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