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 :

Adaptation procédures à nouvelle configuration base


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 Adaptation procédures à nouvelle configuration base
    Bonjour,

    J'ai une base gérant une association.

    J'ai un formulaire qui me permet de récapituler les cotisations des adhérents (voir PJ)

    Ce formulaire est alimenté par une procédure qui m'a été proposée par un contributeur il y a 2 ou 3 ans.
    Cette procédure fonctionne parfaitement bien avec ma structure actuelle de ma base (1 table T Adhérents avec les données personnelles et le suivi des cotisations Du11 Du12 Du13... Du17 correspondant aux cotisations 2011 à 2017).
    Je suis en train de restructurer ma base de manière plus fonctionnelle avec la T Adhérents ne comportant que les données personnelles et une table T Cotisations dues comportant tout ce qui est cotisations (Du11 Du12 Du13...Du17). Les 2 tables sont liées par N°Adhérent (clé primaire).

    J'ai fait plusieurs essais pour modifier ma procédure et l'adapter à la nouvelle configuration. Echec

    Si l'un d'entre vous pouvait adapter ma procédure, cela m'arrangerait.


    Ceci est associé à la zone de texte [Année de départ] du formulaire :

    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
    Private Sub txtNbreDepart_AfterUpdate()
      Dim iNumDepart As Integer
      Dim Ctl As Control
      'Vérifier que le contrôle n'est pas null
      If IsNull(Me.txtNbreDepart) Then Exit Sub
      iNumDepart = Me.txtNbreDepart
      'Amenéger les contrôles
      For Each Ctl In Me.Controls
        If Ctl.Name Like "txtDU#" Then Ctl.ControlSource = "DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00"): GoTo ctlSuivant
        If Ctl.Name Like "et#" Then Ctl.Caption = (iNumDepart + Right(Ctl.Name, 1))
        If Ctl.Name Like "txtAJour#" Then
           Ctl.ControlSource = "=DCount(""*"",""R Cotis_DuesCR"",""DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00") & "=0"")"
           GoTo ctlSuivant
        End If
        If Ctl.Name Like "txtRetard#" Then
           Ctl.ControlSource = "=DCount(""*"",""R Cotis_DuesCR"",""DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00") & "<>0"")"
           GoTo ctlSuivant
        End If
     
        If Ctl.Name Like "txtTlDu#" Then
           Ctl.ControlSource = "=DSum(""DU" & Format((iNumDepart + Right(Ctl.Name, 1)), "00") & """,""R Cotis_DuesCR"")"
           GoTo ctlSuivant
        End If
    ctlSuivant:
      Next Ctl
     'Créer la requête source rCotiDues
      Call Cotis_DuesCR(iNumDepart)
      'L'affecter comme source
      Me.RecordSource = "R Cotis_DuesCR"
      Me.txtNbreDepart = iNumDepart
    End Sub
    avec

    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
    Public Sub Cotis_DuesCR(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT N°Adherent,Titre, Nom, Prenom, " _
              & "DateAdhesion, Adresse, IIf(Mid(CP,3,1)='-', Mid(CP , InStr(CP,'-')+1), CP) AS CP1, Ville, Pays, " _
              & "[Du" & Format(NumDebut, "00") & "]+[Du" & Format(NumDebut + 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 2, "00") & "]+[Du" & Format(NumDebut + 3, "00") & "]" _
              & "+[Du" & Format(NumDebut + 4, "00") & "]" _
              & " AS [Total dû], " _
                   & "Du" & Format(NumDebut, "00") & "," _
                   & "Du" & Format(NumDebut + 1, "00") & "," _
                   & "Du" & Format(NumDebut + 2, "00") & "," _
                   & "Du" & Format(NumDebut + 3, "00") & "," _
                   & "Du" & Format(NumDebut + 4, "00") & "," _
                   & "(select count(*) from [T Adhérents] x where Adherent and x.Nom<a.Nom or (x.Nom=a.Nom and x.Prenom<=a.Prenom)) as numligne" _
                   & " FROM [T Adhérents] a " _
              & " WHERE Adherent ORDER BY Nom, Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_DuesCR")
      q.SQL = sSql
     
    End Sub
    Merci de votre aide.

    A+

    C15
    Images attachées Images attachées

  2. #2
    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

    En première approche, il me semble que le plus simple (et le plus accessible) serait de créer un Etat pour la récap, dont les Données proviendraient d'une requête basée sur les deux tables.

    Titi95
    Un problème bien posé est à moitié résolu

  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.
    Le problème c'est que je veux que cela soit dynamique pour visualiser le point des cotis des 5 dernières années.
    Ainsi pour cette année, si je saisis 14 dans le contrôle [Année de départ], je veux que Du14 Du15 Du16 Du17 Du18 s'affichent.

    Merci de ton aide.

    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
    Pourquoi tu ne bases pas l'état et sa requête sur les critères choisis ?
    Un problème bien posé est à moitié résolu

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 647
    Points : 14 624
    Points
    14 624
    Par défaut
    Bonjour,
    Je suis en train de restructurer ma base de manière plus fonctionnelle avec la T Adhérents ne comportant que les données personnelles et une table T Cotisations dues comportant tout ce qui est cotisations (Du11 Du12 Du13...Du17). Les 2 tables sont liées par N°Adhérent (clé primaire).
    le plus simple serait de poster la base avec des données de test ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. [Conseil] Nouvelle configuration.
    Par L.nico dans le forum Ordinateurs
    Réponses: 14
    Dernier message: 14/08/2007, 23h18
  2. Création d'une procédure dans une base externe par code
    Par AndréPe dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/07/2007, 10h19
  3. Nouvelle bdd basée sur des tables existantes
    Par alyphe dans le forum Juridique
    Réponses: 6
    Dernier message: 04/07/2007, 11h12
  4. [avis] Nouvelle configuration, quelques questions
    Par Ministar dans le forum Ordinateurs
    Réponses: 5
    Dernier message: 12/06/2007, 20h22
  5. probleme nouvelle configuration
    Par breizh007 dans le forum Ordinateurs
    Réponses: 10
    Dernier message: 28/02/2007, 18h03

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