Boucle a l'aide

emubusta Messages postés 27 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 21 mai 2008 - 29 avril 2005 à 11:32
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 29 avril 2005 à 19:39
salut à tous g un pb de boucle infini : je veu parcourir une liste d'enregistrement en modifiant strcprgp





Private Sub MajMontantCpteRegroupement()

Dim req As DAO.QueryDef

Dim req2 As DAO.QueryDef

Dim frd As DAO.Recordset

Dim frd2 As DAO.Recordset

Dim strCptRgp As String

Dim dblMontant As Double



CurrentDb.QueryDefs.Refresh



'Déterminer le Compte de Regroupement correspondant au Compte en cours

Set req = CurrentDb.QueryDefs("Req_CpteRegroupementPourUnCompte")

req.Parameters("prmCptCod").Value = Me.code_compte.Value







Set frd = req.OpenRecordset(dbOpenSnapshot)





Do While frd.EOF = False





strCptRgp = frd.Fields("code_regroupement").Value



'Calculer Somme sur Compte de Regroupement

Set req2 = CurrentDb.QueryDefs("Req_SousTotalUnRegroupement")

req2.Parameters("prmExeCod").Value = Me.txt_exercice

req2.Parameters("prmSocCod").Value = Me.cbx_societe

req2.Parameters("prmCptCod").Value = strCptRgp





Set frd2 = req2.OpenRecordset(dbOpenSnapshot)

dblMontant = frd2.Fields("SommeMontant").Value



'Mise à jour montant Compte de Regroupement

Set req2 = CurrentDb.QueryDefs("definir_maj_essai")

req2.Parameters("prmExeCod").Value = Me.txt_exercice

req2.Parameters("prmSocCod").Value = Me.cbx_societe

req2.Parameters("prmCptCod").Value = strCptRgp

req2.Parameters("prmTotal").Value = dblMontant

req2.Execute

req.Parameters("prmCptCod").Value = strCptRgp



Loop



On Error Resume Next

frd2.Close

frd.Close



req2.Close

Set req2 = Nothing

req.Close

Set req = Nothing



On Error GoTo 0



End Sub



Private Sub Form_AfterUpdate()

Call MajMontantCpteRegroupement

End Sub



Private Sub Form_Load()

Me.cpte_bilan_cpte_resultat.Visible = False

Me.niv_rupture.Visible = False

Me.code_exercice.Visible = False

Me.position_compte.Visible = True

Call EtablirFiltre



End Sub



Private Sub montant_GotFocus()

If IsNull(Me.niv_rupture.Value) Then

Me.montant.Locked = False

Else

Me.montant.Locked = True

End If

End Sub



Private Sub txt_exercice_Click()

Call AlimenterDefinir

Call EtablirFiltre

End Sub





Private Sub AlimenterDefinir()

Dim req As DAO.QueryDef



If IsNull(Me.txt_exercice) Then

Exit Sub

End If



If IsNull(Me.cbx_societe) Then

Exit Sub



End If





'insertion des données dans la table Definir

CurrentDb.QueryDefs.Refresh

Set req = CurrentDb.QueryDefs("definir_maj")



'Initialiser les paramètres

req.Parameters("prmExCod").Value = Me.txt_exercice

req.Parameters("prmSocCod").Value = Me.cbx_societe

req.Parameters("prmMt").Value = 0



'insertion dans la table

req.Execute



req.Close

Set req = Nothing



End Sub

7 réponses

Starec Messages postés 152 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 5 mars 2007
29 avril 2005 à 11:48
Ne manquerait-il pas un frd.movenext avant ton loop

Starec
0
emubusta Messages postés 27 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 21 mai 2008
29 avril 2005 à 12:26
non il men faut pas parce que a chaque fois g kun seul
enregistrement et je modifie le code regroupement mais le pb c
kil ne change pa dou la boucle infini

Private Sub MajMontantCpteRegroupement()

Dim req As DAO.QueryDef

Dim req2 As DAO.QueryDef

Dim frd As DAO.Recordset

Dim frd2 As DAO.Recordset

Dim strCptRgp As String

Dim dblMontant As Double



CurrentDb.QueryDefs.Refresh



'Déterminer le Compte de Regroupement correspondant au Compte en cours







Set req = CurrentDb.QueryDefs("Req_CpteRegroupementPourUnCompte")

req.Parameters("prmCptCod").Value = Me.code_compte.Value

Set frd = req.OpenRecordset(dbOpenSnapshot)



Do While frd.EOF = False





strCptRgp = frd.Fields("code_regroupement").Value



'Calculer Somme sur Compte de Regroupement

Set req2 = CurrentDb.QueryDefs("Req_SousTotalUnRegroupement")

req2.Parameters("prmExeCod").Value = Me.txt_exercice

req2.Parameters("prmSocCod").Value = Me.cbx_societe

req2.Parameters("prmCptCod").Value = strCptRgp





Set frd2 = req2.OpenRecordset(dbOpenSnapshot)

dblMontant = frd2.Fields("SommeMontant").Value



'Mise à jour montant Compte de Regroupement

Set req2 = CurrentDb.QueryDefs("definir_maj_essai")

req2.Parameters("prmExeCod").Value = Me.txt_exercice

req2.Parameters("prmSocCod").Value = Me.cbx_societe

req2.Parameters("prmCptCod").Value = strCptRgp

req2.Parameters("prmTotal").Value = dblMontant

req2.Execute

req.Parameters("prmCptCod").Value = strCptRgp



Loop



On Error Resume Next

frd2.Close

frd.Close



req2.Close

Set req2 = Nothing

req.Close

Set req = Nothing



On Error GoTo 0



End Sub
0
emubusta Messages postés 27 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 21 mai 2008
29 avril 2005 à 12:30
je narrive pa a modifier la valeur de strcprgp qui me permet de passer a l'enregistrement
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
29 avril 2005 à 14:01
Si tu n'as pas de frd.MoveNext, je ne voit pas bien comment tu veux passer à l'enregistrement suivant !!!!!!!

Christophe R
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
emubusta Messages postés 27 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 21 mai 2008
29 avril 2005 à 15:30
la je ne men ser pa pcq je nai a chaque fois qu'un seul enregistrement j'aimerai juste que ma requete req prenne en paramètre strcptrgp
0
jhary69 Messages postés 81 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 22 juillet 2007
29 avril 2005 à 17:15
Qd tu crees ton recordset frd issu de ta requete Req, il devient TOTALEMENT independant de ta requete, par consequant si tu rechanges un parametre de ta requete par la suite, il faut refaire ton

Set frd = req.OpenRecordset(dbOpenSnapshot)

apres chaque changement sinon pour lui le recordset ne change pas et reste celui de ton 1er passage de parametre dans ta requete (avant le do while).

A+

Christophe.

PS: pour le do while rs.eof=false, Microsoft preconise plutot un do while not rs.eof (c'est pareil mais pour eux c'est mieux de faire comme ca ... merci bill )

A++
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
29 avril 2005 à 19:39
Si ta boucle est infinie, essaye de placer DoEvents avant Loop

jpleroisse
0
Rejoignez-nous