OVH Cloud OVH Cloud

les boucles

4 réponses
Avatar
natou
Bonsoir,
Une nouveaut=E9 pour moi faire une boucle dans un ev=E8nement=20
HELP svp comment faire, voici mon code
If transfert =3D True Then
If MsgBox("voulez_vous continuer le rapatriement",=20
vbYesNo) =3D vbYes Then
DoCmd.OpenQuery "rqraptriementOFpourcplt"
DoCmd.OpenQuery "rqsupptbarchivage2003"
MsgBox "Rapatriement de l'of termin=E9 vous pouvez faire=20
votre compl=E9ment d'of"
Else
MsgBox ("Op=E9ration annul=E9e")
End If
End If
je souhaite faire la boucle suivante "tant que "transfert"=20
n'est pas vide alors il continue son action mais ou pla=E7er=20
le "Do while" ou qq chose dans le genre.
Merci
natou

4 réponses

Avatar
Raymond
Bonsoir.

il manque des éléments.
pour faire une boucle il faudrait qu'un élément change à chaque exécution
des requêtes. Lequel ? la requête "rqraptriementOFpourcplt", sans
paramètres, ne s'exécutera qu'une seule fois. Transfert , booléen, sera
changé par quel événement ?

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"natou" a écrit dans le message de
news:0fea01c3a2ec$6e3a1e30$
Bonsoir,
Une nouveauté pour moi faire une boucle dans un evènement
HELP svp comment faire, voici mon code
If transfert = True Then
If MsgBox("voulez_vous continuer le rapatriement",
vbYesNo) = vbYes Then
DoCmd.OpenQuery "rqraptriementOFpourcplt"
DoCmd.OpenQuery "rqsupptbarchivage2003"
MsgBox "Rapatriement de l'of terminé vous pouvez faire
votre complément d'of"
Else
MsgBox ("Opération annulée")
End If
End If
je souhaite faire la boucle suivante "tant que "transfert"
n'est pas vide alors il continue son action mais ou plaçer
le "Do while" ou qq chose dans le genre.
Merci
natou
Avatar
natou
Bonjour,
en fait dois-je vraiment effectuer une boucle ? je me
demande j'ai donc vraiment besoin d'un conseil voici les
explications de ce que je désire obtenir :
"of" veut dire ordre de fabrication (c'est une série de
chiffre).
Toutes les 4èmes semaines de chaque mois via un calendrier
(CtlActiveXCalendrier) et une date que j'oblige à rentrer
à chaque échéance, j'effectue un archivage de ma table des
OF via une requête d'ajout dans une autre base access que
je nomme archives,avec les conditions suivantes " tous les
of de la table "OF"dont la qté cumulée est >=
[QTEDEMANDEE], dont la date Mois([DATECHEANCE]) dont la
condition est <Mois(Date())", ensuite une requête de
suppression dans ma table des of,va se lancer, la
condition est tous les of dont la qté cumulée est >=
[QTEDEMANDEE], dont la date Mois([DATECHEANCE]) dont la
condition est <Mois(Date()),
Ces actions ont pour but de vider les of soldés de ma
table "OF" , mais de les conserver au cas ou. Parfois il
arrive qu'un client demande un complément, donc j'effectue
un rapatriement de ma table des archives, donc j'ai lié
les tables archivées (mon archive créée des tables
annuelles du genre "OF2003"), à ma base de travail, et mis
en menu la possibilité d'ouvrir en formulaire "frmof2003"
en mode feuille de données, avec à côté de numOF un
champs "transfert" qui est un OUI/NON, ensuite sur
ouverture du formulaire j'avais événement suivant qui se
déclenchait :

Private Sub Form_Load()
If transfert = False Then
MsgBox "Veuillez sélectionner le ou les 'OF'(s) à
transférer dans la table 'OF'"
End If
End Sub

Et sur fermeture l'evénement suivant :

Private Sub Form_Close()
If transfert = True Then
If MsgBox("voulez_vous continuer le rapatriement",
vbYesNo) = vbYes Then
DoCmd.OpenQuery "rqraptriementOFpourcplt"
DoCmd.OpenQuery "rqsupptbarchivage2003"
MsgBox "Rapatriement de l'of terminé vous pouvez faire
votre complément d'of"
Else
sgBox ("Opération annulée")
End If
End If
End Sub

le pb est que si je sélect une ligne ça fonctionne, si
j'en sélect plusieurs ça ne fonctionne pas, il va me
prendre que le premier, c'est pourquoi j'ai pensé à une
boucle
Par avance merci de ton aide.

-----Message d'origine-----
Bonsoir.

il manque des éléments.
pour faire une boucle il faudrait qu'un élément change à
chaque exécution

des requêtes. Lequel ? la
requête "rqraptriementOFpourcplt", sans

paramètres, ne s'exécutera qu'une seule fois. Transfert ,
booléen, sera

changé par quel événement ?

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"natou" a écrit
dans le message de

news:0fea01c3a2ec$6e3a1e30$
Bonsoir,
Une nouveauté pour moi faire une boucle dans un evènement
HELP svp comment faire, voici mon code
If transfert = True Then
If MsgBox("voulez_vous continuer le rapatriement",
vbYesNo) = vbYes Then
DoCmd.OpenQuery "rqraptriementOFpourcplt"
DoCmd.OpenQuery "rqsupptbarchivage2003"
MsgBox "Rapatriement de l'of terminé vous pouvez faire
votre complément d'of"
Else
MsgBox ("Opération annulée")
End If
End If
je souhaite faire la boucle suivante "tant que "transfert"
n'est pas vide alors il continue son action mais ou plaçer
le "Do while" ou qq chose dans le genre.
Merci
natou

.



Avatar
Raymond
Bonjour.

Il ne faut pas une boucle, il faut simplement tester si le champ transfert
est à Oui dans les critères. tu fais une requête ajout qui ramènera tous
les OF à oui dans les OFencours et ensuite une requête suppression qui
supprimera ces mêmes OF dans les OFArchives

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"natou" a écrit dans le message de
news:075d01c3a372$8cbe5930$
Bonjour,
en fait dois-je vraiment effectuer une boucle ? je me
demande j'ai donc vraiment besoin d'un conseil voici les
explications de ce que je désire obtenir :
"of" veut dire ordre de fabrication (c'est une série de
chiffre).
Toutes les 4èmes semaines de chaque mois via un calendrier
(CtlActiveXCalendrier) et une date que j'oblige à rentrer
à chaque échéance, j'effectue un archivage de ma table des
OF via une requête d'ajout dans une autre base access que
je nomme archives,avec les conditions suivantes " tous les
of de la table "OF"dont la qté cumulée est > [QTEDEMANDEE], dont la date Mois([DATECHEANCE]) dont la
condition est <Mois(Date())", ensuite une requête de
suppression dans ma table des of,va se lancer, la
condition est tous les of dont la qté cumulée est > [QTEDEMANDEE], dont la date Mois([DATECHEANCE]) dont la
condition est <Mois(Date()),
Ces actions ont pour but de vider les of soldés de ma
table "OF" , mais de les conserver au cas ou. Parfois il
arrive qu'un client demande un complément, donc j'effectue
un rapatriement de ma table des archives, donc j'ai lié
les tables archivées (mon archive créée des tables
annuelles du genre "OF2003"), à ma base de travail, et mis
en menu la possibilité d'ouvrir en formulaire "frmof2003"
en mode feuille de données, avec à côté de numOF un
champs "transfert" qui est un OUI/NON, ensuite sur
ouverture du formulaire j'avais événement suivant qui se
déclenchait :

Private Sub Form_Load()
If transfert = False Then
MsgBox "Veuillez sélectionner le ou les 'OF'(s) à
transférer dans la table 'OF'"
End If
End Sub

Et sur fermeture l'evénement suivant :

Private Sub Form_Close()
If transfert = True Then
If MsgBox("voulez_vous continuer le rapatriement",
vbYesNo) = vbYes Then
DoCmd.OpenQuery "rqraptriementOFpourcplt"
DoCmd.OpenQuery "rqsupptbarchivage2003"
MsgBox "Rapatriement de l'of terminé vous pouvez faire
votre complément d'of"
Else
sgBox ("Opération annulée")
End If
End If
End Sub

le pb est que si je sélect une ligne ça fonctionne, si
j'en sélect plusieurs ça ne fonctionne pas, il va me
prendre que le premier, c'est pourquoi j'ai pensé à une
boucle
Par avance merci de ton aide.
Avatar
natou
Merci, je suis encore novice, en fait j'ai rajouté ma zone
OUI/NON après coups, au départ je cliquais sur le
champs "OF" pour éxécuter ma req, puis je me suis dis que
si je voulais en sélectionner 3 ou 4 d'un coups il vallait
mieux passer par un champs OUI/NON,et éxécuter l'événement
à la fermeture du frm, mais j'avais oublié de faire le
changement dans la requête, maintenant c'est mieux, ça
fonctionne.
Mais je tiens à dire que grâce à ce forum mes
connaissances VBA qui étaient "double zéro" sont devenues
pour ma gouverne personnelle plutôt acceptables, ma base
avance bien je l'ai soumis à la hiérarchie qui n'y
connaissent rien mais doivent donner leur opinion, et
leur "véto" ont trouvé ça super. Alors merci à tous et à
tout de suite car j'ai pas encore terminé.........de vous
casser les pieds avec mes questions.
Natou
-----Message d'origine-----
Bonjour.

Il ne faut pas une boucle, il faut simplement tester si
le champ transfert

est à Oui dans les critères. tu fais une requête ajout
qui ramènera tous

les OF à oui dans les OFencours et ensuite une requête
suppression qui

supprimera ces mêmes OF dans les OFArchives

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"natou" a écrit
dans le message de

news:075d01c3a372$8cbe5930$
Bonjour,
en fait dois-je vraiment effectuer une boucle ? je me
demande j'ai donc vraiment besoin d'un conseil voici les
explications de ce que je désire obtenir :
"of" veut dire ordre de fabrication (c'est une série de
chiffre).
Toutes les 4èmes semaines de chaque mois via un calendrier
(CtlActiveXCalendrier) et une date que j'oblige à rentrer
à chaque échéance, j'effectue un archivage de ma table des
OF via une requête d'ajout dans une autre base access que
je nomme archives,avec les conditions suivantes " tous les
of de la table "OF"dont la qté cumulée est >=
[QTEDEMANDEE], dont la date Mois([DATECHEANCE]) dont la
condition est <Mois(Date())", ensuite une requête de
suppression dans ma table des of,va se lancer, la
condition est tous les of dont la qté cumulée est >=
[QTEDEMANDEE], dont la date Mois([DATECHEANCE]) dont la
condition est <Mois(Date()),
Ces actions ont pour but de vider les of soldés de ma
table "OF" , mais de les conserver au cas ou. Parfois il
arrive qu'un client demande un complément, donc j'effectue
un rapatriement de ma table des archives, donc j'ai lié
les tables archivées (mon archive créée des tables
annuelles du genre "OF2003"), à ma base de travail, et mis
en menu la possibilité d'ouvrir en formulaire "frmof2003"
en mode feuille de données, avec à côté de numOF un
champs "transfert" qui est un OUI/NON, ensuite sur
ouverture du formulaire j'avais événement suivant qui se
déclenchait :

Private Sub Form_Load()
If transfert = False Then
MsgBox "Veuillez sélectionner le ou les 'OF'(s) à
transférer dans la table 'OF'"
End If
End Sub

Et sur fermeture l'evénement suivant :

Private Sub Form_Close()
If transfert = True Then
If MsgBox("voulez_vous continuer le rapatriement",
vbYesNo) = vbYes Then
DoCmd.OpenQuery "rqraptriementOFpourcplt"
DoCmd.OpenQuery "rqsupptbarchivage2003"
MsgBox "Rapatriement de l'of terminé vous pouvez faire
votre complément d'of"
Else
sgBox ("Opération annulée")
End If
End If
End Sub

le pb est que si je sélect une ligne ça fonctionne, si
j'en sélect plusieurs ça ne fonctionne pas, il va me
prendre que le premier, c'est pourquoi j'ai pensé à une
boucle
Par avance merci de ton aide.

.