Problème condition While.

Résolu
vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018 - 6 janv. 2017 à 16:11
vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018 - 16 janv. 2017 à 10:28
Bonjour à tous,
En ce début d'année, les problèmes font leurs premières apparitions.
C'est tout naturellement que je me tourne une nouvelle fois vers vous.
Mon problème est le suivant :
while ((not Form1.TableSert1B.Locate('ID', ID, [loCaseInsensitive])) or (FinBDD1 <> 20)) do
Begin
Inc(ID, 1);
Inc(FinBDD1, 1);
End;

J'ai une condition While ... or ... je regarde dans une base de données si je trouve id si ce n'est pas le cas, j’incrémente pour tester jusqu'à une limite de 20. Si j'ai effectué mon test 20 fois, je suis censé sortir de ma boucle.
SAUF QUE, je ne sort pas de ma boucle. Je reste bloqué à l'intérieur.
Comment cela se fait ? quelqu'un à t'il une solution ?

5 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 janv. 2017 à 17:03
Salut,


essaye comme ça :
while ((not Form1.TableSert1B.Locate('ID', ID, [loCaseInsensitive])) or (FinBDD1 < 21)) do
          Begin
            Inc(ID, 1);
            Inc(FinBDD1, 1);
          End;


0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
7 janv. 2017 à 09:56
Salut
Ce ne serait pas un AND au lieu d'un OR qu'il faut pour arrêter la condition ?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 janv. 2017 à 11:48
Salut
Ce ne serait pas un AND au lieu d'un OR qu'il faut pour arrêter la condition ?

effectivement ... tu as parfaitement raison !
il n'était pourtant pas tard quand j'ai répondu (#^_^#).
il faut lire:
while ((not Form1.TableSert1B.Locate('ID', ID, [loCaseInsensitive])) and (FinBDD1 < 21)) do
          begin
            Inc(ID, 1);
            Inc(FinBDD1, 1);
          end;

Merci à toi d'avoir remarqué l'erreur ;)
0
vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018 2
16 janv. 2017 à 08:06
Bonjour,

N'étant pas au boulot la semaine dernière, je n'ai pu tester vos solutions pour le moment. Je reviens vers vous dans le courant de la journée pour vous tenir informé.

Cordialement.
0
vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018 2
16 janv. 2017 à 08:25
Petite question au passage, le AND permet de sortir de la boucle uniquement si les deux conditions sont réunies ?
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14 > vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018
16 janv. 2017 à 10:22
NON, il permet de rester dans la boucle si les 2 conditions sont réunies !!
si une seule est fausse, la boucle s'interrompt
While : -> Tant que vrai faire
0
vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018 2 > dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019
16 janv. 2017 à 10:27
merci pour la précision.
0

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

Posez votre question
vico8000 Messages postés 287 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 14 février 2018 2
16 janv. 2017 à 10:28
J'ai tester avec la boucle précédente, pas de soucis à priori, les différents traitements sont en cours.

Cordialement.
0
Rejoignez-nous