Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Powered by FluxBB