Problème condition While. [Résolu]

vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention - 6 janv. 2017 à 16:11 - Dernière réponse : vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention
- 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 ?
Afficher la suite 

8 réponses

Répondre au sujet
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 3 avril 2018 Dernière intervention - 6 janv. 2017 à 17:03
0
Utile
Salut,


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


Commenter la réponse de Cirec
dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention - 7 janv. 2017 à 09:56
0
Utile
Salut
Ce ne serait pas un AND au lieu d'un OR qu'il faut pour arrêter la condition ?
Commenter la réponse de dubois77
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 3 avril 2018 Dernière intervention - 7 janv. 2017 à 11:48
0
Utile
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 ;)
Commenter la réponse de Cirec
vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention - 16 janv. 2017 à 08:06
0
Utile
3
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.
vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention - 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 ?
dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention > vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention - 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
vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention > dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention - 16 janv. 2017 à 10:27
merci pour la précision.
Commenter la réponse de vico8000
vico8000 291 Messages postés lundi 18 janvier 2016Date d'inscription 14 février 2018 Dernière intervention - 16 janv. 2017 à 10:28
0
Utile
J'ai tester avec la boucle précédente, pas de soucis à priori, les différents traitements sont en cours.

Cordialement.
Commenter la réponse de vico8000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.