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

VBA Access Discussion :

Comparaison champs d'un formulaire avant/après modifications


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut Comparaison champs d'un formulaire avant/après modifications
    Bonjour,

    Je souhaite archiver les modifications effectuées sur les champs (date, texte) d'un formulaire entre le moment où il a été ouvert et sa fermeture.
    Pour cela j'utilise deux recordsets l'un avec les données de départ et l'autre avec les données à la femreture (qui ont donc pu être modifiées). Je compare champ par champ. Cela marche lorsque je modifie un champ non vide mais lorsque je vide un champ de son contenu ou que j'écris dans un champ initialment vide, je n'arrive pas à sauvegarder les modifications dans ma table archive : T_Histo.

    Je ne sais donc pas comment faire pour effectuer un archivage de la modification dans ces deux cas.
    J'ai essayé d'ajouter deux conditions "If .... then" avec comme critère empty et not empty mais rien à faire. J'ai aussi essayé avec "" et Null mais pas mieux.

    Pourriez-vous m'aider à résoudre ce problème. Voici le code que j'utilise :

    Code : 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     'Recordset avec les données à la fermeture (qui ont pu etre modifiées)
    Set rs = db.OpenRecordset("T_Temp_projects", dbOpenDynaset)
    'Recordset avec les données initiales à l'ouverture de mon form
        Set rs2 = db.OpenRecordset("T_Projects", dbOpenDynaset)
     
        rs2.FindFirst ("project_ID = " & Me.project_ID.Value)
     
        For i = 1 To 18
     
            If (rs.Fields(i).Value = Empty) And (rs2.Fields(i).Value <> Empty) Then
                ' recordset qui me permet d'archiver la modif dans ma table T_Histo   
                Set rs3 = db.OpenRecordset("T_Histo", dbOpenDynaset)
     
                rs3.AddNew
                rs3.Fields("project_histo_Id") = Me.project_ID.Value
                rs3.Fields("modif_date") = Now()
                rs3.Fields("resource_histo_Id") = Id
                rs3.Fields("modified_field") = rs2.Fields(i).name
                rs3.Fields("old_value") = CStr(rs2.Fields(i).Value)
                rs3.Update
                rs3.Close
     
                rs2.Edit
                rs2.Fields(i).Value = Null
                rs2.Update
     
           End If
     
            If (rs.Fields(i).Value <> Empty) And (rs2.Fields(i).Value = Empty) Then
     
                Set rs3 = db.OpenRecordset("T_Histo", dbOpenDynaset)
     
                rs3.AddNew
                rs3.Fields("project_histo_Id") = Me.project_ID.Value
                rs3.Fields("modif_date") = Now()
                rs3.Fields("resource_histo_Id") = Id
                rs3.Fields("modified_field") = rs2.Fields(i).name
                rs3.Fields("new_value") = CStr(rs.Fields(i).Value)
                rs3.Update
                rs3.Close
     
                rs2.Edit
                rs2.Fields(i).Value = rs.Fields(i).Value
                rs2.Update
     
           End If
     
            If rs.Fields(i).Value <> rs2.Fields(i).Value Then
     
                Set rs3 = db.OpenRecordset("T_Histo", dbOpenDynaset)
     
                rs3.AddNew
                rs3.Fields("project_histo_Id") = Me.project_ID.Value
                rs3.Fields("modif_date") = Now()
                rs3.Fields("resource_histo_Id") = Id
                rs3.Fields("modified_field") = rs2.Fields(i).name
                rs3.Fields("old_value") = CStr(rs2.Fields(i).Value)
                rs3.Fields("new_value") = CStr(rs.Fields(i).Value)
                rs3.Update
                rs3.Close
     
                rs2.Edit
                rs2.Fields(i).Value = rs.Fields(i).Value
                rs2.Update
     
            End If
        Next i
     
        rs.Close
        rs2.Close
     
        Set rs = Nothing
        Set rs2 = Nothing
        Set rs3 = Nothing
    Merci beaucoup par avance.

  2. #2
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    C'est bon j'ai résolu. En faisant une recherche apporfondi dans le forum j'ai trouvé une discussion parlant de la fonction IsNull() que je n'avais pas encore essayé. Et donc ca marche en remplacant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs.Fields(i).Value = Empty
    par Désolé pour le dérangement. Heureusement que ce forum existe

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/09/2011, 19h55
  2. Avertissement apres modification champ formulaire
    Par patos17 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 25/05/2007, 15h02
  3. vérification des champs d'un formulaire avant envoi
    Par fey dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 18/05/2007, 18h34
  4. [AJAX] Tester les champs d'un formulaire avant de pouvoir l'envoyer
    Par italiasky dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/05/2007, 13h25
  5. Réponses: 9
    Dernier message: 22/06/2005, 09h45

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