INP E N S A T T O U L O U S E ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß $&&(66;3 7UDYDLO'LULJp 0DUF62848(6 Version du lundi 13 juin 2005 7DEOHGHV0DWLqUHV 1. PRODUIT + FOURNISSEUR...2 2. MISES A JOUR DU STOCK DE PRODUIT DEPUIS LA SAISIE DE PRODUITS VENDUS DANS LA FACTURE...2 $ 0LVHjMRXU$XWRPDWLTXH,QYLVLEOHGXVWRFNGH3URGXLWVXUpYpQHPHQW6DLVLHGHOD4XDQWLWpGHPDQGpHGDQVOD )DFWXUH 1) Macro sur la Désignation: seul accès pour atteindre la quantité...4 2) Macro sur la Quantité : garder l'ancienne quantité pour la MAJ stock...4 3) Macro sur la quantité: Maj du stock et désactiver la quantité...5 3. BOITE DE DIALOGUE POUR CHOIX ETAT...6 4. FORMULAIRE DE SELECTION...9 1) Une Requête pour alimenter la liste modifiable...9 2) Un formulaire pour sélectionner la ville et afficher les clients...9 3) Une requête de sélection...10 4) Une liste de clients dans le formulaire...10 5) Macro pour 'rafraîchir' une valeur...10 5. TOTAL DU DETAIL DES FACTURES SANS SOUS-FORMULAIRE...11 $ 0LVHjMRXU0DQXHOOH9LVLEOHGX6ROGHGX&OLHQWVXUpYqQHPHQWXWLOLVDWHXU&OLF%RXWRQHQILQGH)DFWXUH,167,7871$7,21$/32/<7(&+1,48( (&2/(1$7,21$/(683(5,(85($*52120,48('(728/286( $YGHO $JURELRSROH%3$X]HYLOOH7RORVDQ7HO
3URGXLW)RXUQLVVHXU - ACCESS Travail dirigé : 9 -,QDFWLYHUOHVFRQWU{OHVOLpVjODWDEOH)RXUQLVVHXU 5DLVRQ : interdire depuis consultation d un Produit la Modification d un Fournisseur. En mode Création, sélectionner les contrôles en même temps (clic sur 1 ier contrôle, puis clic sur le 2 ième, puis clic sur le 3 ième, ) et utiliser sur la PXOWLVpOHFWLRQ: Propriété $FWLYp121 $MRXWHUXQ%RXWRQ)HUPHUSDUOH3UHVVHSDSLHUSRXUIHUPHUFHIRUPXODLUH Le Copier dans le Presse-papier depuis le Formulaire&OLHQW Le Coller dans le Formulaire3URGXLWWRXWVLPSOHPHQW 0LVHVjMRXUGX6WRFNGH3URGXLWGHSXLVODVDLVLH GHSURGXLWVYHQGXVGDQVOD)DFWXUH 2EMHFWLILOQHVWSDVYLVLEOHFDUWUDLWHPHQWHIIHFWXpVXUOHFKDPSGHOD 7DEOH3URGXLWTXLQHVWSDVDIILFKpGDQVOHIRUPXODLUH 4WpDYDQWVDLVLH
0LVHj-RXUGXVWRFNSDUO DFWLRQ'pILQLUYDOHXU $0LVHjMRXU$XWRPDWLTXH,QYLVLEOHGXVWRFNGH3URGXLWVXU pypqhphqw6dlvlhghod4xdqwlwpghpdqgphgdqvod)dfwxuh 7DEOH3URGXLW: - Nouveau champ : 4WpVWRFN de type 1XPpULTXH5pHOGRXEOHet avec la OpJHQGH 4XDQWLWpHQVWRFN - Créer une requête de mise à jour avec Qté stock = 100 unités et l'exécuter pour saisir pour tous les Produits une Qté stock pour la future Mise à Jour (MAJ) du stock de produit lors de la facture. 7DEOH)DFWXUH'pWDLO : - Modification du champ 4XDQWLWp(Quantité commandée dans la facture)valeur défaut :.Valide si:!message si erreur:693!null interdit: 28, (pour saisie obligatoire) Formulaire )DFWXUHVHWVHVSURGXLWV)3: Formulaire de type )3 Contrôle de type Zone de texte &RQWU{OHde type SF )RUPXODLUH source du contrôle de type SF 5HTXrWH source du Formulaire Ouvrir ce Formulaire en modification pour accéder par 1 clic au Contrôle de type SF puis par un autre clic accéder au Formulaire de type sous-formulaire )DFWXUHVHWVHV SURGXLWV6). (voir démonstration par l'enseignant) Accéder parla propriété 6RXUFH du Formulaire (et par en fin de ligne) à la requête 5)DFWXUHGpWDLO et y ajouter la colonne 4WpVWRFN(pour que cette dernière puisse être MAJ par la future macro) puis refermer cette requête. - Désactiver dans le formulaire les 3 contrôles : 4XDQWLWp 3UL[ +7 et 7RWDO GX SURGXLW pour en interdire la saisie (Seul le contrôle 5HISURGXLW est accessible) - Vérifier le nom 5HISURGXLW du Contrôle (Zone de liste déroulante) qui affiche la Désignation du produit (car il sera utilisé dans la future macro). - Ajouter un contrôle zone de texte (indépendant) dans le pied du sous-formulaire et le nommer 4WpDYDQWVDLVLH (il sera utilisé plus tard, voir page précédente en bas) 1HSDV)HUPHUFH)RUPXODLUH6)
8WLOLVDWLRQGHO $FWLRQ'pILQLU9DOHXU'pILQLUODYDOHXU GXQFKDPSGXQFRQWU{OHRXGXQHSURSULpWpGDQV XQIRUPXODLUHXQHWDEOHRXXQpWDW $FWLRQ(TXLYDOHQWHjODIIHFWDWLRQ(OpPHQW ([SUHVVLRQ - Créer un groupe de macros (procédure vue au Td précédent) appelé *URXSH IDFWXUH (il contiendra toutes les macros futures du formulaire facture) 0DFURVXUOD'pVLJQDWLRQVHXODFFqVSRXUDWWHLQGUHODTXDQWLWp - Ecrire (en utilisant le générateur d expression) dans le *URXSH IDFWXUH une Macro )DFWXUH6)5HISURGXLW$FWLYHU47( avec : 'pilqlu9dohxu Elément: Formulaires![Facture et ses produits 2 FP]![Facture et ses produits 2 SF].Form![Quantité].Activé Expression : 28, $WWHLQGUH&RQWU{OH Nom contrôle : 4XDQWLWp Ici, adresse EXPLICITE pour le contrôle 4XDQWLWp (chemin de formulaires menant au contrôle) et attacher cette macro à l'événement $SUqV0$- du contrôle 5HISURGXLW (liste déroulante) Utiliser le générateur d expression à partir de )2508/$,5(6 $WWHQWLRQ : cascade de formulaires Formulaire Contrôle Propriété 0DFURVXUOD4XDQWLWpJDUGHUODQFLHQQHTXDQWLWpSRXUOD0$-VWRFN - Ajouter une Macro )DFWXUH6)4XDQWLWp*DUGHU47(DYDQW dans le *URXSH IDFWXUH avec : Ici, adresse IMPLICITE pour les contrôles (les contrôles sont dans le 'pilqlu9dohxu Formulaire courant) Elément >4WpDYDQWVDLVLH@ (dans le pied de formulaire) Expression : >4XDQWLWp@ (garder l'ancienne valeur de quantité) et attacher cette macro à l'événement 6XUHQWUpH du contrôle 4XDQWLWp La future MAJ du stock seravwrfn VWRFNQRXYHOOHYDOHXUVDLVLHDQFLHQQH
0DFURVXUODTXDQWLWp0DMGXVWRFNHWGpVDFWLYHUODTXDQWLWp - Ecrire (en utilisant le générateur d expression) dans le *URXSH IDFWXUH une Macro )DFWXUH6)4XDQWLWp0DMVWRFN avec : Utiliser le générateur d expression mais QHJDUGHUTXHOHVUpVXOWDWVFLGHVVRXV c est à dire unvlpsohqrpghfkdpsghoduhtxrwhvrxufhgxirupxodluh(ne pas préciser le Formulaire origine du champ ou du contrôle) 'pilqlu9dohxu Elément :>4WpVWRFN@ Expression : >4WpVWRFN@>4XDQWLWp@>4WpDYDQWVDLVLH@ (4WpVWRFN et 4XDQWLWp sont 2 champs accessibles car présents dans la Requête qui est la source de ce Formulaire[Qté avant saisie] est un contrôle du formulaire) $WWHLQGUH&RQWU{OH Nom contrôle : 5HISURGXLW 'pilqlu9dohxu Elément : >4XDQWLWp@>$FWLYp@ Expression : 1RQ $WWHLQGUH(QUHJLVWUHPHQW Enregistrement6XLYDQW Référence :(1 signifie le premier suivant) et attacher cette macro à l'événement 6XUVRUWLH du contrôle 4XDQWLWp Générateur d expression à partir de FORMULAIRES jusqu à atteindre <liste de champs > qui est la source du formulaire (champs de la requête) pour accéder à un champ non affiché via un contrôle - Tester la procédure de mise à jour du stock dans la facture et - Vérifier le résultat directement dans la Table 3URGXLW - - 5HQGUH LQYLVLEOH (par la propriété Visible = non) les 2 contrôles (étiquette et zone de texte) ajoutés dans le pied du SF pour cacher à l'utilisateur la TXDQWLWp$9$17VDLVLH.
%RvWHGHGLDORJXHSRXUFKRL[pWDW 2EMHFWLIV : 3URFpGXUH &UpHUHQPRGH&UpDWLRQXQ)RUPXODLUHYLGHEDVpVXUDXFXQH7DEOH Agrandir le formulaire (4 cm de haut sur 10 de large) Vérifier bouton 'Assistant contrôle'dfwli (s'il y a une bordure au bouton) de la barre Boîte à outils Choisir l outil *URXSHGRSWLRQV et glisser un contrôle - Donner les étiquettes des 2 futurs %RXWRQVGRSWLRQ 9HQWHV+7SDUFDWpJRULH 9HQWHVSDU3URGXLW 6XLYDQW - RXL par défaut pour bouton 'Ventes HT par catégorie' - garder les valeurs (1 et 2) proposées affectées aux boutons d option - case GRSWLRQ (ou l'une ou l'autre des options) et style VWDQGDUG - légende de l étiquette du groupe d option : &KRLVLUXQpWDW $WWHQWLRQ : le contrôle Groupe d option qui vient d être créé a son fond 7UDQVSDUHQW ce qui oblige pour le sélectionner à cliquer sur le contour de son rectangle. Rendre ce contrôle Non transparent et gérer ses couleurs. Faire la mise en page et nommer ce contrôle (le rectangle contenant les 2 options) /LVWH GpWDWV par sa propriété 1RP: Désactiver l'outil $VVLVWDQWFRQWU{OH pour placer 2 (1 puis le copier-coller) ERXWRQV GHFRPPDQGH avec libellés,psuhvvlrq et $SHUoX Enregistrer ce formulaire sous *URXSHGRSWLRQVSRXU(WDWV
Propriétés du formulaire : - SURSULpWpVGHIRUPDW :. barres de défilement : DXFXQH(ascenseurs). afficher sélecteur : QRQ(barre grise verticale à gauche). bouton déplacement : QRQ(Premier, Précédent, Suivant, Dernier). boutons Min-Max: DXFXQ ( agrandissement et réduction de fenêtre) Sauvegarder et fermer. &UpDWLRQGH0DFURV Créer un groupe de macro appelé *URXSHSRXUFKRL[pWDW. $77(17,21 Voir listing des 3 nouvelles macrossdjhvvxlydqwhv SRXUYLVXDOLVDWLRQGHWRXVOHVDUJXPHQWVGHWRXWHVOHV$FWLRQV Ajouter une macro 2XYULU &KRL[(WDWV dans le groupe de macros pour Ouvrir ce formulaire *URXSHGRSWLRQVSRXU(WDWV depuis le formulaire A Menu général par un nouveau bouton de commande Liste d'éwdwv et une macro pour chacun des 2 boutons de ce formulaire Groupe d option pour Etats. Puis attacher ces macros à leur bouton (par les propriétés événementielles Sur Clic de ces boutons). Utiliser le Générateur d expression
3HQVHUjXWLOLVHUOH*pQpUDWHXUG H[SUHVVLRQ 1RPGHOD0DFUR : Ouvrir Choix Etats &RQGLWLRQ $FWLRQ $UJXPHQWV OuvrirFormulaire 1RPGroupe d option pour Etats 1RPGHOD0DFUR : Aperçu Remarque : 'pilqlu9dohxu signifie $IIHFWDWLRQ Elément = Expression &RQGLWLRQ $FWLRQ $UJXPHQWV DéfinirValeur (OpPHQW>Formulaires]![Groupe d'option pour Etats].[Visible] [Formulaires]![Gro upe d'option pour Etats]![Liste d'états]=1 [Formulaires]![Gro upe d'option pour Etats]![Liste d'états]=2 1RPGHOD0DFUR : Imprimer OuvrirEtat OuvrirEtat ([SUHVVLRQ Non 1RP CA HT par catégorie $IILFKDJH: Aperçu avant impression 1RP: 9HQWHVSDU3URGXLW $IILFKDJH: Aperçu avant impression &RQGLWLRQ $FWLRQ $UJXPHQWV DéfinirValeur [Formulaires]![Gro upe d'option pour Etats]![Liste d'états]=1 [Formulaires]![Gro upe d'option pour Etats]![Liste d'états]=2 OuvrirEtat OuvrirEtat (OpPHQW: [Formulaires]![Groupe d'option pour Etats].[Visible] ([SUHVVLRQ Non 1RP CA HT par catégorie $IILFKDJH:,PSUHVVLRQGLUHFWH 1RP: 9HQWHVSDU3URGXLW $IILFKDJH:,PSUHVVLRQGLUHFWH
)RUPXODLUHGHVpOHFWLRQ - ACCESS Travail dirigé : 9-2EMHFWLIDIILFKHUOHVFOLHQWVGHODYLOOHVpOHFWLRQQpH 3URFpGXUH 8QH5HTXrWHSRXUDOLPHQWHUODOLVWHPRGLILDEOH 8QIRUPXODLUHSRXUVpOHFWLRQQHUODYLOOHHWDIILFKHUOHVFOLHQWV Créer un formulaire vide (basé sur aucune table/requête) et y ajouter une liste déroulante LQGpSHQGDQWH (= sans valeur pour la propriété Source), liste avec un Contenu défini par la requête précédente puis nommer la Liste déroulante 9LOOH6pOHFWLRQ Enregistrer ce formulaire &OLHQWVjVpOHFWLRQQHUSDUYLOOH Garder ce formulaire ouvert et par menu FENETRE-Base de données, créer
8QHUHTXrWHGHVpOHFWLRQ basée sur la table client avec comme critère de sélection la valeur du contrôle liste modifiable 9LOOH6pOHFWLRQ du formulaire &OLHQWVjVpOHFWLRQQHUSDUYLOOH Enregistrer cette requête : 5&OLHQWVVpOHFWLRQQpVSDUYLOOH 8QHOLVWHGHFOLHQWVGDQVOHIRUPXODLUH Retourner au formulaire &OLHQWVjVpOHFWLRQQHUSDUYLOOH Ajouter en mode Assistant contrôle un contrôle de W\SH6RXVIRUPXODLUH basé sur la requête précédente (pour afficher les clients sélectionnés sur la ville) et enregistrer le Formulaire généré : &OLHQWVVpOHFWLRQQpVSDUYLOOH6). 2 éléments sont créés par l'assistant : - un FRQWU{OH de type SF nommé par défaut &OLHQWVVpOHFWLRQQpVSDUYLOOH6) - un formulaire en mode liste (de client) qui est la source du contrôle précédent Enregistrer et utiliser ce formulaire. (QUpVXPp : Le IRUPXODLUH3ULQFLSDO (Clients à sélectionner par ville) contient un &RQWU{OH GH W\SH 6) (Clients sélectionnés par ville SF) qui contient un )RUPXODLUHHQPRGH/LVWH (Clients sélectionnés par ville SF) qui est basé sur une 5HTXrWHVpOHFWLRQ (R Client sélectionnés par ville). 3UREOqPH : Le contrôle sous formulaire ne "regarde" la valeur de la liste déroulante (ville) qu'à l'ouverture du sous-formulaire (la ville est vide à ce moment là). 6ROXWLRQ : il faut demander explicitement au contrôle SF G$FWXDOLVHU son contenu après chaque nouvelle saisie dans la liste déroulante Ville. 0DFURSRXUUDIUDvFKLUXQHYDOHXU Créer une macro &RQGLWLRQ $FWLRQ $UJXPHQWV $FWXDOLVHU 1RPFRQWU{OHClients sélectionnés par ville SF et l'attacher à l'événement $SUqV 0$- de la liste déroulante (donc après chaque nouveau choix de ville).
7RWDOGXGpWDLOGHVIDFWXUHVVDQV6RXVIRUPXODLUH 2EMHFWLI Formulaire Facture avec Total Facture sans Sous-formulaire &UpHUXQH5HTXrWH6pOHFWLRQ 3URFpGXUH 'RQQpHVGHODWDEOH)DFWXUH'pWDLO 5pVXOWDWVGHOD5HTXrWH &UpHUXQHƒ5HTXrWH6pOHFWLRQDYHF7DEOHVHWOD5HTXrWHSUpFpGHQWH
Relation créée manuellement entre Table et 5HTXrWH 9LVXDOLVHUOHUpVXOWDW &UpHUXQ)RUPXODLUHEDVpVXUFHWWHGHUQLqUH5HTXrWH Remarque : Ce Formulaire basé sur cette requête particulière ne peut être mis à jour au niveau du calcul Total 2, donc ce champ a été Inactivé par la propriété $FWLYH121
$0LVHjMRXU0DQXHOOH9LVLEOHGX6ROGHGX&OLHQWVXU pyqqhphqwxwlolvdwhxu&olf%rxwrqhqilqgh)dfwxuh Table Coordonnées Client: - Nouveau champ : 6ROGH de type 1XPpULTXH - Saisir pour 1 client un solde pour futur test de la MAJ du solde par la facture. - Créer une Requête qui sera la base du Formulaire )3)DFWXUH Présent pour affichage et MAJ Formulaire FP Facture 2 : - Sélectionner par la propriété Source du Formulaire (à la place de la table )DFWXUH1 DUWla requête ci-dessus ce qui vous permet d ajouter par la barre d outils 2 nouveaux contrôles : 9LOOH et 6ROGH basés sur leur champ respectif de la requête. - Désactiver dans le formulaire le contrôle 6ROGH pour en interdire la saisie et le nommer /H6ROGH, nommer aussi le contrôle qui calcule le total de la facture 7RWDO )DFWXUH - Créer un Bouton de commande (sans l assistant contrôle) qui lancera la MAJ du solde et définir à partir de la propriété 6XUFOLF de ce contrôle une Macro 0)DFWXUH%70$-6ROGH&OLHQWavec : 5HPDUTXH : Comme dans la MAJ du stock vue précédemment les noms de champ ou de contrôle peuvent en version longue être préfixés par leur formulaire ou cascade de formulaires. Pour la MAJ du Solde, nous utiliseront seulement la version courte avec directement le nom du contrôle ou champ.
Le solde étant affiché à l écran,srvvlelolwpv sont disponibles pour la MAJ: par le&kdps>6rogh@ GHODUHTXrWH ou par le Contrôle [Le Solde] du formulaire. D$FFqVHWDIIHFWDWLRQDX&KDPS>6ROGH@GHODUHTXrWH 'pilqlu9dohxu Elément :>6ROGH@ Expression : >6ROGH@>7RWDO)DFWXUH@ (mais [Total Facture] est un nom de contrôle car il n y a pas de champ correspondant) $FWXDOLVHU Nom contrôle :/H6ROGH (ici, pas de [ ] car 1 seul nom de contrôle est attendu ) (la Maj ayant été faite sur le champ, la valeur du contrôle du formulaire est à actualiser pour tenir compte de la nouvelle valeur de sa source) 5HPDUTXH : cette action $FWXDOLVHU est utilisée pour forcer un élément à relire sa source b) Accès et affectation au Contrôle [Le Solde] du formulaire 'pilqlu9dohxu Elément :>/H6ROGH@ Expression : >/H6ROGH@>7RWDO)DFWXUH@ (la Maj ayant été faite sur le contrôle, la valeur du champ est automatiquement actualisée comme une saisie classique dans un contrôle) - Tester la procédure sur une facture correspondant au client pour lequel le solde a été initialisé.