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

Access Discussion :

Requête Access et publipostage Word


Sujet :

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 Requête Access et publipostage Word
    Bonjour à tous et à toutes,

    J'ai une requête dans laquelle j'ai des champs Du12 Du 13...Du16 qui m'affichent les cotisations dues des 5 dernières années.
    Cette requête est recréée tous les ans grâce à un formulaire qui me déclenche la procédure suivante, tous les 2 proposés par l'un d'entre vous (l'année prochaine j'aurai par exemple Du13, Du14...Du17)

    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
    Public Sub Cotis_Dues(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, " _
              & " [T Adhérents].DateAdhesion, [T Adhérents].Adresse, [T Adhérents].CP, [T Adhérents].Ville, [T Adhérents].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û], " _
                   & "[T Adhérents].Du" & Format(NumDebut, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 1, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 2, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 3, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 4, "00") _
                   & " FROM [T Adhérents] " _
              & " WHERE ((([T Adhérents].Adherent) = True)) ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_Dues")
      q.SQL = sSql
     
    End Sub
    Dans mon publipostage j'insère les champs Du12, Du 13...Du16 en allant les chercher dans la requête.

    Comment pourrai-je faire pour que l'année prochaine, j'ai automatiquement, dans mon document Word Du13,Du14...du17.
    Je vois une solution, mais je ne sais comment la mettre en oeuvre, c'est que ma requête ait des champs DuN, DuN+1, DuN+2...dont le nom ne change pas (ce qui est simple alors pour le publipostage), mais dont la valeur change d'une année sur l'autre.
    DuN = DuNumDebut, DuN+1=DuNumDebut+1...

    Merci de votre aide

    A+

    C15

  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
    Bonjour.

    Je pense que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      sSql = "SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, " _
              & " [T Adhérents].DateAdhesion, [T Adhérents].Adresse, [T Adhérents].CP, [T Adhérents].Ville, [T Adhérents].Pays, " _
              & "[Du00]+[Du01]+[Du02]+[Du03]+[Du04] AS [Total dû], " _
                   & "[T Adhérents].Du" & Format(NumDebut, "00") & " as [Du00]," _
                   & "[T Adhérents].Du" & Format(NumDebut + 1, "00") & " as [Du01]," _
                   & "[T Adhérents].Du" & Format(NumDebut + 2, "00") & " as [Du02]," _
                   & "[T Adhérents].Du" & Format(NumDebut + 3, "00") & " as [Du03],"
                   & "[T Adhérents].Du" & Format(NumDebut + 4, "00") & " as [Du04]"
                   & " FROM [T Adhérents] " _
    Devrait résoudre ton problème.

    Ceci dit, je suggère que tu révises ta structure, car créer un champ par année va impliquer de modifier ton application chaque année.

    Personnellement je ferai une structure du type :

    tblPersonne
    ClefPersonne
    Info Personne

    tblCotisation
    ClefCotisation
    ClefPersonne
    Annee
    Info cotisation

    En relation par ClefPersonne.

    Cela te permet d'avoir autant d'année de cotisation sans avoir à faire de changement chaque année et répondre facilement à des questions comme :
    1. Combien de personnes ont cotisé dans l'année X, Y et Z.
    2. Qui n'a pas cotisé cette année ?


    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 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 clément
    Desolé mais j'avais zappé ta réponse
    Je la mets en application dès demain
    Tu n'es hélas pas le premier à me suggérer de restructurer ma base ; j'en suis parfaitement conscient.
    L'année dernière, j'avais presque réussi mais je suis tombé sur un os du au fait que je suis parti d'un existant mal ficelé, voire pas du tout, et que j'ai à intégrer des données de plus de 1200 adhérents, les plus vieilles datant de 1983.
    Je vais essayer de m'y recoler cet automne.
    Merci de ton aide.
    Bonsoir
    C15

  4. #4
    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
    je suis parti d'un existant mal ficelé
    Note qu'il s'agit bien d'une suggestion et que des fois il est plus simple de vivre avec l'existant.

    Tu peux aussi automatiser l'ajout. Une fois les éléments concernés identifiés, on peut généralement faire cela par code.
    Ce n'est à priori qu'un nouveau champ donc rien de dramatique.

    Une autre possibilité est de prendre des mesures préventives comme par exemple créer d'un seul coup les champs pour les 20 ou 30 ans à venir.
    Une fois cela fait, il y a peut de chance que tu ais besoin d'y revenir :-).

    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.

Discussions similaires

  1. Requête SQL - Access - Publipostage Word
    Par ANTMA dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/08/2011, 16h52
  2. Réponses: 2
    Dernier message: 03/10/2007, 07h09
  3. Réponses: 1
    Dernier message: 20/04/2007, 13h02
  4. Creer une requéte access pour choisir des textes word
    Par mariekero dans le forum Access
    Réponses: 1
    Dernier message: 16/01/2006, 10h25
  5. Fusion requête Access 2003 vers document word
    Par davidf dans le forum Access
    Réponses: 2
    Dernier message: 17/06/2005, 13h46

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