Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Execution de requete plusieurs fois

12 réponses
Avatar
maxben
Bonsoir à tous,

Est il possible avec du code de faire exécuter une requête plusieurs fois de
suite tant qu'elle trouve un résultat > à 0
Merci beaucoup
mon code actuel est
Private Sub Commande18_Click()
If [Quantité] > [Vente1] Then

DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"

DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"

2 réponses

1 2
Avatar
Fabien
Fabien a écrit :
maxben a écrit :
Mon code ressemble à cela, ça fonctionne bien, Est ce que ça te paraît
convenable?
encore merci

Private Sub Commande18_Click()
If [Quantité] > [Vente1] Then
DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP
2eme requete (2eme cession)")
While resultat > 0
DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"
resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP
2eme requete (2eme cession)")
Wend
DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)"
DoCmd.Requery
Else
DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)"
DoCmd.Requery
End If

End Sub

"Fabien" a écrit :

maxben a écrit :
Voilà la source SELECT [Forms_Stock_Pour_Cession Requête
(NV)].PremierDeN°Registre, [Forms_Stock_Pour_Cession Requête
(NV)].PremierDeDate, [Forms_Stock_Pour_Cession Requête
(NV)].Forms_Stock_Pour_Cession.N°Auto_VMP, [Forms_Stock_Pour_Cession
Requête (NV)].PremierDeStock AS Stock, [Forms_Stock_Pour_Cession
Requête (NV)].N°Opération, [Forms_Stock_Pour_Cession Requête
(NV)].Date, [Forms_Stock_Pour_Cession Requête (NV)].Quantité,
[Forms_Stock_Pour_Cession Requête (NV)].Saisie_Vente_VMP.N°Auto_VMP,
[Forms_Stock_Pour_Cession Requête (NV)].[Montant Unitaire],
[Selection_ajout_vente VMP 1ere requete (2eme cession)].N°Opération
AS N°vente, [Selection_ajout_vente VMP 1ere requete (2eme
cession)].N°Auto_VMP, [Selection_ajout_vente VMP 1ere requete (2eme
cession)].Date AS DateVente, [Selection_ajout_vente VMP 1ere requete
(2eme cession)].SommeDeQuantité_Vente, [Selection_ajout_vente VMP
1ere requete (2eme cession)].Montant_Unitaire_Vente,
[Quantité]-[SommeDeQuantité_Vente] AS StockPartiel,
IIf([StockPartiel]>[Stock],[Stock],[StockPartiel]) AS VentePartielle
FROM [Forms_Stock_Pour_Cession Requête (NV)], [Selection_ajout_vente
VMP 1ere requete (2eme cession)]
WHERE ((([Quantité]-[SommeDeQuantité_Vente])>0));

"Fabien" a écrit :

maxben a écrit :
Oui c'est exactement ça

"Fabien" a écrit :

maxben a écrit :
Merci, e, fait c'est dans la 2eme requete, elle doit s'executer
tant qu'un champ calculé est > à 0. Je comprends pas trop ce que
tu m'as dit de faire

"Gilbert" a écrit :

Bonjour,

Je ne sais pas ce que tu entends par un résultat > à 0 mais tu
peux faire
quelque chose comme

Dim ResultatPositif as boolean
ResultatPositif =true 'Pour la première exécution
Do While ResultatPositif
DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"

ResultatPositif =??? 'Là c'est à toi de mettre la condition
qui va bien
Loop

--
Cordialement,

Gilbert


"maxben" a écrit dans le
message de
news:
Bonsoir à tous,

Est il possible avec du code de faire exécuter une requête
plusieurs fois


de
suite tant qu'elle trouve un résultat > à 0
Merci beaucoup
mon code actuel est
Private Sub Commande18_Click()
If [Quantité] > [Vente1] Then

DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"

DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"









Salut,
si je comprend bien tu veux que la requete "Ajout ventevmp 2eme
cession" s'execute tant que le resultat d'un champ calculé
(lequel?) contenu dans cette requete est >0 ?
@+





Ok:
Mais alors cette requete traite plus d'un enregistrement ?
Le resultat que tu cherche à analyser est lié a l'enregistrement ?
Que faire si pour l'un des enregistrements le resultat est <=0 ?
Que fait exactement cette requete d'ajout et quel est ce calcul ?
Peux tu nous donner le source SQL de la requete ?
@+





Ok donc l'idée c'est de faire tourner cette requete jusqu'a ce
qu'elle ne retourne plus d'info?
Il faudrait donc deux versions de cette requete : une de Selection et
d'ajout.
Tu pourrais faire quelque chose comme

resultatÜount("[PremierDeN°Registre]","Selection VenteVmp 2eme
cession")
While not resultat=0
Docmd.openquery "Ajout VenteVmp 2eme cession"
resultatÜount("[PremierDeN°Registre]","Selection VenteVmp 2eme
cession")
Whend






Re
Juste parceque ...
Utilise l'"option explicit" dans tes modules comme ça pas de risque
d'avoir des variables non déclarées qui se balladent
Option explicit

du coup il faut déclarer les variable que tu utilises ;-)
Private Sub Commande18_Click()
Dim Resultat as integer

met
DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
avant le If, comme çà tu n'en a plus besoin dans le cas else ni dans la
suite du If

le
DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)
DoCmd.Requery
met le une seule fois après le End if puisque dans tous les cas tu dois
y passer ;-)

Ton code devient
Private Sub Commande18_Click()
Dim Resultat as Integer
DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
> If [Quantité] > [Vente1] Then
> resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP 2eme
> requete (2eme cession)")
> While resultat > 0
> DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"
> resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP 2eme
> requete (2eme cession)")
> Wend
>
End if

DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)"
DoCmd.Requery
End Sub

Derniére chose : prend l'habitude de nommer correctement tes objets dans


------------------------------------------^^----^^
les formulaires, n'utilises pas le nom par défaut. Commande18 aujourd'hui
tu sais ce qu'elle fait mais dans un mois ....
Si cette commande ajoute des ventes alors nomme la Ajout_de_vente et du
coup ta procédure devient : Private sub Ajout_de_vente_Click()
voilà
@+


Avatar
maxben
Ok je vais modifier mon bouton
encore mille merci

"Fabien" a écrit :

Fabien a écrit :
> maxben a écrit :
>> Mon code ressemble à cela, ça fonctionne bien, Est ce que ça te paraît
>> convenable?
>> encore merci
>>
>> Private Sub Commande18_Click()
>> If [Quantité] > [Vente1] Then
>> DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
>> resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP
>> 2eme requete (2eme cession)")
>> While resultat > 0
>> DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"
>> resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP
>> 2eme requete (2eme cession)")
>> Wend
>> DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)"
>> DoCmd.Requery
>> Else
>> DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
>> DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)"
>> DoCmd.Requery
>> End If
>>
>> End Sub
>>
>> "Fabien" a écrit :
>>
>>> maxben a écrit :
>>>> Voilà la source SELECT [Forms_Stock_Pour_Cession Requête
>>>> (NV)].PremierDeN°Registre, [Forms_Stock_Pour_Cession Requête
>>>> (NV)].PremierDeDate, [Forms_Stock_Pour_Cession Requête
>>>> (NV)].Forms_Stock_Pour_Cession.N°Auto_VMP, [Forms_Stock_Pour_Cession
>>>> Requête (NV)].PremierDeStock AS Stock, [Forms_Stock_Pour_Cession
>>>> Requête (NV)].N°Opération, [Forms_Stock_Pour_Cession Requête
>>>> (NV)].Date, [Forms_Stock_Pour_Cession Requête (NV)].Quantité,
>>>> [Forms_Stock_Pour_Cession Requête (NV)].Saisie_Vente_VMP.N°Auto_VMP,
>>>> [Forms_Stock_Pour_Cession Requête (NV)].[Montant Unitaire],
>>>> [Selection_ajout_vente VMP 1ere requete (2eme cession)].N°Opération
>>>> AS N°vente, [Selection_ajout_vente VMP 1ere requete (2eme
>>>> cession)].N°Auto_VMP, [Selection_ajout_vente VMP 1ere requete (2eme
>>>> cession)].Date AS DateVente, [Selection_ajout_vente VMP 1ere requete
>>>> (2eme cession)].SommeDeQuantité_Vente, [Selection_ajout_vente VMP
>>>> 1ere requete (2eme cession)].Montant_Unitaire_Vente,
>>>> [Quantité]-[SommeDeQuantité_Vente] AS StockPartiel,
>>>> IIf([StockPartiel]>[Stock],[Stock],[StockPartiel]) AS VentePartielle
>>>> FROM [Forms_Stock_Pour_Cession Requête (NV)], [Selection_ajout_vente
>>>> VMP 1ere requete (2eme cession)]
>>>> WHERE ((([Quantité]-[SommeDeQuantité_Vente])>0));
>>>>
>>>> "Fabien" a écrit :
>>>>
>>>>> maxben a écrit :
>>>>>> Oui c'est exactement ça
>>>>>>
>>>>>> "Fabien" a écrit :
>>>>>>
>>>>>>> maxben a écrit :
>>>>>>>> Merci, e, fait c'est dans la 2eme requete, elle doit s'executer
>>>>>>>> tant qu'un champ calculé est > à 0. Je comprends pas trop ce que
>>>>>>>> tu m'as dit de faire
>>>>>>>>
>>>>>>>> "Gilbert" a écrit :
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>>
>>>>>>>>> Je ne sais pas ce que tu entends par un résultat > à 0 mais tu
>>>>>>>>> peux faire
>>>>>>>>> quelque chose comme
>>>>>>>>>
>>>>>>>>> Dim ResultatPositif as boolean
>>>>>>>>> ResultatPositif =true 'Pour la première exécution
>>>>>>>>> Do While ResultatPositif
>>>>>>>>> DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
>>>>>>>>> DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"
>>>>>>>>>
>>>>>>>>> ResultatPositif =??? 'Là c'est à toi de mettre la condition
>>>>>>>>> qui va bien
>>>>>>>>> Loop
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Cordialement,
>>>>>>>>>
>>>>>>>>> Gilbert
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> "maxben" a écrit dans le
>>>>>>>>> message de
>>>>>>>>> news:
>>>>>>>>>> Bonsoir à tous,
>>>>>>>>>>
>>>>>>>>>> Est il possible avec du code de faire exécuter une requête
>>>>>>>>>> plusieurs fois
>>>>>>>>> de
>>>>>>>>>> suite tant qu'elle trouve un résultat > à 0
>>>>>>>>>> Merci beaucoup
>>>>>>>>>> mon code actuel est
>>>>>>>>>> Private Sub Commande18_Click()
>>>>>>>>>> If [Quantité] > [Vente1] Then
>>>>>>>>>>
>>>>>>>>>> DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
>>>>>>>>>>
>>>>>>>>>> DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>> Salut,
>>>>>>> si je comprend bien tu veux que la requete "Ajout ventevmp 2eme
>>>>>>> cession" s'execute tant que le resultat d'un champ calculé
>>>>>>> (lequel?) contenu dans cette requete est >0 ?
>>>>>>> @+
>>>>>>>
>>>>> Ok:
>>>>> Mais alors cette requete traite plus d'un enregistrement ?
>>>>> Le resultat que tu cherche à analyser est lié a l'enregistrement ?
>>>>> Que faire si pour l'un des enregistrements le resultat est <=0 ?
>>>>> Que fait exactement cette requete d'ajout et quel est ce calcul ?
>>>>> Peux tu nous donner le source SQL de la requete ?
>>>>> @+
>>>>>
>>> Ok donc l'idée c'est de faire tourner cette requete jusqu'a ce
>>> qu'elle ne retourne plus d'info?
>>> Il faudrait donc deux versions de cette requete : une de Selection et
>>> d'ajout.
>>> Tu pourrais faire quelque chose comme
>>>
>>> resultatÜount("[PremierDeN°Registre]","Selection VenteVmp 2eme
>>> cession")
>>> While not resultat=0
>>> Docmd.openquery "Ajout VenteVmp 2eme cession"
>>> resultatÜount("[PremierDeN°Registre]","Selection VenteVmp 2eme
>>> cession")
>>> Whend
>>>
>
> Re
> Juste parceque ...
> Utilise l'"option explicit" dans tes modules comme ça pas de risque
> d'avoir des variables non déclarées qui se balladent
> Option explicit
>
> du coup il faut déclarer les variable que tu utilises ;-)
> Private Sub Commande18_Click()
> Dim Resultat as integer
>
> met
> DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
> avant le If, comme çà tu n'en a plus besoin dans le cas else ni dans la
> suite du If
>
> le
> DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)
> DoCmd.Requery
> met le une seule fois après le End if puisque dans tous les cas tu dois
> y passer ;-)
>
> Ton code devient
> Private Sub Commande18_Click()
> Dim Resultat as Integer
> DoCmd.OpenQuery "Ajout_VenteVMP_1ere Requete (NV)"
> > If [Quantité] > [Vente1] Then
> > resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP 2eme
> > requete (2eme cession)")
> > While resultat > 0
> > DoCmd.OpenQuery "Ajout_VenteVMP 2eme Cession"
> > resultat = DCount("[StockPartiel]", "Selection_ajout_vente VMP 2eme
> > requete (2eme cession)")
> > Wend
> >
> End if
>
> DoCmd.OpenQuery "Suppression Saisie_VenteVMP(NV)"
> DoCmd.Requery
> End Sub
>
> Derniére chose : prend l'habitude de nommer correctement tes objets dans
------------------------------------------^^----^^
> les formulaires, n'utilises pas le nom par défaut. Commande18 aujourd'hui
> tu sais ce qu'elle fait mais dans un mois ....
> Si cette commande ajoute des ventes alors nomme la Ajout_de_vente et du
> coup ta procédure devient : Private sub Ajout_de_vente_Click()
> voilà
> @+



1 2