OVH Cloud OVH Cloud

Mettre à jour une table avec le contenu d'une requete

23 réponses
Avatar
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 :)

Merci d'avance

3 réponses

1 2 3
Avatar
Txl
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

devient

     strMaj = "UPDATE tblComposant"
     strMaj = strMaj + " SET stk = " & (Rs!stk + 4)
     strMaj = strMaj + " WHERE ref = " & Rs!ref

>    CurrentDb().Execute(strMaj)
>    Rs.MoveNext
> Wend
> Rs.Close
> Set Rs = Nothing

Là je pense que ça devrait gazer (si on est bien toujours d'accord qu e
la clef Ref est un entier).


Avatar
Gloops
Txl a écrit, le 17/04/2009 16:18 :
et ca marche !!!



Ah, ben ça c'est l'essentiel :)

Et puis tant mieux, parce qu'à part ça je suis largué :)
Avatar
Txl
On 18 avr, 02:04, Gloops wrote:
Txl a écrit, le 17/04/2009 16:18 :

> et ca marche !!!

Ah, ben ça c'est l'essentiel :)

Et puis tant mieux, parce qu'à part ça je suis largué :)



Ca fait plaisir, je me sens moins seul :)
1 2 3