#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

