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

do while + condition variable

11 réponses
Avatar
xxxjfpweb
Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui devrait
mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF

10 réponses

1 2
Avatar
JF
Pour ceux que la question intéresse, j'ai fini par trouver la solution.
L'instruction do while doit s'écrire :

Do while Val(condition)

voili voilou...
JF

Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui devrait
mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF


Avatar
Michel_D
Bonjour,

Ben ce qui serait intéressant c'est le coté "variable" de ta condition,
qui n'apparaît pas avec l'exemple fourni.


Pour ceux que la question intéresse, j'ai fini par trouver la solution.
L'instruction do while doit s'écrire :

Do while Val(condition)

voili voilou...
JF

Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui devrait
mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF




Avatar
JF
Si si, il apparaît :)

A partir du moment où j'écris :
Dim condition as String
Je déclare bien "condition" comme une variable.
Quand ensuite j'écris :
condition = "Not .EOF"
J'affecte bien une valeur à cette variable.
Et selon les besoins, je peux faire varier ma condition
condition = "rst.Champ1 < 40"
ou encore
conditon = "rst.Champ2 <> 'toto' And IsNull(rst.Champ3)"

Mon test lui restera toujours le même
Do while Val(condition)
...
...
Loop

JF

Bonjour,

Ben ce qui serait intéressant c'est le coté "variable" de ta condition,
qui n'apparaît pas avec l'exemple fourni.


Pour ceux que la question intéresse, j'ai fini par trouver la
solution. L'instruction do while doit s'écrire :

Do while Val(condition)

voili voilou...
JF

Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui devrait
mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF






Avatar
Michel_D
re,

Moi je dis que tu as des progrés à faire concernant les requêtes
et que le code qui paraît te simplifier les choses t'éloigne
plus du concept originel des bases de données.

PS:Au lieu de passer la condition à ton programme, pourquoi ne
pas passer le SQL de la requête ?


Si si, il apparaît :)

A partir du moment où j'écris :
Dim condition as String
Je déclare bien "condition" comme une variable.
Quand ensuite j'écris :
condition = "Not .EOF"
J'affecte bien une valeur à cette variable.
Et selon les besoins, je peux faire varier ma condition
condition = "rst.Champ1 < 40"
ou encore
conditon = "rst.Champ2 <> 'toto' And IsNull(rst.Champ3)"

Mon test lui restera toujours le même
Do while Val(condition)
...
...
Loop

JF

Bonjour,

Ben ce qui serait intéressant c'est le coté "variable" de ta condition,
qui n'apparaît pas avec l'exemple fourni.


Pour ceux que la question intéresse, j'ai fini par trouver la
solution. L'instruction do while doit s'écrire :

Do while Val(condition)

voili voilou...
JF

Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui devrait
mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF








Avatar
3stone
Salut JF,

"JF"
| A partir du moment où j'écris :
| Dim condition as String
| Je déclare bien "condition" comme une variable.
| Quand ensuite j'écris :
| condition = "Not .EOF"
| J'affecte bien une valeur à cette variable.
| Et selon les besoins, je peux faire varier ma condition
| condition = "rst.Champ1 < 40"
| ou encore
| conditon = "rst.Champ2 <> 'toto' And IsNull(rst.Champ3)"
|
| Mon test lui restera toujours le même
| Do while Val(condition)
| ...
| ...
| Loop


Première chose à faire lorsque l'on n'est pas sûr d'une fonction, ou que l'on hésite
sur ses paramètres ou sur ce qu'elle renvoie, est de vérifier dans l'aide...

Dim strMachin As String

strMachin = "bla bla bla 123"
Debug.Print Val(strMachin)

=> affichera invariablement "0"

strMachin = "123 bla bla"
Debug.Print Val(strMachin)

=> affichera invariablement "123"

Y inclure des "=" ou autres expressions ne changera rien à l'histoire...

Suis plutôt le conseil de Michel_D ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
JF
Bonsoir,

@Michel_D :
Que j'aie des progrès à faire, je le constate à chaque instant où
j'essaie d'écrire un peu de code pour mes applications access !
Et je reconnais que ce que j'essaie de faire aujourd'hui avec access est
en effet assez éloigné du concept des bases de données, d'où cette
curiosité qui consiste à "variabiliser" une condition plutôt que de
travailler les requêtes... Ce n'est certes pas très orthodoxe, mais ne
m'excommuniez pas !! je supporte mal le bûcher...

@3stone
Je ne pose généralement une question ici qu'après avoir cherché dans
l'aide ou googelisé un minimum pour m'en tirer tout seul... pas toujours
avec bonheur. Et c'est souvent vous qui m'avez lancé la bouée salvatrice
et permis d'avancer. je vous en remercie d'ailleurs chaudement.
Mais je suis un autodidacte total, qui avance à tâtons, et je n'ai pas
toujours des réflexes simples et qui vous semblent évidents.
Merci de votre indulgence.

JF



Si si, il apparaît :)

A partir du moment où j'écris :
Dim condition as String
Je déclare bien "condition" comme une variable.
Quand ensuite j'écris :
condition = "Not .EOF"
J'affecte bien une valeur à cette variable.
Et selon les besoins, je peux faire varier ma condition
condition = "rst.Champ1 < 40"
ou encore
conditon = "rst.Champ2 <> 'toto' And IsNull(rst.Champ3)"

Mon test lui restera toujours le même
Do while Val(condition)
...
...
Loop

JF

Bonjour,

Ben ce qui serait intéressant c'est le coté "variable" de ta condition,
qui n'apparaît pas avec l'exemple fourni.


Pour ceux que la question intéresse, j'ai fini par trouver la
solution. L'instruction do while doit s'écrire :

Do while Val(condition)

voili voilou...
JF

Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui devrait
mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF








Avatar
Michel_D
Bonsoir,

@Michel_D :
Que j'aie des progrès à faire, je le constate à chaque instant où
j'essaie d'écrire un peu de code pour mes applications access !
Et je reconnais que ce que j'essaie de faire aujourd'hui avec access est
en effet assez éloigné du concept des bases de données, d'où cette
curiosité qui consiste à "variabiliser" une condition plutôt que de
travailler les requêtes... Ce n'est certes pas très orthodoxe, mais ne
m'excommuniez pas !! je supporte mal le bûcher...



Ce serait tout de même mieux et guère plus compliqué de placer la
condition au niveau de la requête.

Avatar
3stone
Salut,

"JF"
[...]
| @3stone
| Je ne pose généralement une question ici qu'après avoir cherché dans
| l'aide ou googelisé un minimum pour m'en tirer tout seul...


Dans ce cas, tu dois confondre Val() et Eval()


PS: Personne ne veux t'en veux 'Jeanne" ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
JF
Bonsoir,

Après de puissantes réflexions (si !), il apparait que :
1. je dois effectivement confondre Val() et Eval(). Le rouge de la honte
me monte au front et je ne manquerai pas de me flageller un peu avant
d'aller dormir.
2. Je préfèrerais en effet passer par un jeu de requêtes bien senties
que par une "variabilisation" de condition, qui sonne comme une torture.
Mais dans le cas qui m'occupe, ça ne me parait pas beaucoup plus
simple... mais je vais quand même creuser, promis ; la solution requête
serait plus élégante.

Merci de vos conseils éclairés.
JF

PS : pourquoi "jeanne" ???

Bonsoir,

@Michel_D :
Que j'aie des progrès à faire, je le constate à chaque instant où
j'essaie d'écrire un peu de code pour mes applications access !
Et je reconnais que ce que j'essaie de faire aujourd'hui avec access est
en effet assez éloigné du concept des bases de données, d'où cette
curiosité qui consiste à "variabiliser" une condition plutôt que de
travailler les requêtes... Ce n'est certes pas très orthodoxe, mais ne
m'excommuniez pas !! je supporte mal le bûcher...

@3stone
Je ne pose généralement une question ici qu'après avoir cherché dans
l'aide ou googelisé un minimum pour m'en tirer tout seul... pas toujours
avec bonheur. Et c'est souvent vous qui m'avez lancé la bouée salvatrice
et permis d'avancer. je vous en remercie d'ailleurs chaudement.
Mais je suis un autodidacte total, qui avance à tâtons, et je n'ai pas
toujours des réflexes simples et qui vous semblent évidents.
Merci de votre indulgence.

JF



Si si, il apparaît :)

A partir du moment où j'écris :
Dim condition as String
Je déclare bien "condition" comme une variable.
Quand ensuite j'écris :
condition = "Not .EOF"
J'affecte bien une valeur à cette variable.
Et selon les besoins, je peux faire varier ma condition
condition = "rst.Champ1 < 40"
ou encore
conditon = "rst.Champ2 <> 'toto' And IsNull(rst.Champ3)"

Mon test lui restera toujours le même
Do while Val(condition)
...
...
Loop

JF

Bonjour,

Ben ce qui serait intéressant c'est le coté "variable" de ta condition,
qui n'apparaît pas avec l'exemple fourni.


Pour ceux que la question intéresse, j'ai fini par trouver la
solution. L'instruction do while doit s'écrire :

Do while Val(condition)

voili voilou...
JF

Bonjour,

Je voudrais réaliser une boucle do while, avec une condition variable.
J'ai essayé le code suivant, qui ne fonctionne pas, mais qui
devrait mieux faire comprendre ce que je veux :

Dim condition as String
...
Set rst = requête quelconque
...
with rst
condition = "Not .EOF"
Do While condition
instruction 1
instruction 2
...
Loop
End With
...

J'obtiens le message : "incompatibilité de type"
Je crois comprendre que l'instruction Dim est en cause, plus que la
syntaxe de mon Do While.
Mais comment faire ?

Merci de votre aide,
JF










Avatar
3stone
"JF"

|
| PS : pourquoi "jeanne" ???


[je cite] "je supporte mal le bûcher..."


:o))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
1 2