2008-11-04 10 views
2

J'ai un formulaire d'accès où chaque enregistrement a des informations qui sont calculées à la volée. J'utilise l'événement Form_Current(); Chaque fois qu'un enregistrement est sélectionné, je calcule certaines informations et modifie certains contrôles de formulaire pour les refléter, en fonction de l'ID de l'enregistrement.Comment imprimer des formulaires dynamiques dans Microsoft Access?

Je veux imprimer un tas de ces enregistrements. Cependant, dans cette situation, l'événement Form_Current() n'est pas déclenché et les enregistrements imprimés ne contiennent pas cette information dynamique.

Des idées?

+0

Je suis d'accord avec pro3carp3. Si vous cherchez des suggestions alternatives, vous pourriez peut-être poster un peu de votre code existant? – Fionnuala

+0

La suggestion de pro3carp3 a très bien fonctionné. N'hésitez pas à suggérer des alternatives, cependant! –

Répondre

3

Effectuez une requête qui calcule les informations dont vous avez besoin en tant que source de votre rapport. Vous pouvez utiliser les fonctions vba si nécessaire pour des calculs complexes.

+0

Merci, ça sonne bien. J'ai lu la documentation mais je n'arrivais pas à comprendre comment appeler VBA à partir d'une requête SQL. Des indices? –

+1

Créer une fonction dans un module et la référencer dans le SQL. Voici un exemple que j'utilise pour convertir à partir d'un format de date propriétaire. Le nom de la fonction est fdConvertTAMDate. Voici à quoi il ressemble dans la fenêtre de conception de la requête: TranDate: IIf (IsNull ([DATE]), Null, fdConvertTAMDate ([DATE])) – pro3carp3

+0

Merci qui a bien fonctionné. Ma fonction était dans le formulaire lui-même, ce qui explique pourquoi je ne pouvais pas l'appeler à partir de la requête SQL, je suppose? –

0

Dans un commentaire, Luis Oliveira a demandé:

Ma fonction était dans la forme elle-même, qui est la raison pour laquelle je ne pouvais pas l'appeler de la requête SQL, je suppose?

Par défaut, les fonctions d'un formulaire sont privées. Si elles sont rendues publiques, elles ne peuvent être appelées que lorsque le formulaire est ouvert, comme dans Forms! MyForm.PublicFunction(). Je déconseillerais cela. Au lieu de cela, déplacez la fonction vers un module public (qui peut nécessiter des révisions pour supprimer des références pour former des champs/contrôles).

Questions connexes