Se connecter / S'enregistrer
Votre question

VBA ACCESS Transferer des donnees d'une table vers une autre

Tags :
  • table
  • Programmation
Dernière réponse : dans Programmation
Anonyme
4 Juin 2005 14:35:43

Bon Mon probleme aujourd'hui ce porte sur un code VBA d'une application ACCESS...
Mon but est de transferer les données d'une table via une autre à l'aide d'un bouton appelée Commande16

Deux tables sont essentiellement presents.
A_Stocker et A_ Transferer ..
Je voudrais que les données de A_Transferer soit transcrit vers A_Stocker ...

Voila Mon code
  1. Private Sub Commande16_Click()
  2. Dim db As DAO.Database
  3. Dim rs1 As DAO.Recordset
  4. Dim rs2 As DAO.Recordset
  5. Dim strSQL As String
  6.  
  7. Set db = CurrentDb
  8. Set rs1 = db.OpenRecordset("SELEC * FROM A_Stocker")
  9.  
  10. Do Until rs1.EOF
  11.  
  12. strSQL = "SELEC * FROM A_Transferer WHERE "
  13. strSQL = strSQL & "#Num_Agence = " & rs1("#Num_Agence") & " And "
  14. strSQL = strSQL & "Article = " & rs1("Article") & " And "
  15. strSQL = strSQL & "Num_Lot = " & rs1("Num_Lot")
  16.  
  17. Set rs2 = db.OpenRecordset(strSQL)
  18.  
  19. If rs2.RecordCount > 0 Then
  20. rs1.Edit 'Modifier
  21. rs1("QuantiteStockee") = rs1("QuantiteStockee") - rs2("QuantiteTransferer")
  22. End If
  23.  
  24. If rs1("QuantiteStockee") = 0 Then
  25. rs1.Delete
  26. End If
  27.  
  28. rs1.Update 'Mettre a jour
  29. rs1.MoveNext
  30.  
  31. Loop
  32.  
  33. End sub

Autres pages sur : vba access transferer donnees table vers

Anonyme
5 Juin 2005 07:48:56

Personne ???
6 Juin 2005 07:45:07

et il se passe quoi quand tu executes ton code?

nous on a pas la base.
on ne sait pas quel sont tes vues.

donne l'erreur que tu rencontres. stp.


un conseil:
ne met pas ton code dans ton userform, mais dans un module que tu appellles avec 'call'
et si tes variables doivent être utilisées ailleurs
déclare les avec 'public' ==> public MyVar as Definition
12 Juillet 2005 17:27:50

deja ouille ouille ouille la performance !!

dans ton do-loop tu executes X requetes avec quasiment les memes valeurs ???

ensuite, si tu fais un delete , un update et ensuite un movenext ton record X apres le delete sera X + 1 et ensuite tu fais un movenext qui te provoque un X+2, tu oublies un enregistrement a chaque delete

De plus je ne sais plus si c'ets utile de faire un update apre sun delete (voir ca peut le faire planter)

Imagine apres que tu fais un delete sur ton dernier enregistrement, ton eof est a true ... et avant de tester ton eof yahoo ton lance un movenext ...
plantage en perspective

voila pour une premiere visue rapide...

  1. Private Sub Commande16_Click()
  2. Dim db As DAO.Database
  3. Dim rs1 As DAO.Recordset
  4. Dim rs2 As DAO.Recordset
  5. Dim strSQL As String
  6.  
  7. Set db = CurrentDb
  8. Set rs1 = db.OpenRecordset("SELEC * FROM A_Stocker")
  9.  
  10. Do Until rs1.EOF
  11.  
  12. strSQL = "SELEC * FROM A_Transferer WHERE "
  13. strSQL = strSQL & "#Num_Agence = " & rs1("#Num_Agence") & " And "
  14. strSQL = strSQL & "Article = " & rs1("Article") & " And "
  15. strSQL = strSQL & "Num_Lot = " & rs1("Num_Lot")
  16.  
  17. Set rs2 = db.OpenRecordset(strSQL)
  18.  
  19. If rs2.RecordCount > 0 Then
  20.  
  21. rs1.Edit 'Modifier
  22.  
  23. if rs1("QuantiteStockee") - rs2("QuantiteTransferer") < 1 then
  24. rs1.Delete
  25.  
  26. else
  27.  
  28. rs1("QuantiteStockee") = rs1("QuantiteStockee") - rs2("QuantiteTransferer")
  29. rs1.Update 'Mettre a jour
  30. rs1.MoveNext
  31.  
  32. End if
  33.  
  34.  
  35.  
  36. Loop
  37.  
  38. End sub


c'ets pas testé mais a vu de nez ce doit etre mieux ...

++

Nico.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS