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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 29 July 2014 16:01

diou
Participant assidu
Date d'inscription: 27 Jan 2008
Messages: 171

aide mapbasic

Bonjour à tous,

Je suis à la recherche d'une ligne mapbasic pour répondre à cette problématique :

j'ai une colonne A / une colonne B /une colonne C
Je veux faire la phrase suivante :

Si colonne A=Z et colonne B=Y alors colonne C=Y

Pourriez vous me donner une formule avec "If"/"Where" et "then" ? Je n'arrive pas à trouver quelque chose que MI accepte, j'ai non stop des messages d'erreur ...

Par avance merci de votre aide
et longue vie à georezo wink

diou

Hors ligne

 

#2 Tue 29 July 2014 16:44

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: aide mapbasic

Salut,

J'écrirais ça comme ceci mais le mieux serait que l'on voit ton bout de code et les messages d'erreur générés wink

Code:

Dim A, B, C as alias

If A=Z and B=Y then
C=Y
End if

A+
Joël

Hors ligne

 

#3 Tue 29 July 2014 16:58

didou72
Participant assidu
Date d'inscription: 21 Mar 2012
Messages: 192

Re: aide mapbasic

Produire une boucle for et après produire des variables pour récupérer la valeur de la ligne de chaque colonne.

Commencer la boucle for i=0 to i_rec (récupérer le nombre de ligne)

Variable C = 0

Variable A = nom_colonne A.nom_table
Variable B = nom_colonne B.nom_table
Variable Z = nom_colonne Z.nom_table
Variable Y = nom_colonne Y.nom_table
Variable ID= nom_colonne ID.nom_table

.
.
.
.

Aprés faire

If  Variable A = variable Z et Variable B =Variable Y

then

Variable C = Variable Y


Sélection de la valeur de la Variable ID puis faire la mise à jour de la colonne C

Fermer le IF ( end if)
Fermer la boucle (next)

Hors ligne

 

#4 Tue 29 July 2014 17:04

diou
Participant assidu
Date d'inscription: 27 Jan 2008
Messages: 171

Re: aide mapbasic

En gros il me dit "commande non reconnue : if." lorsque j'écris ton bout de code et quand j'ai essayé d'autre bout de code...

Hors ligne

 

#5 Tue 29 July 2014 17:08

diou
Participant assidu
Date d'inscription: 27 Jan 2008
Messages: 171

Re: aide mapbasic

merci didou72 je vais tester ça smile

Hors ligne

 

#6 Tue 29 July 2014 17:31

didou72
Participant assidu
Date d'inscription: 21 Mar 2012
Messages: 192

Re: aide mapbasic

Pour i_rec il faut  le définir avant par i_rec = tableinfo(nom_de_la_table , tab_info_nrows)

Fetch first from nom de la table

For i=1 to i_rec

Dernière modification par didou72 (Tue 29 July 2014 17:33)

Hors ligne

 

#7 Tue 29 July 2014 17:36

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: aide mapbasic

Diou, juste pour info, je pense que didou72 donnait un exemple, mais fait attention à la syntaxe :
On écrira pas "Variable C" mais plutôt "Variable_C"  avec le tiret bas ou "VariableC" sans espace, quel que soit le nom que tu choisis.
Il faut éviter les espaces si possible si tu codes.

Hors ligne

 

#8 Tue 29 July 2014 18:49

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: aide mapbasic

Petite question -> ce que tu cherches c'est développer un .mbx ou avoir le résultat escompté dans ta table (Si colonne A=Z et colonne B=Y alors colonne C=Y) ?
Car tu peux passer par la FMB plutôt que de développer un .mbx wink
A+
Joël

Hors ligne

 

#9 Wed 30 July 2014 08:07

diou
Participant assidu
Date d'inscription: 27 Jan 2008
Messages: 171

Re: aide mapbasic

Oui je n'ai pas préciser assez les chose je pensai juste passer par la FMB je n'ai hélas pas les compétences suffisantes pour coder un  .mbx :'(
Du coup si voius avez une petite phrase adaptable a la FMB pour répondre à mon pblm je suis preneur!

Par avance merci!

Hors ligne

 

#10 Wed 30 July 2014 08:49

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: aide mapbasic

Quelle est la nature de Y et Z -> Ce sont des constantes en texte en numérique?
Si Y et Z sont des constantes en numérique:

Select * from TaTable where ChampA=Z and ChampB=Y into AModifier
update AModifier set ChampC=Y


Si elles sont en texte:

Select * from TaTable where ChampA like "Z" and ChampB like "Y" into AModifier
update AModifier set ChampC like "Y"


PS:Ne pas oublier de sélectionner tout le code avant validation dans la FMB sinon elle ne prendra en compte que la dernière ligne du code wink
A+
Joël

Dernière modification par Spacejo (Wed 30 July 2014 08:50)

Hors ligne

 

#11 Wed 30 July 2014 10:32

diou
Participant assidu
Date d'inscription: 27 Jan 2008
Messages: 171

Re: aide mapbasic

Merci bcp Joël !

Hors ligne

 

#12 Wed 30 July 2014 14:28

didou72
Participant assidu
Date d'inscription: 21 Mar 2012
Messages: 192

Re: aide mapbasic

Robin a écrit:

Diou, juste pour info, je pense que didou72 donnait un exemple, mais fait attention à la syntaxe :
On écrira pas "Variable C" mais plutôt "Variable_C"  avec le tiret bas ou "VariableC" sans espace, quel que soit le nom que tu choisis.
Il faut éviter les espaces si possible si tu codes.


Oui exactement c'est une marche à suivre mais ne pas suivre la syntaxe.

Comme tu veux pas un mbx il faut alors suivre les explications de Joel

Merci Robin

Dernière modification par didou72 (Wed 30 July 2014 14:30)

Hors ligne

 

Pied de page des forums

Powered by FluxBB