{Access} Impression
Résolu
Gibbs57
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Gibbs57 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Gibbs57 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Gros problème qui m'occupe déjà depuis quelques heures sans trouver de solution.
Je dois imprimer des cartes de membre (club canin) et pour éviter d'imprimer plusieurs ois la même, j'utilise la requête suivante :
SELECT TMembre.NumInscription, TMembre.DateInscription, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville, TMembre.CheckCarte1
FROM TMembre
WHERE (((TMembre.DateInscription)=Date()) AND ((TMembre.CheckCarte1)=0));
J'ai donc, dans mon formulaire, une case à cocher qui se met à -1 lors de la pression du bouton Imprimer
Private Sub Imprim_carte1_Click()
On Error GoTo Erreur
nb = DCount("*", "RPremiere carte")
If nb = 0 Then
MsgBox "Pas de carte à imprimer."
Exit Sub
End If
DoCmd.OpenReport "EPremiere carte", acPreview
DoCmd.RunSQL "UPDATE TMembre SET CheckCarte1 = -1;", 0
Me.Requery
Exit_Imprim_carte1_Click:
Exit Sub
Erreur:
MsgBox Err.Description
Resume Exit_Imprim_carte1_Click
End Sub
Ca fonctionne très bien.
Le problème est que les cartes de membre doivent être renouvellées tous les ans et je n'arrive pas à sélectionner les membres devant se mettre en ordre à l'échéance. La solution ci-dessus ne fonctionne pas du fait de la contrainte de renouvellement annuel. Grâce à mon champ "Date de renouvellement" je peux pondre une requête m'affichant les gens à échance mais je calle sur le fait de n'imprimer que ceux là et pas tous mes enregistrements.
Auriez-vous une petite idée ?
Grand merci et bonne journée
Gros problème qui m'occupe déjà depuis quelques heures sans trouver de solution.
Je dois imprimer des cartes de membre (club canin) et pour éviter d'imprimer plusieurs ois la même, j'utilise la requête suivante :
SELECT TMembre.NumInscription, TMembre.DateInscription, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville, TMembre.CheckCarte1
FROM TMembre
WHERE (((TMembre.DateInscription)=Date()) AND ((TMembre.CheckCarte1)=0));
J'ai donc, dans mon formulaire, une case à cocher qui se met à -1 lors de la pression du bouton Imprimer
Private Sub Imprim_carte1_Click()
On Error GoTo Erreur
nb = DCount("*", "RPremiere carte")
If nb = 0 Then
MsgBox "Pas de carte à imprimer."
Exit Sub
End If
DoCmd.OpenReport "EPremiere carte", acPreview
DoCmd.RunSQL "UPDATE TMembre SET CheckCarte1 = -1;", 0
Me.Requery
Exit_Imprim_carte1_Click:
Exit Sub
Erreur:
MsgBox Err.Description
Resume Exit_Imprim_carte1_Click
End Sub
Ca fonctionne très bien.
Le problème est que les cartes de membre doivent être renouvellées tous les ans et je n'arrive pas à sélectionner les membres devant se mettre en ordre à l'échéance. La solution ci-dessus ne fonctionne pas du fait de la contrainte de renouvellement annuel. Grâce à mon champ "Date de renouvellement" je peux pondre une requête m'affichant les gens à échance mais je calle sur le fait de n'imprimer que ceux là et pas tous mes enregistrements.
Auriez-vous une petite idée ?
Grand merci et bonne journée
A voir également:
- {Access} Impression
- Spouleur d'impression - Guide
- Impression livret a5 - Guide
- Impression ecran samsung - Guide
- Access runtime ✓ - Forum Access
- Carrefour impression documents - Forum Imprimante
5 réponses
Salut,
quand remets-tu à 0 ton champ checkcarte ?
je n'arrive pas à sélectionner les membres devant se mettre en ordre à l'échéance
Qu'appelles-tu "se mettre en ordre à l'échéance" ?
quand remets-tu à 0 ton champ checkcarte ?
je n'arrive pas à sélectionner les membres devant se mettre en ordre à l'échéance
Qu'appelles-tu "se mettre en ordre à l'échéance" ?
Salut Blux,
Merci de te pencher sur mon problème.
Dans l'absolu, je n'ai pas besoin de remettre mon "checkcarte" à 0 puisque celui-ci gère l'impression de la première carte de membre du nouveau membre qui se présente au club.
Tous les ans, à la date d'échéance, il faudrait imprimer une nouvelle carte de membre. Pour cela, j'ai prévu un champ date "Date de renouvellement" qui devrait être incrémenté d'un an avant impression de la nouvelle carte de membre (c'est la mise en ordre à l'échéance).
Je vois un truc du genre : Une requête me donnant les gens arrivés à échéance :
SELECT TMembre.NumInscription, TMembre.DateRenouvellement, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville
FROM TMembre
WHERE (((TMembre.DateRenouvellement)=Date()));
Un formulaire basé sur cette requête, un double clic sur l'enregistrement de la personne qui vient se mettre en ordre (et qui figure sur cette liste), un marquage quelconque sur le formulaire principal, mise à jour de la date de renouvellement + 1 an et impression de la carte de membre (facile à dire mais pour le faire, aïe aïe aïe ....)
Ceci est l'idée d'un gros novice et il y a beaucoup de chances que je me mette le doigt dans l'oeil ... ;o)
J'avoue que je pédale sérieusement, je ne trouve rien de bien convainquant, mes connaissances en VBA et SQL sont plus que limitées.
Encore un grand merci
Merci de te pencher sur mon problème.
Dans l'absolu, je n'ai pas besoin de remettre mon "checkcarte" à 0 puisque celui-ci gère l'impression de la première carte de membre du nouveau membre qui se présente au club.
Tous les ans, à la date d'échéance, il faudrait imprimer une nouvelle carte de membre. Pour cela, j'ai prévu un champ date "Date de renouvellement" qui devrait être incrémenté d'un an avant impression de la nouvelle carte de membre (c'est la mise en ordre à l'échéance).
Je vois un truc du genre : Une requête me donnant les gens arrivés à échéance :
SELECT TMembre.NumInscription, TMembre.DateRenouvellement, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville
FROM TMembre
WHERE (((TMembre.DateRenouvellement)=Date()));
Un formulaire basé sur cette requête, un double clic sur l'enregistrement de la personne qui vient se mettre en ordre (et qui figure sur cette liste), un marquage quelconque sur le formulaire principal, mise à jour de la date de renouvellement + 1 an et impression de la carte de membre (facile à dire mais pour le faire, aïe aïe aïe ....)
Ceci est l'idée d'un gros novice et il y a beaucoup de chances que je me mette le doigt dans l'oeil ... ;o)
J'avoue que je pédale sérieusement, je ne trouve rien de bien convainquant, mes connaissances en VBA et SQL sont plus que limitées.
Encore un grand merci
Le mieux n'est pas de faire comme ça, mais de faire à l'envers, je m'explique :
Tu as une date d'inscription rattachée à chaque membre, il faut donc à chaque anniversaire imprimer une nouvelle carte, mais il y a un souci : imaginons qu'on ne passe pas de traitement tous les jours pour éditer les nouvelles cartes, celles qu'on a oubliées ne seront pas éditées.
Donc, l'astuce consiste à ne pas marquer la date de renouvellement, mais à mettre un top d'édition dans la base lorsque la carte est imprimée. ce top sera remis à zéro une fois l'an (à la première ouverture de la base, par exemple).
Ensuite, il te suffit de créer un bouton qui va sélectionner les adhérents qui ont un top à 0 et une date d'inscription inférieure à la date du jour, en ne testant bien sûr que le jour et le mois.
Tu as une date d'inscription rattachée à chaque membre, il faut donc à chaque anniversaire imprimer une nouvelle carte, mais il y a un souci : imaginons qu'on ne passe pas de traitement tous les jours pour éditer les nouvelles cartes, celles qu'on a oubliées ne seront pas éditées.
Donc, l'astuce consiste à ne pas marquer la date de renouvellement, mais à mettre un top d'édition dans la base lorsque la carte est imprimée. ce top sera remis à zéro une fois l'an (à la première ouverture de la base, par exemple).
Ensuite, il te suffit de créer un bouton qui va sélectionner les adhérents qui ont un top à 0 et une date d'inscription inférieure à la date du jour, en ne testant bien sûr que le jour et le mois.
Desolé Blux mais je ne comprends pas, enfin si mais comment mettre ça en oeuvre. Si je savais déjà ce qu'est un top d'étidion, ça m'aiderait :o))))) (ha oui, j'avais prévenu que je suis nul, faut pas se plaindre ;o))) )
Purée à force de chercher je fini pas ne plus rien percuter du tout ...
Bonne soirée et merci ;o)
Purée à force de chercher je fini pas ne plus rien percuter du tout ...
Bonne soirée et merci ;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Blux,
Bonjour tout le monde,
Alors voilà, le problème est résolu de la manière suivante :
Une requête pour afficher les membres arrivés à échéance :
SELECT TMembre.NumInscription, TMembre.DateRenouv, TMembre.Montant, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville, TMembre.CheckRenouv
FROM TMembre
WHERE (((TMembre.DateRenouv)<Date()));
Un formulaire lié à cette requête qui s'affiche à l'ouverture de la base de données.
L'utilisateur modifie la date de renouvellement et coche la case "CheckRenouv" dans ce formulaire - Mise à jour du formulaire dans l'évènement AFTERUPDATE du champ CheckRenouv.
Une nouvelle requête pour imprimer mes cartes de membre:
SELECT TMembre.NumInscription, TMembre.DateRenouv, TMembre.Montant, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville, TMembre.CheckRenouv
FROM TMembre
WHERE (((TMembre.CheckRenouv)=-1));
Un état ImprimRenouv en mode aperçu basé sur cette requête.
Et sur la fermeture de cet état, remise du CheckRenouv à 0
DoCmd.RunSQL "UPDATE TMembre SET checkrenouv = 0;", 0
Et voilà une affaire qui roule. Bon, je n'ai certainement pas choisi le chemin le plus court mais ça fonctionne, c'est le principal.
Mille mercis Blux, tu m'as mis sur la route, il fallait simplement que mon neurone comprenne ;o)
Bonne journée et mes meilleurs voeux pour cette nouvelle année.
Bonjour tout le monde,
Alors voilà, le problème est résolu de la manière suivante :
Une requête pour afficher les membres arrivés à échéance :
SELECT TMembre.NumInscription, TMembre.DateRenouv, TMembre.Montant, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville, TMembre.CheckRenouv
FROM TMembre
WHERE (((TMembre.DateRenouv)<Date()));
Un formulaire lié à cette requête qui s'affiche à l'ouverture de la base de données.
L'utilisateur modifie la date de renouvellement et coche la case "CheckRenouv" dans ce formulaire - Mise à jour du formulaire dans l'évènement AFTERUPDATE du champ CheckRenouv.
Une nouvelle requête pour imprimer mes cartes de membre:
SELECT TMembre.NumInscription, TMembre.DateRenouv, TMembre.Montant, TMembre.NomMembre, TMembre.Prenom, TMembre.Adresse, TMembre.CP, TMembre.Ville, TMembre.CheckRenouv
FROM TMembre
WHERE (((TMembre.CheckRenouv)=-1));
Un état ImprimRenouv en mode aperçu basé sur cette requête.
Et sur la fermeture de cet état, remise du CheckRenouv à 0
DoCmd.RunSQL "UPDATE TMembre SET checkrenouv = 0;", 0
Et voilà une affaire qui roule. Bon, je n'ai certainement pas choisi le chemin le plus court mais ça fonctionne, c'est le principal.
Mille mercis Blux, tu m'as mis sur la route, il fallait simplement que mon neurone comprenne ;o)
Bonne journée et mes meilleurs voeux pour cette nouvelle année.