ACCESS : Récupérer des données par défaut...

Fermé
d_cer76 Messages postés 4 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 4 juillet 2008 - 3 juil. 2008 à 15:58
 d_cer76 - 9 juil. 2008 à 15:50
Bonjour à tous,

J'essaye de faire l'exercice de facturation proposé sur ce site (http://www.ybet.be/exercice-access/2-exercice.php

Il s'agit de créer une Bdd de facturation. J'ai déjà créé les tables nécessaires et les relations entre elles semblent correcte.
J'ai suivi à l'identique les conseils décrits sur le site de l'exercice.

Mais maintenant, je suis bloqué lorsqu'il s'agit de créer une procédure evenementielle pour récupérer les valeurs "prix", "désignation", et "tva" de la table "produit".

Dans l'exercice, il est écrit : "nous utiliserons une procédure événementielle pour récupérer les données de la table produits par défaut".

J'ai bien essayé de pointer la valeur valeur par défaut vers la table "produit", mais ça ne fonctionne pas...


Est-ce que vous pourriez m'aoder à avancer s'il vous plait ?


Je reste disponible pour vous transmettre plus d'informations si besoin.
Tres cordialement,

David
A voir également:

7 réponses

Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
3 juil. 2008 à 17:07
dans valeur par defaut, il faut rentrer une valeur fixe.
as tu plus de précisions quant à la "procédure evenementielle" ?
0
d_cer76 Messages postés 4 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 4 juillet 2008
4 juil. 2008 à 06:23
Explication :

j'ai une table "produit" dans laquelle j'ai les champs "code_produit","designation", "Prix_Unitaire_HT" et "tva". Dans une autre table "contenu_facture", j'ai les champs "num_facture", "code_produit", "quantité", des champs calculés "total_HT" et "total_TTC"; mais je dois aussi reprendre les champs "désignation", "PU_HT" et "TVA".

La solution la plus simple serait de faire appel à ces 3 champs en provenance de la table Produit, au moment ou je créé la requete "R_contenu_facture". Mais le problème c'est que si demain je décide par exemple de changer le prix unitaire d'un produit référencé, toutes mes factures faisant appel au produit, seront modifiées et donc fausses...

L'autre solution conseillée est donc la suivante : rajouter les 3 champs "désignation", "PU_HT" et "TVA" aussi dans la table "contenu_facture". Ainsi, je fait une requete en prenant ces 3 champs, mais il faut par défaut, faire en sorte que ces champs affichent les valeurs liées au code produit correspondant.

Je ne sais pas si j'ai été suffisamment clair, alors je me permets de citer une partie de l'exercice en question :

-------------------------------------------------------------------------------------------------------------------------
Cette table reprend toutes les lignes de la facture... Le contenu en lui-même doit obligatoirement reprendre:
- le code du produit
- la quantité.
Le choix des autres champs est plus délicat, mais les renseignements obligatoires sur le document commercial sont : le prix unitaire, le taux TVA, la description.
- Ces 3 champs peuvent être repris de la table produits directement ou recopiés lors de la création de la facture de cette table. Si nous reprenons directement les propriétés de la table produit, un changement de prix dans notre table produit influencera directement l'impression d'anciennes factures. De plus, il ne sera pas possible de modifier le prix ou la description en cours de facturation. La solution consiste donc à effectivement créer les champs Prix, description et taux de TVA. Lors de l'introduction de la ligne de facture, nous utiliserons une procédure événementielle pour récupérer les données de la table produits par défaut (mais nous pourrons faire des modifications éventuelles).Changer le prix dans la table produit ne modifiera pas le prix dans les anciennes factures.

-------------------------------------------------------------------------------------------------------------------------

Voilà, je reste toujours disponible pour d'autres informations si besoin. Merci bcp pour votre aide, je me sents moins seul devant mon ignorance.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
4 juil. 2008 à 09:25
vu qu il n y a rien de précis d'indiqué, je crois que tu es libre de choisir entre du code ou une requete pour coller les valeurs de prix et tva de l article dans la facture créée.
0
d_cer76 Messages postés 4 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 4 juillet 2008
4 juil. 2008 à 10:54
j'ai essayé sous forme de requete :

Select[Désignation].[T_Produits] from T_Produits Where [code_produit].[T_Produits]=[code_produit].[T_contenu_facture];

Je l'ai noté dans les propriétés du champs "désignation" de la requete R_contenu_facture, plus précisément dans "valeur par défaut"... mais ça ne fonctionne pas... Il ne m'affiche pas les valeurs attendues

Pourtant mes deux tables sont bien liées par les codes produits

Comment faire alors ?
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
4 juil. 2008 à 11:00
je crois que tu dois lancer une seconde requete, juste pour faire la mise à jour.
est il précisé dans l'énoncé que tu utilises un formulaire pour la saisie ?
0
d_cer76 Messages postés 4 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 4 juillet 2008
4 juil. 2008 à 12:09
Oui j'utilise un formulaire... ou plutot deux formaulaires comme décrit ci-dessous :

- Formulaire "F_facture" : contenant les champs "num_facture", "date_facture", "client", et d'autres champs relatifs aux coordonnées client

- Un Sous-Formulaire "SF_contenu_facture" : contenant les champs "code_produit", "quantité", "PU_HT", "Désignation", "TVA" et quelques champs calculés...

Je rappelle que ces deux fomulaires sont joints par le code facture.

De plus pour créer ces formulaires, j'ai prix le soin de créer d'abord une requete récupérant toutes les données utiles des diverses tables (T_client, T_Facture, T_contenue_facture, T_produit).

merci de ton (votre) aide.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
4 juil. 2008 à 17:05
ce qu il est donc possible de faire c'est faire effectuer une action (executer la requete de mise à jour) sur un evenement donné.
soit le mise à jour d'un champ, le clic d un bouton,... auquel tu associes l'execution de la requete.
quand tu crées le formulaire, tu fais clic droit et propriété sur l'objet qui doit déclencher la mise à jour, puis tu vas sur l onglet evenement, tu choisis le plus approprié (sur clic pour un bouton par ex) et tu y indiques la requete à executer.
ça marche aussi en associant une macro ou du code.
0
Bonjour,

et merci pour ton aide. Désolé pour le retard mais j'i mis de coté ce problème durant ce weekend.

Voilà, J'ai repris l'ensemble de l'exercice, et j'ai essayé d'appliquer ce que tu m'as conseillé :

1 - J'ai créé une macro qui exécute la requete suivante :

SELECT T_Produits.Prix_Unitaire_HT FROM T_Produits INNER JOIN T_Contenu_Facture ON T_Produits.Code_produit = T_Contenu_Facture.Code_produit;

2 - Dans mon sous-formulaire "SF_contenu_facture", dans les propriétés du champ "PU_HT", j'ai appelé cette macro.

J'ai essayé dans plusieurs paramètres : "avant maj"- "apres maj", "sur clic" etc... mais ça ne veut pas fonctionner malgré tout

Peut-être faudrait-il que je te transmette ma bdd ?

cordialement,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
7 juil. 2008 à 12:38
il faut que ta macro execute une requete de mise à jour, une requete selection ne va rien modifier.
0
je vais réessayer dés que possible en modifiant ma macro !

Il faut utiliser la commande "update" c'est ça ?

En tout cas merci pour ton aide... C'est vraiment sympa
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
7 juil. 2008 à 14:30
quand tu selectionne le type de requete, et suivant la langue / version d'access, c'est update ou mise à jour.
0
Voilà ce que j'ai essayé :

- Création d'une macro qui execute le SQL suivant :

UPDATE T_contenu_facture set PU_HT=(SELECT Prix_Unitaire_HT
FROM R_Produits INNER JOIN (T_Facture INNER JOIN T_Contenu_Facture ON T_Facture.Num_facture = T_Contenu_Facture.Num_Facture) ON R_Produits.Code_produit = T_Contenu_Facture.Code_produit);

- Dans les propriété du champs PU_HT de mon sous formulaire F_contenu_facture, j'ai appelé cette macro (en essayant plusieurs possibilités (avant update - apres update - sur entrée etc...)

Résultat : ça ne marche pas à chaque fois

J'ai aussi essayé avec la requete suivante : UPDATE T_Contenu_facture SET PU_HT = Prix_Unitaire_HT WHERE code_produit.T_Produits=code_produit.T_contenu_Facture;

mais en vain...

J'avoue que je ne sais plus trop comment procéder là
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
8 juil. 2008 à 10:49
pour faire simple, tu peux créer un bouton pour enregistrer ta facture.
avec l'assistant de création de bouton, tu choisis "opérations sur enregistrements" / "sauvegarder".
il va te créer du code, mais tu peux le faire dans une macro si tu ne connais pas.
il te reste à ajouter ta requete de mise à jour dans les actions executées par le bouton.
il faut peut etre ajouter une condition dans ta requete de mise à jour, pour qu elle ne se fasse que "si le champ prix HT est null"
0
Bonjour,

Je n'ai pas eu encore le temps de me remettre sur cette db. J'espère le faire d'ici vendredi . Toutefois je vais essayer ce que tu me proposes dés que possible.

A bientôt
0