|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Bonjour à tous, et déjà merci à ceux qui liront jusqu'au bout cette demande un peu complexe.
Je me pose la question suivante: -Comment pour un formulaire FormAmo -Ajouter dans le sous-formulaire FormAmoLg, basé sur une requête entre les tables Amo, AmoLg et Investissements. -Une ligne pour chaque enregistrement de la table Investissements. Quelques indications: La requête du sous-Formulaire (AmoLg_R) lie la table AmoLg à la table Investissements par la clé secondaire AmoLg.RéfInvest (ZDL) vers la clé primaire Investissements.Id (cachée) ,colonne 2 Investissements.NumInvest. Celui-ci est un Numéro séquentiel créé avec une fonction Dmax. La table AmoLg, est aussi liée à la table Amo par AmoLg.RéfAmo (Clé secondaire) vers Amo.IdAmo (clé primaire), parce que j'ai besoin du champ Amo.AnnéeRev, pour effectuer dans les lignes de mon sous-formulaire, les calculs sur événement. Il y a quand même 10 champs calculés. Pour l'instant, par exemple dans le formulaire FormAmo, qui ne comporte que deux champs, je tape 2008 pour AnnéeRev. Dans le sous-formulaire, je tape 1 pour RéfInvest, tous les autres champs (19 en tout) se remplissent, et les valeurs calculées le sont en fonction de l'année des revenus de la table Amo, de la valeur de l'achat, et du taux d'amortissement de la table Investissements. Ensuite, je tape 2 pour l'enregistrement suivant, et puis 3, et ainsi de suite jusque 40 puisque j'ai 40 investissements. Je pense à un bouton de commande dans le sous-formulaire qui automatiserait l'écriture des lignes. Je pense aussi à une boucle, mais je n'en ai jamais écrite. Ou à une requête ajout? Je vous remercie pour vos conseils, et si nécessaire, je peux joindre ma base qui ne comporte encore que quelques encodages. Marcel |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
Bonjour,
A mon avis, si tu n'as qu'un enregistrement c'est parce que ton sous-formulaire est en formulaire unique. En mode création, sélectionne le sous-formulaire en question et dans les propriétés, onglet "Format", passe l'affichage par défaut à "Formulaires continus". |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Non,non Francesco, ce n'est pas ça du tout.
Mon sous-formulaire est actuellement en mode continu. Que ce soit en mode formulaire unique, continu ou feuilles de données, je n'ai aucun enregistrement, et après avoir rempli le champ nécessaire du formulaire, je veux d'un seul coup en ajouter 40 dans mon sous-formulaire, 1 pour chacun de la table Investissement. Merci quand même pour ton attention. Marcel. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
Peux-tu mettre la requête du sous-formulaire ? Il ne devrait y avoir qu'à passer par les champs père/fils de ton sous-formulaire pour obtenir ce que tu souhaites.
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Je n'ai aucun problème de fonctionnement avec mon sous-formulaire, Francesco.
Je n'ai encore encodé que 6 investissements. Voici ma base en pièce jointe. Tu pourras te rendre mieux compte de ce que je souhaite. Ouvre le formulaire FormAmo, j'ai juste encodé un enregistrement, avec 2 lignes dans le sous-formulaire. Positionnes-toi à la 3ème ligne du sous formulaire, et dans le premier champ, inscris "3" et enter, tu verras le résultat. Tu peux aussi encoder un nouvel enregistrement pour l'année 2008 par exemple. Lorsque tu entres l'année des revenus, l'année de l'exercice s'écrit automatiquement, et puis dans le sous-formulaire, tu ajoutes les numéros que tu veux (Il n'y en a que 6 pour l'instant) Tu auras une différence dans les montants indiqués, puisque ceux-ci sont calculés en fonction de l'année des revenus. Je voudrais juste quand j'aurai 40 ou 50 enregistrements dans ma table Investissements, une méthode pour ajouter d'un seul coup les 50 lignes. Merci beaucoup. Marcel |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
Cela peut facilement se faire avec un peu de VBA mais est-ce que je peux te demander quelle est la finalité de ton formulaire car j'ai du mal à cerner l'utilité de stocker des champs calculés. D'autant que rien ne permet de savoir à quelle année correspond le calcul - je veux dire par là que si l'on crée deux lignes pour la même immo avec des années d'exercice différente, les valeurs change effectivement mais rien n'indique à quel exercice correspond chaque ligne.
|
|
|
00
|
|
|
#7 | |
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Citation:
Et à partir de celle-ci, je construis un état bien propre qui est tout simplement un tableau d'amortissement nécessaire à ma déclaration fiscale. |
|
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
Dans la requête je suis d'accord mais quand on a le formulaire affichée, le champ AnnéeRev n'apparaît pas.
Côté conception, plutôt que de passer par une table dont les données ont vocation a être effacées rapidement, ne vaudrait-il pas mieux construire le tableau d'amortissement directement dans un état ? |
|
|
00
|
|
|
#9 | |||
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Là Francesco, je ne suis vraiment plus!
Citation:
Citation:
L'essentiel, c'est que les données soient inscrites dans ce champ, et que je puisse les récupérer dans la requête qui servira de source à mon état. Citation:
|
|||
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
Pour ce qui est de l'effacement des tables, c'est simplement que je ne vois pas l'intérêt de conserver des données qui ont été calculées à partir d'autres données conservées dans la base de données. Si le calcul a été fait une fois, il peut être refait et conserver ces données calculées ne fait qu'alourdir inutilement la base à mon sens.
Pour ce qui est du champ AnnéeRev, il me parait intéressant afin d'éviter les erreurs de frappe ou d'inattention. Pour ce qui est de l'état, le calcul que tu fais dans ton formulaire peut être fait dans l'état également. Puisque la finalité est d'imprimer, pourquoi s'encombrer d'un formulaire que l'on transforme ensuite en état ? Pour répondre tout de même à ton problème, tu peux créer un bouton de commande dans ton formulaire principal et placer le code suivant en procédure évènementielle de l'évènement "sur clic". Code :
Si j'ai bien saisi tes intentions, cela permettra de garnir ton sous-formulaire en un clic. |
||
|
|
00
|
|
|
#11 | |
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Bonjour Francesco,
Citation:
J'ai testé ton code, et le remplissage des lignes s'effectue, avec pourtant un soucis: Les champs ne sont pas calculés. J'ai essayé sans succès avec le code de mon sous-formulaire sur d'autres événements. Je pense qu'une autre amélioration serait utile, mais pas indispensable. Limiter dans la requête1, les enregistrements, à ceux dont annéeAchat est = ou < à AnnéeRev. Merci pour ce que tu as déjà fait. Marcel |
|
|
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
En effet, l'évènement BeforeUpdate n'est pas exécuté, je ne sais pas pourquoi. Pour contourner le problème, applique le code de cet évènement à LostFocus et transforme ton code ainsi :
Code :
Edit: En réfléchissant un peu, je me suis dit que tu allais exécuter cette commande année par année et j'ai donc modifié le code pour ne pas perdre le premier enregistrement à chaque fois. Ca peut être utile... Ceci dit, je continue à penser que de passer directement par l'état est le plus efficace. Si tu veux bien me montrer à quoi ressemble ton état, je peux regardez ce qui est faisable; d'autant plus que j'aurai moi-même ces tableaux à remplir pour mon entreprise et qu'il faudra que je me penche dessus un jour ou l'autre. |
||
|
|
00
|
|
|
#13 | |||
|
Membre régulier
![]() Marcel Directeur technique Inscription : avril 2011 Messages : 100 ![]() |
Bonjour Franscesco,
Merci pour ce nouveau code que je testerai avec soin. Je vais d'abord donner réponse à tes interrogations et réflexions. Tu es bien plus avancé en code que moi, et tu as peut-être raison, mais ceci est un vocabulaire que je ne comprends pas Citation:
Citation:
Le formulaire comprends des champs dont je n'ai pas besoin dans mon état. J'ai besoin pour mon état de champs qui ne figurent pas nécessairement dans mon formulaire. En ce qui concerne l'espace, Citation:
Mon disque dur présente un répertoire C avec les programmes: 44 GO libres sur 110 GO et un répertoire D avec les données: 108 GO libres sur 110 GO Quand tu auras lu la conception de ma base de données, tu me comprendras peut-être mieux, ou bien tu avanceras une réalisation qui m'a jusqu'ici échappé. Pourtant peu enclin à modifier une BDD qui m'a donné satisfaction pendant plus de 10 ans, j'examinerais quand-même tes propositions. J'avais écrit cette BDD en 1999 sous access 97 avec des connaissances en VBA très réduites, et carrément nulles en SQL. Je la crée maintenant avec access 2007, en y apportant logiquement toutes les améliorations possibles. Grâce aux connaissances acquises, individuellement et sur ce forum. Merci le forum. Pour en venir à cette base, elle est destinée à la déclaration fiscale entre autre. Voici, la structure de mon formulaire de saisie. Je l'ai appelé "Bilan": 1. Formulaire avec -Année des revenus, nom du dossier et identifiant. 2. Sous-formulaire avec montant des achats par Numéro de compte d'achat-Vente selon déclaration TVA -Stock initial -Total de l'achat des marchandises (Du sous formulaire 2) -Stock final -Bénéfice brut d'exploitation (Calculé) -Total des frais professionnels (Du sous-formulaire 3) -Total des Amortissements (Du sous-formulaire 4) -Bénéfice net de l'entreprise Les comptes de l'associé 1: -Part en % des bénéfices attribués -Bénéfice net (Calculé) -CAS (En France Ursaf) -Assurance Revenu garanti -Pension complémentaire -Et autres ... Résultat net de l'associé 1 Idem pour l'associé 2: Et pour mon information personnelle, des données qui ne seront pas présentées dans un état: -Une situation indiciaire de l'entreprise -Une situation indiciaire pour l'associé 1 -Une situation indiciaire pour l'associé 2 L'état présentera les postes en italiques que tu vois dans le formulaire et en plus - le décompte propre pour l'associé choisi. - le détail par groupe des frais généraux de l'entreprise. - le tableau d'Amortissement. Je peux aussi sortir ces deux dernières pièces individuellement. En ce qui concerne le tableau d'amortissement, j'en joins un typique. Tu verras quelques lignes du plan "Matériel roulant" avec "Immobilisés au 01/01" à 0 Ils ne devront plus figurer dans le tableau d'amortissement, car il s'agit de biens vendus, ou mis à la casse Je les ai volontairement laissés pour ton information. Ils seront retirés de la liste, lorsque dans la requête de l'état j'introduirai le critère >0 pour le champ IM01 Le tableau d'amortissement est la pièce qui demande le plus de réflexion, parce que, il faut attribuer au bien une année de départ, une valeur et une durée d'amortissement. En fonction de ces 3 paramètres et de l'année considérée, d'autres valeurs du tableau changent. Il faut prévoir un calcul pour .La première année de l'amortissement .La dernière année de l'amortissement .La ou les années intermédiaires .Les années après l'amortissement du bien. Et à l'intérieur de ces calculs, en envisager un autre au cas où le bien est vendu ou mis à la casse. Il y a dans la première Base test que j'ai jointe, un code qui donne un aperçu de la méthode. C'était une base test, et il y a quelques erreurs que je n'ai pas eu le temps de corriger et peaufiner. Bonne journée à toi, et aux autres lecteurs. Marcel. PS pour le fichier attaché: Il faut l'ouvrir avec Explorateur Windows, Il avait été converti en Pdf. Il comporte 3 pages. |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com