Problème boucle VBA (access) sur ".movenext&q
Résolu
gwenthecelte
-
gwenthecelte -
gwenthecelte -
Bonjour a tous,
décidément deux postes en deux jours, faudrait pas que cela devienne une habitude. ;-)
j'ai un bout de code de rien du tout qui parcour un recorset de mon formulaire; jusque la ca va : Mon recordset contient bien les valeurs contenu dans mon formulaire.
Cependant,la boucle qui permet de traité les infos, ne passe jamais a la ligne suivante. Je crois que d'autres personnes ont eu le problème mais je n'ai pas trouvé de poste "Resolu".
Voici a quoi il ressemble :
Si vous pouviez m'aidé merci de vous attardé quelques instants.
Merci d'avance pour les réponses proposées.
décidément deux postes en deux jours, faudrait pas que cela devienne une habitude. ;-)
j'ai un bout de code de rien du tout qui parcour un recorset de mon formulaire; jusque la ca va : Mon recordset contient bien les valeurs contenu dans mon formulaire.
Cependant,la boucle qui permet de traité les infos, ne passe jamais a la ligne suivante. Je crois que d'autres personnes ont eu le problème mais je n'ai pas trouvé de poste "Resolu".
Voici a quoi il ressemble :
Dim rstSubFormInvoice As DAO.Recordset Set rstSubFormInvoice = Form_SubFormInvoices.RecordsetClone With rstSubFormInvoice Do while rstSubFormInvoice.EOF If Form_SubFormInvoices.Txt_Ammount.Text <> "" Then W_AmountInvoiceSite = Form_SubFormInvoices.Txt_Ammount Else W_AmountInvoiceSite = "123" End If rstSubFormInvoice.MoveNext Loop End With
Si vous pouviez m'aidé merci de vous attardé quelques instants.
Merci d'avance pour les réponses proposées.
A voir également:
- Problème boucle VBA (access) sur ".movenext&q
- Mon pc s'allume et s'éteint en boucle - Forum Matériel & Système
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Clavier inverser touche a et q ✓ - Forum Windows
- Le A devient Q, le Z devient W ✓ - Forum Matériel & Système
- Incompatibilité de type vba ✓ - Forum Programmation
7 réponses
pardon pour la faute de frappe, c'est ".movenext', mais s'il y a d'autre syntahxe je suis preneur.
Merci encore pour vos futures réponses, je l'espère/
allé courage les gars ...
;-)
Merci encore pour vos futures réponses, je l'espère/
allé courage les gars ...
;-)
Essaie plutôt cela et compare avec ton code:
Dim rstSubFormInvoice As DAO.Recordset
Set rstSubFormInvoice = Form_SubFormInvoices.RecordsetClone
With rstSubFormInvoice
.movefirst
Do Until .EOF
If Form_SubFormInvoices.Txt_Ammount.Text <> "" Then
W_AmountInvoiceSite = Form_SubFormInvoices.Txt_Ammount
Else
W_AmountInvoiceSite = "123"
End If
.MoveNext
Loop
End With
Beaucoup plus propre et lisible comme code! ;-)
Dim rstSubFormInvoice As DAO.Recordset
Set rstSubFormInvoice = Form_SubFormInvoices.RecordsetClone
With rstSubFormInvoice
.movefirst
Do Until .EOF
If Form_SubFormInvoices.Txt_Ammount.Text <> "" Then
W_AmountInvoiceSite = Form_SubFormInvoices.Txt_Ammount
Else
W_AmountInvoiceSite = "123"
End If
.MoveNext
Loop
End With
Beaucoup plus propre et lisible comme code! ;-)
Dim rstSubFormInvoice As DAO.Recordset
Set rstSubFormInvoice = Form_SubFormInvoices.RecordsetClone
With rstSubFormInvoice
.movefirst
Do UNTIL .EOF
If Form_SubFormInvoices.Txt_Ammount.Text <> "" Then
W_AmountInvoiceSite = Form_SubFormInvoices.Txt_Ammount
Else
W_AmountInvoiceSite = "123"
End If
.MoveNext
Loop
End With
Set rstSubFormInvoice = Form_SubFormInvoices.RecordsetClone
With rstSubFormInvoice
.movefirst
Do UNTIL .EOF
If Form_SubFormInvoices.Txt_Ammount.Text <> "" Then
W_AmountInvoiceSite = Form_SubFormInvoices.Txt_Ammount
Else
W_AmountInvoiceSite = "123"
End If
.MoveNext
Loop
End With
merci, le code fonctionne, mais j'ai le meme problème :
ma variable recoit toujours la valeur du premier champ et ne passe jamais aux suivants.
il boucle autant de fois qu'il y a d'enregistrement, mais ne me donne que la premiere valeur du champ "txt_ammount"
merci quand meme, si tu as une autre idée. je suis preneur.
ma variable recoit toujours la valeur du premier champ et ne passe jamais aux suivants.
il boucle autant de fois qu'il y a d'enregistrement, mais ne me donne que la premiere valeur du champ "txt_ammount"
merci quand meme, si tu as une autre idée. je suis preneur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je pensais pouvoir faire une boucle FOR sur mon recortset avec un indice (I), et l'incrémenter de 1 a chaque fois que passe dans la boucle, man je ne connais pas la syntaxe pour spécifier au recorset que je veux la valeur du champ (I).
genre :
recordeset.fields("champ"(I)).text
je sais pas si tu vois ce que je veux dire...
merci
genre :
recordeset.fields("champ"(I)).text
je sais pas si tu vois ce que je veux dire...
merci
Change peut-être ton if
Au lieu de faire référence à un controle de ton formulaire, récupère l'enregistrement de ton recordset
If not (.Txt_Ammount = vbnullstring) Then
W_AmountInvoiceSite = .Txt_Ammount
Else
W_AmountInvoiceSite = "123"
End If
Remplace le txt_ammount par le nom du champs de ton recordset
Le UNTIL c'est pour parcourir le recordset JUSQU'A EndOfFile
Le WHILE que tu avais mis c'est pour parcourir le recordset TANT QUE EOF
Puisque cette condition n'est pas remplie il ne bouclait pas, si tu veux garder le while alors "While Not .EOF"
Le With permet d'associer plusieurs méthodes et/ou propriétés à un même objet, puisque tu fais référence à l'abjet dans le with, tu ne dois plus répéter l'objet avant sa propriété ou sa méthode:
MAUVAIS:With rstSubFormInvoice
Do while rstSubFormInvoice.EOF
BON:With rstSubFormInvoice
Do until .EOF
Au lieu de faire référence à un controle de ton formulaire, récupère l'enregistrement de ton recordset
If not (.Txt_Ammount = vbnullstring) Then
W_AmountInvoiceSite = .Txt_Ammount
Else
W_AmountInvoiceSite = "123"
End If
Remplace le txt_ammount par le nom du champs de ton recordset
Le UNTIL c'est pour parcourir le recordset JUSQU'A EndOfFile
Le WHILE que tu avais mis c'est pour parcourir le recordset TANT QUE EOF
Puisque cette condition n'est pas remplie il ne bouclait pas, si tu veux garder le while alors "While Not .EOF"
Le With permet d'associer plusieurs méthodes et/ou propriétés à un même objet, puisque tu fais référence à l'abjet dans le with, tu ne dois plus répéter l'objet avant sa propriété ou sa méthode:
MAUVAIS:With rstSubFormInvoice
Do while rstSubFormInvoice.EOF
BON:With rstSubFormInvoice
Do until .EOF
oui exactement, je viens de trouvé!!! merci
cette syntaxe fonctionne :
With rstSubFormInvoice
.movefirst
Do UNTIL .EOF
If rstSubFormInvoice.fields(2) <> "" Then
W_AmountInvoiceSite = rstSubFormInvoice.fields(2)
Else
W_AmountInvoiceSite = "123"
End If
.MoveNext
Loop
End With
merci beaucoup tu m'as mis sur la piste
a une prochaine et bonne continuation ;-)
cette syntaxe fonctionne :
With rstSubFormInvoice
.movefirst
Do UNTIL .EOF
If rstSubFormInvoice.fields(2) <> "" Then
W_AmountInvoiceSite = rstSubFormInvoice.fields(2)
Else
W_AmountInvoiceSite = "123"
End If
.MoveNext
Loop
End With
merci beaucoup tu m'as mis sur la piste
a une prochaine et bonne continuation ;-)