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 :

Modifier données autre table si [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut Modifier données autre table si
    Bonjour à tous et à toutes,

    J'ai un formulaire pour gérer les adhérents d'une association ; il est basé sur la table T Adhérents
    J'ai une autre table T_Cotisation pour gérer les cotisations et présence aux Ag (champs NUM_COTISATION_PK, T_Adherent_FK, Cotisation_An, AG, Cotisation et Cotisation_Du).
    Les 2 tables sont reliées par N°Adherent <--->T_Adherent_FK

    Lors du décès d'un adhérent (c'est une association où le nombre d'anciens est important) j'avais le code suivant lié au contrôle [DateDécès].
    Il validait quelques données et mettait à 0 les cotisations dues de l'adhérent (J'ai mis ici les lignes concernées en commentaire)

    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
    Private Sub DateDeces_BeforeUpdate(Cancel As Integer)
     
    If DateDeces <> "" Then
        DateRadiation = DateDeces
        MotifRadiation = "décès"
        Adherent = False
        TypeAdherent = ""
        Me!NonAdherent.Visible = True
        Me!NonAdherent.Caption = "N'est plus Adhérent"
     
        ' Du97=0
        ' Du98=0
        '...
        ' Du35=0
     
        MsgBox "Les cotisations de cet adhérent décédé vont être mises à 0", vbExclamation, ""
     
    End If
     
    End Sub
    Du fait de la restructuration récente de ma base, je n'ai plus les champs Du97...Du35 mais le champ Cotisation_Du de ma table T_Cotisation.

    Comment modifier le code ci-dessus pour que toutes les cotisations dues de l'adhérent en question soient mises à 0 ?

    Merci de votre aide.

    A+

    C15

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Il faut faire exécuter une requête MAJ dans ta procédure :

    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
    Private Sub DateDeces_BeforeUpdate(Cancel As Integer)
    Dim l_strSql as String
     
    If DateDeces <> "" Then
        DateRadiation = DateDeces
        MotifRadiation = "décès"
        Adherent = False
        TypeAdherent = ""
        Me!NonAdherent.Visible = True
        Me!NonAdherent.Caption = "N'est plus Adhérent"
     
        l_strSql = "UPDATE T_Cotisation SET Cotisation_Du = 0 WHERE Cotisation_An  > " &  Year(Me.ActiveControl) & " AND T_Adherent_FK = " & Me.[Nom du Champ contenant le Code adherent dans le formulaire]
     
        With DoCmd
            ' Desactive les messages système 
            .SetWarnings False
            ' Execute la commande Sql
            .RunSQL l_strSql
            ' Réactive les messages système
            .SetWarnings True
       End With
     
        MsgBox "Les cotisations de cet adhérent décédé ont été mises à 0", vbExclamation, ""
     
    End If
     
    End Sub
    Pour peaufiner le code, il aurait été intéressant de voir le contenu de la table T_Cotisation. En effet, j'ai posé dans la condition WHERE le Critère Cotisation_An en supposant que les montants des cotisations sont déjà pré-saisis ( )

    Bonne continuation
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Merci de cette réponse ; cela fonctionne parfaitement après avoir modifié très légèrement la procédure pour mettre les cotisations dues à 0 depuis son adhésion.

    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
    Private Sub DateDeces_BeforeUpdate(Cancel As Integer)
    Dim l_strSql As String
     
    If DateDeces <> "" Then
     
        If MsgBox("Etes-vous sur que cet adhérent est bien décédé ?", vbQuestion + vbYesNo) = vbNo Then
     
            MsgBox "Pensez à effacer la date de décès que vous venez de saisir !", vbExclamation, ""
     
        Else
     
            DateRadiation = DateDeces
            MotifRadiation = "décès"
            Adherent = False
            TypeAdherent = ""
            Me!NonAdherent.Visible = True
            Me!NonAdherent.Caption = "N'est plus Adhérent"
     
            l_strSql = "UPDATE T_Cotisation SET Cotisation_Du = 0 WHERE Cotisation_An  >= " & Year(Me.DateAdhesion) & " AND T_Adherent_FK = " & Me.N°Adherent
     
              With DoCmd
                ' Desactive les messages système
                .SetWarnings False
                ' Execute la commande Sql
                .RunSQL l_strSql
                ' Réactive les messages système
                .SetWarnings True
              End With
     
            MsgBox "La case 'Adhérent' a été décochée" & Chr(10) & "Les cotisations de cet adhérent décédé ont été mises à 0", vbExclamation, ""
     
       End If
     
    End If
     
    End Sub
    J'ai aussi mis un message d'alerte pour bien vérifier que c'est le bon adhérent.
    Par contre plutôt que de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Pensez à effacer la date de décès que vous venez de saisir !", vbExclamation, ""
    Comment effacer la date de décès saisie par erreur et quitter la procédure ?

    Merci de ton aide

    A+

    C15

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Tu peux ajouter simplement
    à la place de la MsgBox si vbNo
    Un problème bien posé est à moitié résolu

  5. #5
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Désolé, mais sauf erreur de ma part, cela ne fonctionne pas .

    Merci de ton aide
    A+

    C15

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Effectivement, j'avais oublié que ton code était dans l'événement Avant MAJ de DateDeces.
    Et avecen changeant d'événement
    Un problème bien posé est à moitié résolu

  7. #7
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Il y a des jours sans, je l'avais tenté aussi, mais cela ne marche pas non plus

    Merci de ton aide
    A+

    C15

  8. #8
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Et sur Après MAJ ?
    Un problème bien posé est à moitié résolu

  9. #9
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Merci, cela fonctionne.

    Une fois de plus, cela n'arrange pas mes affaires, j'ai toujours eu un doute sur le fait de placer un événement avant ou après mise à jour

    A+

    C15

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/02/2009, 19h54
  2. Modifier une autre table dans un trigger
    Par Mister Nono dans le forum SQL
    Réponses: 4
    Dernier message: 18/09/2007, 13h12
  3. Réponses: 1
    Dernier message: 20/12/2005, 16h56
  4. Données d'une table deviennent colonne dans autre table?
    Par christophe1245 dans le forum Access
    Réponses: 8
    Dernier message: 19/12/2005, 23h01
  5. récupérer juste les données d'une autre table
    Par rangernoir dans le forum Access
    Réponses: 5
    Dernier message: 13/09/2005, 15h52

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