compter cases à cocher dans état
Le
C15

Bonjour à toutes et à tous,
J'ai un état qui récapitule, pour des membres d'une association, leur p=
résence aux Ag
Ag00, Ag01, Ag02
sous la forme de cases à cocher, cochées ou pas selon leur présence.
Du fait du nombre d'années pour certains, cela commence à prendre trop =
de place.
Je voudrais créer un contrôle indépendant qui me compte combien de fo=
is un membre a été présent aux Ag entre sa date d'adhésion [DateAdh=
esion]et l'année 2010.
J'ai essayé avec CpteDom()mais je me plante dans la syntaxe.
Par mieux en essayant une requête analyse croisée.
Pour info je suis sous Access 2003.
Merci de votre aide.
A+
J'ai un état qui récapitule, pour des membres d'une association, leur p=
résence aux Ag
Ag00, Ag01, Ag02
sous la forme de cases à cocher, cochées ou pas selon leur présence.
Du fait du nombre d'années pour certains, cela commence à prendre trop =
de place.
Je voudrais créer un contrôle indépendant qui me compte combien de fo=
is un membre a été présent aux Ag entre sa date d'adhésion [DateAdh=
esion]et l'année 2010.
J'ai essayé avec CpteDom()mais je me plante dans la syntaxe.
Par mieux en essayant une requête analyse croisée.
Pour info je suis sous Access 2003.
Merci de votre aide.
A+
Avoir une description des tables utilisées serait d'une grande aide pour
répondre à la question...
db
Bonjour db,
J'ai une table principale T Adhérents avec, entre autres comme champs
NAdherent Nom Prenom Adresse...DateAdhesion Ag00 Ag01 Ag02 Ag03...
Ces derniers champs sont de type Oui/Non, contrôle sous forme de case à cocher.
J'ai fait une requête avec les principaux champs que je veux afficher dan s un état comme les coordonnées des adhérents (adresse, téléphone , mail...), ainsi que leur présence aux différentes AG depuis leur entr ée dans l'asso.
C'est sur cette requête qu'est basé cet état, en fait l'annuaire de l 'assocation.
Merci de ton aide.
A+
C15
Bonjour C15
Il aurait fallut 3 tables : une table Adhérents, une table Assemblées e t une table Présences. Là, on aurait pu faire du comptage.
Bien à toi
Une solution pas très élégante, et dont je ne suis pas sûr qu'elle
fonctionne sous Access 2003 :
- créer un contrôle dans le détail de l'état pour afficher le nombre de
présences (par exemple : NbPrésences)
- créer l'événement Au Formatage de la section détail en y mettant cette
ligne :
Me.NbPrésences.Value = DonnePrésences(Me.NAdherent.Value)
et coller cette fonction dans le même module :
Function DonnePrésences(nAdh As Integer)
Dim db As DAO.Database, rst As DAO.Recordset, fld As Field, n As Byte
Set db = CurrentDb
n = 0
Set rst = db.OpenRecordset("select * from T_Adhérents where NAdhherent="
& nAdh)
For Each fld In rst.Fields
If fld.Type = dbBoolean and left(fld.name,2)="Ag" Then
n = n - fld.Value
End If
Next
Set rst = Nothing
Set db = Nothing
DonnePrésences = n
End Function
Bien sûr, il faut adapter le nom des contrôles...
Je répète : c'est lourdingue, et il vaudrait mieux suivre les conseils
de Blaise...
db
Bonjour Blaise,
Je viens de modifier la structure de ma base (j'en avais hérité telle q uelle) avec une T Adhérents (j'y ai gardé toutes les infos personnelles ) et une TAG où j'ai mes cases à cocher AG83 AG84...avec bien sûr une relation /intégrité référentielle par N°Adhérent.
La requête SQL de mon état devient alors :
SELECT [T Adhérents].*, TAG.AG83, TAG.AG84, TAG.AG85, TAG.AG86, TAG.AG87, TAG.AG88, TAG.AG89, TAG.AG90, TAG.AG91, TAG.AG92, TAG.AG93, TAG.AG94, TAG. AG95, TAG.AG96, TAG.AG97, TAG.AG98, TAG.AG99, TAG.AG00, TAG.AG01, TAG.AG02, TAG.AG03, TAG.AG04, TAG.AG05, TAG.AG06, TAG.AG07, TAG.AG08, TAG.AG09, TAG. AG10, TAG.AG11, TAG.AG12, TAG.AG13, TAG.AG14, TAG.AG15, TAG.AG16, TAG.AG17, TAG.AG18, TAG.AG19, TAG.AG20, TAG.AG21, TAG.AG22, TAG.AG23, TAG.AG24, TAG. AG25, TAG.AG26, TAG.AG27, TAG.AG28, TAG.AG29, TAG.AG30, TAG.AG31, TAG.AG32, TAG.AG33, TAG.AG34, TAG.AG35
FROM [T Adhérents] INNER JOIN TAG ON [T Adhérents].N°Adherent = TAG .N°Adherent
WHERE ((([T Adhérents].Nom)<"b") AND (([T Adhérents].Adherent)=True))
ORDER BY [T Adhérents].Nom;
Est-ce exploitable pour mon décompte?
Sinon je ne vois pas trop comment créer et organiser les T Assemblées e t Présences dont tu parles.
Merci de ton aide.
A+
C15
Bonjour Db
En attendant la réponse de Blaise à ma question (il a certainement rais on car la structure de la base ne m'a jamais trop plu mais cette restructur ation complète que je ne saisis pas tout à fait), j'ai essayé ta solu tion ; elle marche.
Merci.
J'aurai voulu aller un peu plus loin.
Décompter les présences entre l'année d'adhésion (DateAdhesion)et p ar exemple 2005.
J'aurai alors le contrôle NbPrésences avec le décompte jusqu'à 2004 et à côté les cases à cocher (cochées ou pas) 2005 2006 et à s uivre.
Merci de ton aide.
A+
C15
Et comment connait-on la date des AG ?
Une table T_Adherents avec comme Cle Adh_Id
Une table T_Assemblees avec comme cle Ass_Id
Une T_Presences avec deux champs Adh_Id et Ass_Id
Les relations 1 à + entre la t_adherents et la T_Presences, aussi entre l a T_Assemblees et al T_Presences. on ajoute une ligne à T_Presences par présence.
Étant donné le nombre d'assemblées et le probable nombre d'adhérent s que je suppose conséquent, il faudrait programmer en VBA le passage de l'ancienne structure à la nouvelle et malgré cela ce serait un travail conséquent.
Il vaut mieux aller vers une solution comme le propose db
Bonsoir,
Pour info on a 1026 adhérents inscrits depuis le début de l'assoc en 19 83, 726 actifs et environ 120 à chaque AG.
Par ailleurs, déjà le fait d'avoir ôté les champs AG de la T Adhé rents (ainsi que des champs C83...et Du83...) pour faire 4 tables principal es m'oblige à revoir toutes mes requêtes, mes formulaires et mes état s.
Par ailleurs mes incompétences en Vba se limitent à des procédures ex trêmement simples et/ou des modifs à ce que des gens comme vous propose z sur le net.
Je vais quand même creuser ta proposition , mais la tâche est donc sans doute hors de portée.
Merci de ton aide.
A+
C15
Bonjour,
Les Ag ont lieu tous les ans depuis 1983.
Merci de ton aide.
A+
C15