|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() |
Bonjour,
J'ai un souci de requête d'ajout. J'ai une table T_facture qui contient un champ TotalHT J'ai une requête qui me fait le total HT de chaque facture (les enregistrements étant dans une table intermédiaire) Lorsque j'execute en requête simple, il me sort parfaitement le total de chaque facture en fonction de l'IDFacture (clef primaire de ma table) En revanche lorsque je fais la requête d'ajout, Access m'affiche une erreur de violation de clef, alors que je veux juste faire correspondre mon totalHT avec mon IDFacture. Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Nicolas GuimbalConsultant/développeur ERP Inscription : mai 2008 Messages : 1 256 ![]() |
Bonjour,
Cette requete essaie d'insérer une nouvelle ligne d'entete pour chaque facture existante donc ça crée des doublons > violation de clés Il faut faire un update ou insérer dans une autre table |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
Merci, c'est bien ce que je pensais. Par contre (je vais passer pour un débutant) je ne sais pas comment le faire.
Quel critère dois je mettre dans ma requête pour qu'il aille écrire l'enregistrement pour la bonne facture ? J'ai essayé ça, mais ça ne marche pas Code :
UPDATE t_facture INNER JOIN R_total_facture ON t_facture.IDFacture = R_total_facture.IDFacture SET t_facture.TotalHT = [R_total_facture].[SumOftotalHT]; |
|
|
00
|
|
|
#4 |
![]() ![]() |
Bonjour
Cela n'a rien à voir avec la question, car on ne stocke jamais le total d'une facture, pourquoi ? C'est information est redondante, car tu peux l'avoir autrement, donc cela alourdit la base inutilement, il suffit de la calculer lorsque tu en as besoin (par une requête ou un état). Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon ![]() Si vous pensez commencer sans un livre, oublier : livres pour débuter Vous pouvez consulter mes articles sur Access et PowerPoint Le blog Office. Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Phillipe,
Je ne suis pas totalement d'accord. J'utilise ma base Access afin de faire également un prévisionnel, + un état N-1. Et j'ai besoin d'un montant de facture qui ne bouge plus. En sahant que je facture des heures, mais que le montant peut évoluer au fil des années, sans changer l'intitulé Maintenant j'ai trouvé la solution : Il n'est pas possible d'intégrer un champ calculé dans une table (ce n'est pas moi qui le dit, mais Microsoft). J'ai donc créé une table intermédiaire qui me stock mon montant, et ensuite je fais un update de la table intermédiaire à la table Facture. Merci quand même pour l'aide du forum |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Nicolas GuimbalConsultant/développeur ERP Inscription : mai 2008 Messages : 1 256 ![]() |
La table intermédiaire n'est pas nécessaire, le sql permet plein de possibilités par exemple :
Code :
UPDATE t_facture SET TotalHT = (select sum(totalHT) from Rfacture where R_facture.IDFacture = t_facture.IDFacture) - l'info est redondante comme indiqué par Philippe - les 2 champs totalHT ont le même nom mais pas le même contenu ![]() - cette requête met à jour toute la table alors qu'il est probable qu'une seule facture a été modifiée > ajouter une condition WHERE |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com