banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oubliĂ© ?

#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!!! smile

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!!! wink

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 smile

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

 

Pied de page des forums

Copyright Association GeoRezo