Tom's Guide > Forum > Programmation > VBA ACCESS Transferer des donnees d'une table vers une autre

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

Forum Programmation : VBA ACCESS Transferer des donnees d'une table vers une autre

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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

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. Set db = CurrentDb
  7. Set rs1 = db.OpenRecordset("SELEC * FROM A_Stocker" )
  8. Do Until rs1.EOF
  9. strSQL = "SELEC * FROM A_Transferer WHERE "
  10. strSQL = strSQL & "#Num_Agence = " & rs1("#Num_Agence" ) & " And "
  11. strSQL = strSQL & "Article = " & rs1("Article" ) & " And "
  12. strSQL = strSQL & "Num_Lot = " & rs1("Num_Lot" )
  13. Set rs2 = db.OpenRecordset(strSQL)
  14. If rs2.RecordCount > 0 Then
  15.   rs1.Edit 'Modifier
  16.   rs1("QuantiteStockee" ) = rs1("QuantiteStockee" ) - rs2("QuantiteTransferer" )
  17. End If
  18. If rs1("QuantiteStockee" ) = 0 Then
  19.   rs1.Delete
  20. End If
  21. rs1.Update          'Mettre a jour
  22. rs1.MoveNext
  23. Loop
  24. End sub

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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

Répondre à scuny

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...

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. Set db = CurrentDb
  7. Set rs1 = db.OpenRecordset("SELEC * FROM A_Stocker" )
  8. Do Until rs1.EOF
  9. strSQL = "SELEC * FROM A_Transferer WHERE "
  10. strSQL = strSQL & "#Num_Agence = " & rs1("#Num_Agence" ) & " And "
  11. strSQL = strSQL & "Article = " & rs1("Article" ) & " And "
  12. strSQL = strSQL & "Num_Lot = " & rs1("Num_Lot" )
  13. Set rs2 = db.OpenRecordset(strSQL)
  14. If rs2.RecordCount > 0 Then
  15.   rs1.Edit 'Modifier
  16.  
  17.   if rs1("QuantiteStockee" ) - rs2("QuantiteTransferer" ) < 1 then
  18.   rs1.Delete
  19.   else
  20.  
  21.   rs1("QuantiteStockee" ) = rs1("QuantiteStockee" ) - rs2("QuantiteTransferer" )
  22.   rs1.Update          'Mettre a jour
  23.   rs1.MoveNext
  24. End if
  25. Loop
  26. End sub



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

++

Nico.

Répondre à leghola
Tom's Guide > Forum > Programmation > VBA ACCESS Transferer des donnees d'une table vers une autre
Aller à :

Il y a 2070 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens