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 Mon 08 October 2001 21:47

V GIRAULT
Invité

passage de variables

Bonjour ! J'ai une petit probleme de passage de variable. En effet, par rapport au contexte de mon prg, je dois passer par variable le nom d'une table dans un nom de champ. Apparemment, c'est imupossible, mais n'y a t-il tout de meme pas une solution ?

Voici les parties du programme ayant trait a cette variable :

// Declarations des variables :
GLOBAL Commune, colonne as string
GLOBAL NFIC, NFIC2, TABLE as string
GLOBAL X1, X2, X3, X4, Y1, Y2, Y3, Y4 as Integer
GLOBAL Plan, i, nb_enr as Integer
GLOBAL TypePlan, TypeCarto, Champ, Champ2 as String
GLOBAL Rep as logical

La variable Commune est recuperee dans une boite de dialogue

//1er algo initialisant les autres variables :
Call Ouverture
Open Table C:Mes documentsSpeedyMapinfoTablesEssai_coord.TAB as Essai_coord
Add Map Auto Layer Essai_coord
NFIC2 = C:Mes documentsSpeedyMapinfoTablesPoints_ +Commune+ .TAB
TABLE = Points_ +Commune      'Ici, ca fonctionne
colonne = Points_ +Commune

//Voici enfin l'algo qui ne fonctionne pas :
nb_enr = 0
Fetch First From TABLE
X1 = TABLE.COORDX'La variable ne passe pas
Y1 = TABLE.COORDY
Do While Not EOT(TABLE)
nb_enr = nb_enr + 1
Fetch Next From TABLE
Loop

La question est; est ton vraiment oblige de passer une nom de colonne en donnant son nom veritable ou non ? Sinon, pourc elui qui a la solution, je le remercie d'avance...

 

#2 Mon 08 October 2001 21:47

Christophe Barbier
Invité

Re: passage de variables

Bonjour,
Il y a un moyen simple pour votre probleme.
Il faut passer par une variable de type Alias.

Exemple:
Dim nomtable As String
Dim nomchamp As String
Dim alias_chp1 As Alias
Dim valeur_champ1 As String

nomtable = c:table.tab
nomchamp = champ1
alias_chp1 = nomtable & . & nomchamp

Fetch First From nomtable
valeur_champ1 = alias_chp1

Et voila, valeur_champ1 contient bien la valeur du champ champ1 .

Christophe Barbier, I²G
christophe.barbier@texte-a-enlever.i2g.fr

 

#3 Mon 08 October 2001 21:48

V GIRAULT
Invité

Re: passage de variables

Suite a mon precedent message, ca n'a pas l'air de lui plaire :
Alias_champ1 = TABLE& . &nomchamp1
Sur cette commande j'obtiens le message de MapBasic : commande inconnue : ..

Je ne vois personnellement pas ou il trouve 2 points

 

#4 Mon 08 October 2001 21:51

Christophe Barbier
Invité

Re: passage de variables

(re)bonjour,
Vous devez laisser un espace de chaque cote du signe '&' :
Alias_champ1 = TABLE & . & nomchamp1
Je pense que le probleme vient de la car je n'ai jamais eu de soucis avec
les alias.

Christophe Barbier

 

#5 Mon 15 October 2001 21:50

V GIRAULT
Invité

Re: passage de variables

Peut-on passer une variable chaine apres la commande Create Table selon le code ci-dessous ?
Dim TABLE2 as string
TABLE2 = PMin_Max +Commune
Print TABLE2
Create Table TABLE2 ( COOR_ID Integer, COORDX Integer, COORDY Integer )'Creation de la table
Commune etant une variable chaine egalement. Merci.

 

#6 Tue 16 October 2001 21:53

V GIRAULT
Invité

Re: passage de variables

Decidement, le language BASIC est des fois un peu reticent. Je prefere le C, au moins c'est plus carre. Passons...
Merci a Jacques PARIS et A. BOURDIN (?) pour les diverses reponses apportees.

Pour Jacques...
En effet, j'ai teste mes chaines par Print a_cmd (ou b_cmd) et elles etaient parfaites ! J'ai donc recree ma table sans ref particuliere et oui, ca fonctionne ! Formidable !!!

Pour A, l'inconnu
Excellente, la manip de rajouter des cotes de chaine supplementaires, il ne se laisse vraiment pas faire notre ami MB !

Voici donc le code de l'algo au final : il fonctionne....
Dim TABLE2 as string
Dim NFIC3 as string
Dim a_cmd as string
Dim b_cmd as string

NFIC3 = C:Mes documentsSpeedyMapinfoTablesPMin_Max +Commune+ .TAB
TABLE2 = PMin_Max +Commune

a_cmd = Create Table +TABLE2+ ( COOR_ID Integer, COORDX Integer, COORDY Integer )
b_cmd = File  C:Mes documentsSpeedyMapinfoTables +TABLE2+
Print a_cmd + b_cmd
run command a_cmd +   +b_cmd
Evidemment, on retire les print apres, ils ne sont la que pour la phase de tests !

Encore Merci a tous
Allez, bonne algorhytmique et sus aux octets farceurs !
V.

 

#7 Tue 16 October 2001 21:53

V GIRAULT
Invité

Re: passage de variables

Hello ! C'est envcore moi ! Le fait d'utiliser run command pour lancer des commandes avec des passages de variables et fabuleux mais me pose encore des problemes pour la suite :
NFIC3 = C:Mes documentsSpeedyMapinfoTablesPMin_Max +Commune+ .TAB
TABLE2 = PMin_Max +Commune
'STOP Probleme
a_cmd = Create Table +TABLE2+ ( COOR_ID Integer, COORDX Integer, COORDY Integer )
'b_cmd = File C:Mes documentsSpeedyMapinfoTables +TABLE2
run command a_cmd
b_cmd = File
'run command b_cmd+ C:Mes documentsSpeedyMapinfoTables +TABLE2
run command b_cmd+NFIC3       'Creation de la table
'File C:Mes documentsSpeedyMapinfoTables +TABLE2
En effet, j'ai tout essaye selon le modele pour a_cmd mais MB ne veut pas de la commande File. Dans un cas il me dit que c'est une commande inconnue, dans l'autre il me dit qu'il ne connait pas '/' Quid ?

 

Pied de page des forums

Powered by FluxBB