#1 Thu 12 June 2014 16:43
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
CONDITION if
Boujour,
Je souhaite écrire une condition if sous Mapbasic mais apparemment il détecte pas les condition avec "and".
if St = "accordé" or st= "accordée" or st="accordee" or st="accorde" or st="autorisé" or st="autorisée" or st="autorisee" or st="autorise" and Nom1<>Nom2 and Nom1<>"" and P <> 0.
Pouvez-vous me dire comment bien l'écrire svp?
Merci par avance
A bientôt
Hors ligne
#2 Thu 12 June 2014 17:49
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: CONDITION if
Bonjour
S'agit-il d'une seule Table? Si oui, faites le test en utilisant la fenêtre de requête! Si le tout fonctionne, ouvrez votre fenêtre Mapbasic, ré exécutez votre requête et regardez comment MB l'écrit. Ça devrait vous donner une bonne idée de la syntaxe!
S'il s'agit d'un lien à une base de données, là je suis un peu perdu!
En passant, mes cours de programmations sont très loin mais si on a un IF, il ne devrait pas y avoir un THEN pas loin???
Autre interrogation de ma part, si vous chercher dans votre Table, dans la colonne ST, tous les mots possibles, pourquoi ne pas mettre votre colonne à jour et ne mettre qu'un seul mot... Mais il existe peut être d'autre choix dans votre colonne!!! Je pense à haute voix!!!
Daniel
De retour à la géomatique
Hors ligne
#3 Thu 12 June 2014 18:24
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: CONDITION if
Bonjour,
il s'agit d'une table
Alors oui il y a un then plus loin mais là c'est pas le problème.
"ST", Nom1, Nom2 p sont des variables qui parcourent une colonne pour prendre la valeur ligne par ligne.
Si ST = accordé ou ST = accordee and que nom1<>nom2 donc ( then) tu réalise un calculs
Là j'ai un problème car il tient pas compte des autres valeurs donc je pense il y a un problème dans mon if
Un exemple :
le programme détecte bien la valeur du nom 1 et du nom 2 qui sont de la même valeur mais il passe quand même au then alors qu'il ne devrait pas car d’après le if : Si nom1<>nom2 alors tu passes au then
a+
Dernière modification par didou72 (Thu 12 June 2014 18:46)
Hors ligne
#4 Thu 12 June 2014 18:34
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: CONDITION if
Salut
Comme je disais, mes cours de programmation sont loin...
Il ne pourrait pas être plus facile d'y aller en deux temps?
1- Sélectionner les valeurs recherchées
2- Faire le calcul
Sinon, un Spacejo de ce monde trouvera certainement une solution!!!
Daniel
De retour à la géomatique
Hors ligne
#5 Thu 12 June 2014 18:37
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: CONDITION if
Salut
J'avais vu un lien que Spacejo avait mis sur une autre discussion. C'est le manuel de Mapbasic. Peut-être que ça pourrait aider?
http://reference.mapinfo.com/software/m … eGuide.pdf
Daniel
Dernière modification par Daniel (Thu 12 June 2014 18:38)
De retour à la géomatique
Hors ligne
#6 Thu 12 June 2014 21:09
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: CONDITION if
Salut à vous deux,
Je me demandais si on ne pouvait pas simplifier la ligne de "or" en faisant comme ceci:
Code:
if St in ( "accordé", "accordée", "accordee", "accorde", "autorisé", "autorisée", "autorisee", "autorise")
A essayer comme ceci:
Code:
If Nom1<>"" and P <> 0 and Nom<>Nom2 and St in ( "accordé", "accordée", "accordee", "accorde", "autorisé", "autorisé", "autorisée", "autorisee", "autorise") then
A+
Joël
Dernière modification par Spacejo (Thu 12 June 2014 22:11)
Hors ligne
#7 Fri 13 June 2014 10:00
- Loublande
- Participant occasionnel
- Date d'inscription: 29 Oct 2008
- Messages: 38
Re: CONDITION if
Bonjour,
Perso, je ferai :
St = any ("accordé", "accordée", "accordee", "accorde", "autorisé", "autorisée", "autorisee", "autorise") and Nom1<>Nom2 and Nom1<>"" and P <> 0 then ....
Je me pose plus la question du "and" (Nom1<>Nom2 AND Nom1<>"" AND <> 0), tu ne devrais pas plus utiliser un "or" dans ton cas.
Essaie de faire une requête avec le gestionnaire de Mapinfo et tu verras les résultats renvoyés, il ne devrais pas être très nombreux avec des "AND" tandis qu'avec des "or", les résultats pourraient être plus nombreux.
Autrement, envoie un jeu de données en expliquant le calcul que tu veux faire. Si tu veux le faire sur chaque lignes de résultat renvoyées, le gestionnaire fonctionnera très bien.
@ + Loublande
Hors ligne
#8 Fri 13 June 2014 10:10
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: CONDITION if
Bonjour,
Déja un grand merci pour vos réponses
Explication du calcul :
Le calcul se base sur la détection d'éolienne dans un périmètre déterminé par l'utilisateur.
Ainsi l'utilisateur rentre les coordonnées et le périmètre se forme automatiquement.
Après il y a une analyse des éoliennes à savoir son statut et la puissance du parc.
Une ligne égale une éolienne donc il est impératif d'avoir le nom du parc pour chaque éolienne et la puissance du parc dans chaque éolienne.
Si le nom de la première ligne et pareil que le nom de la deuxième ligne alors il n'engendre pas le calcul car le programme a déja traité le parc en question, si le parc ne dispose pas de nom alors il passe, si le parc ne dispose pas de puissance alors il passe, si le parc est accordé alors il traite ce parc.
Je vais tester vos solutions
encore merci
Hors ligne