#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@ 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 ?