Bonjour à tous,
J'ai besoin de créer un rapport en partie avec du code et en partie à l'aide du générateur de rapport d'access et je ne comprends pas comment fonctionne cet événement.
J'ai une bdd dans laquelle sont compilées des données par sujet pour chaque organisme : chaque organisme devait se prononcer sur 1 ou plusieurs des 9 sujets qui existe.
Je veux un rapport avec 2 niveaux de regroupement :
Niveau 1 : nom organisme => un contrôle pour nom organisme
Niveau 2 : titre sujet => un contrôle pour titre sujet
Donc, j'ai une requête que je lie au rapport dans lequel j'ai créé 2 regroupements. Comme il y a plusieurs champs qui peuvent être vides et que je ne veux donc pas les imprimer, à l'aide d'une procédure que j'ai mis dans l'événement au formatage, je récupère la valeur du contrôle du nom de l'organisme et à l'aide d'un recordset (je charge essentiellement la même requête que celle utilisé pour la source du rapport) je filtre les données de l'organisme. Donc, si l'organisme a traité de plus d'un sujet, le recordset me retourne plus d'un enregistrement. Je place ces informations que je veux par nom d'organisme et par sujet, dans la section détail.
Ce que je ne comprends pas, c'est que dans l'événement, lorsque je passe en debug, je m'aperçois que l'événement au formatage repasse souvent sur le même organisme, donc mon code se refait quelque fois plus d'une fois pour le même enregistrement.
De plus, lorsqu'un même organisme traite de plus d'un sujet, les informations dans le détail de chacun des sujets se répètent : les infos du sujet 1 se répète dans celui du sujet 2 et ainsi de suite. Donc, le sujet 2, plutôt que d'avoir uniquement les données de ce sujet, répète les infos du 1er sujet aussi.
Bref, c'est la cata....
Je ne sais plus trop quoi faire....
Par la suite, je me suis dit que j'allais tout le faire en code. Donc, j'aurais utilisé 2 boucles while avec 2 recordset : 1er boucle, je passe au travers toute la table des nom organisme, une 2e boucle interne à cette 1ere pour tourner à travers tous les sujets traité par chacun des organismes. J'utilisais le même canevas que plus tôt en y enlevant la source de données. Je l'ai essayé en me disant que je reproduirais les regroupements mentionnées plus tôt, mais une fois que la procédure s'effectue, je me retrouve avec un rapport sur le dernier enregistrement (donc 3 pages environ au lieu de plus de 200!). Pourquoi avec cette façon les pages ne se sont pas ajoutés au fur et à mesure que je transférais les nouvelles valeurs sur le canevas de rapport? Comment je peux créer ce genre de rapport par code en y ajoutant des pages au fur et à mesure que j'effectue mes 2 boucles?
En somme, à l'aide du code, j’aimerais faire le type de rapport suivant :
Cas avec 1 sujet :
nom_organisme
--titre sujet abordé
---afficher toutes les infos relatives à ce sujet
Cas avec plus d'un sujet :
nom_organisme
--titre sujet abordé
---afficher toutes les infos relatives à ce sujet
-- titre 2e sujet
---afficher toutes les infos
-- titre 3e sujet
etc.
Donc, comment puis-je insérer ça dans un rapport et surtout y ajouter des pages à mesure que j'y ajoute les valeurs?
Quelqu'un a une idée?
EDIT: vous vous demandez certainement pourquoi je n'utilise pas le générateur de rapport et que je n'y ajoute tout simplement pas les divers contrôles représentants les champs de mes tables concernées. je ne veux pas faire ça parce que plusieurs champs sont vides et je ne veux donc pas les afficher et comme j'ai beaucoup de champ, je regroupe plusieurs champs dans un textbox en les agrégeants avec le code, sinon j'aurais des trous blancs énormes dans mon rapport et des pages blanches inutiles. Voilà pourquoi je ne veux pas faire ainsi.
Partager