Mettre à jour une table avec le contenu d'une requete
23 réponses
Txl
Bonjour =E0 tous,
J'ai un form qui me lance un requete pour connaitre la quantit=E9 de
composants n=E9cessaires pour fabriquer un certain produit.
Par contre je bloque comme un ane et je n'arrive pas =E0 mettre le stock
de composants =E0 jour...
Donc ma table composants tblcomposant contient une ligne de ref
composant (par ex 1548) et cette ref de composant =E0 un stock (21)
Sachant que j'ai une requete qui me sort le code ref et la quantit=E9
necessaire, mais comment faire une requete qui ferait "stock=3Dstock-qte
necessaire" et qui mettrait =E0 jour avec la bonne ref.
j'ai essay=E9 de faire une requete de mise =E0 jour mais ca m'a dit que ca
allait effacer la table tblcomposant et ca m'a fait un peu peur :)
Je suis meme plus perdu tellement que je suis perdu :)
J'ai essayé ta méthode qui parait copmlètement logique mais ca ne marchait pas, pourtant la ref est bien un entier...
Alors j'ai triché :)
1 requete de selection qui crée une table vide avec les enregsitrements selectionnées 1 requete de mise a jour de table existante avec les données de la nouvelle table 1 requete qui efface les données de la nouvelle table 1 macro qui execute le tout
et ca marche !!!
Je suis le roi des c.... de ne pas y avoir pensé plus tot mais je vais quand meme regarder ton code et surtoutla théorie qui me parait bien plus sophistiquée que mes requetes de bourrin :)
Encore merci et à TRES bientot pour le prochain problème, j'essaie de le résoudre tout seul et si ca marche pas je le poste...
Gloops a écrit, le 17/04/2009 12:34 :
sauf que j'en ai largué en route ...
Bien sûr, c'était pour voir si tout le monde suit :) mais finalement c'était quand même un peu gonflé de ma part.
> Set Rs = CurrentDb().OpenRecordset(strSQL) > 'Rs est un jeu d'enregistrements ouvert sur la requête de sélection
Bon, jusque là OK, il y a d'ailleurs une variante comme je disais.
> While Not Rs.EOF
toujours OK
> Debug.Print "Traitement de la référence" & ref & " : ancien stock " & > stk & ", nouveau stock " & stk + 4
devient :
Debug.Print "Traitement de la référence " & Rs!ref & _ " : ancien stock " & Rs!stk & ", nouveau stock " & Rs!stk + 4
> 'ce qui permet de voir dans la fenêtre d'exécution ce qui au ra été fait > 'et de vérifier dans la table que le nouveau stock correspondr a bien > 'à ce à quoi on s'attendra
> strMaj = "UPDATE tblComposant" > strMaj = strMaj + " SET stk = " & (stk + 4) > strMaj = strMaj + " WHERE ref = " & ref > 'Attention, les espaces sont importants > 'devant SET et WHERE
Là je pense que ça devrait gazer (si on est bien toujours d'accord qu e la clef Ref est un entier).
Je suis meme plus perdu tellement que je suis perdu :)
J'ai essayé ta méthode qui parait copmlètement logique mais ca ne
marchait pas, pourtant la ref est bien un entier...
Alors j'ai triché :)
1 requete de selection qui crée une table vide avec les
enregsitrements selectionnées
1 requete de mise a jour de table existante avec les données de la
nouvelle table
1 requete qui efface les données de la nouvelle table
1 macro qui execute le tout
et ca marche !!!
Je suis le roi des c.... de ne pas y avoir pensé plus tot mais je vais
quand meme regarder ton code et surtoutla théorie qui me parait bien
plus sophistiquée que mes requetes de bourrin :)
Encore merci et à TRES bientot pour le prochain problème, j'essaie de
le résoudre tout seul et si ca marche pas je le poste...
Gloops a écrit, le 17/04/2009 12:34 :
sauf que j'en ai largué en route ...
Bien sûr, c'était pour voir si tout le monde suit :)
mais finalement c'était quand même un peu gonflé de ma part.
> Set Rs = CurrentDb().OpenRecordset(strSQL)
> 'Rs est un jeu d'enregistrements ouvert sur la requête de sélection
Bon, jusque là OK, il y a d'ailleurs une variante comme je disais.
> While Not Rs.EOF
toujours OK
> Debug.Print "Traitement de la référence" & ref & " : ancien stock " &
> stk & ", nouveau stock " & stk + 4
devient :
Debug.Print "Traitement de la référence " & Rs!ref & _
" : ancien stock " & Rs!stk & ", nouveau stock " & Rs!stk + 4
> 'ce qui permet de voir dans la fenêtre d'exécution ce qui au ra été fait
> 'et de vérifier dans la table que le nouveau stock correspondr a bien
> 'à ce à quoi on s'attendra
> strMaj = "UPDATE tblComposant"
> strMaj = strMaj + " SET stk = " & (stk + 4)
> strMaj = strMaj + " WHERE ref = " & ref
> 'Attention, les espaces sont importants
> 'devant SET et WHERE
Je suis meme plus perdu tellement que je suis perdu :)
J'ai essayé ta méthode qui parait copmlètement logique mais ca ne marchait pas, pourtant la ref est bien un entier...
Alors j'ai triché :)
1 requete de selection qui crée une table vide avec les enregsitrements selectionnées 1 requete de mise a jour de table existante avec les données de la nouvelle table 1 requete qui efface les données de la nouvelle table 1 macro qui execute le tout
et ca marche !!!
Je suis le roi des c.... de ne pas y avoir pensé plus tot mais je vais quand meme regarder ton code et surtoutla théorie qui me parait bien plus sophistiquée que mes requetes de bourrin :)
Encore merci et à TRES bientot pour le prochain problème, j'essaie de le résoudre tout seul et si ca marche pas je le poste...
Gloops a écrit, le 17/04/2009 12:34 :
sauf que j'en ai largué en route ...
Bien sûr, c'était pour voir si tout le monde suit :) mais finalement c'était quand même un peu gonflé de ma part.
> Set Rs = CurrentDb().OpenRecordset(strSQL) > 'Rs est un jeu d'enregistrements ouvert sur la requête de sélection
Bon, jusque là OK, il y a d'ailleurs une variante comme je disais.
> While Not Rs.EOF
toujours OK
> Debug.Print "Traitement de la référence" & ref & " : ancien stock " & > stk & ", nouveau stock " & stk + 4
devient :
Debug.Print "Traitement de la référence " & Rs!ref & _ " : ancien stock " & Rs!stk & ", nouveau stock " & Rs!stk + 4
> 'ce qui permet de voir dans la fenêtre d'exécution ce qui au ra été fait > 'et de vérifier dans la table que le nouveau stock correspondr a bien > 'à ce à quoi on s'attendra
> strMaj = "UPDATE tblComposant" > strMaj = strMaj + " SET stk = " & (stk + 4) > strMaj = strMaj + " WHERE ref = " & ref > 'Attention, les espaces sont importants > 'devant SET et WHERE