#1 Wed 26 February 2003 13:10
- Bcremet
- Invité
Enregistrer une table dont le nom est une variable
Bonjour a tous.
Je souhaite pouvoir enregistrer une table par l'intermediaire de mapbasic sachant que je ne connait pas le nom de cette table. Le nom est definit par l'utilisateur et donc est stocke dans une variable.
Toutes les commandes du style Create table, Commit Table, Save File... necessite le nom de la table et si j'y inscrit ma variable, la table est enregistree sous ma variable.tab alors que je veux la chaine de caracteres contenue dans ma variable.tab
Deux questions:
Est-ce que c'est possible?
Si oui, comment?
Merci
#2 Wed 26 February 2003 14:32
- Jacques Paris
- Invité
Re: Enregistrer une table dont le nom est une variable
Comme dans toutes les circonstances ou MapInfo s'attend a rencontrer le nom
d'une table et que celui-ci est contenue dans une variable, il faut forcer
MB a convertir la variable en un vrai nom et pour cela on utilise la
commande RUN COMMAND . Par exemple
Run command Commit table + variable_nom_de_table
La variable peut etre au milieu d'une commande, il faut simplement s'assurer
de laisser des blancs la ou il faut pour bien separer les elements.
Jacques Paris
#3 Wed 26 February 2003 17:25
- Frédéric Renversez
- Invité
Re: Enregistrer une table dont le nom est une variable
Euh, la commande suivante marche, non ?
Commit Table MaVariable As MonNomDeTable + .tab
Par contre pour les Select, la, effectivement, le Run Command est necessaire :
sCmd = Select * From + sNomTable + Where Id= + iId + Into tmpTable
Run Command sCmd
Frederic RENVERSEZ, I2G
frederic.renversez@ i2g.fr
#4 Wed 26 February 2003 18:37
- Bcremet
- Invité
Re: Enregistrer une table dont le nom est une variable
Re bonjour
Merci a Jacques Paris pour son aide. Malheureusement, ca n'a pas resolu mon probleme, enfin disons plutot que ca l'a deplace. Maintenant, quand j'execute mon mbx, MapInfo me renvoie le message d'erreur suivant :
variable ou champs Routes50 non defini (Routes50 etant la chaine de caracteres stockee dans ma variable). Ce message m'etonne etant donnee que ma variable est deja definie.
#5 Thu 27 February 2003 12:35
- Bcremet
- Invité
Re: Enregistrer une table dont le nom est une variable
Bonjour,
Je n'ai sans doute pas donne tous les elements de mon probleme. Je debute dans mapbasic donc comme je ne sais pas trop ou je vais, c'est difficile de l'expliquer clairement.
Mon outil devrait permettre a l'utilisateur de creer des tables derivees a partir de table base. Pour cela, l'outil recupere le nom de la table base specifie par l'utilisateur, effectue un certain nombre d'operations a partir de cette table base et devrait ensuite enregistrer ces operations dans une autre table que j'appelle table derivee et dont le nom est definit par l'utilisateur. Tout va bien jusqu'au moment ou je veux enregistrer la table derivee sous le nom definit par l'utilisateur. La solution proposee par Frederic Renversez (que je remercie au passage)fonctionne mais ne permet pas de renommer une table existante? Celle proposee par Jacques Paris me renvoie un message d'erreur que j'ai deja soumis a la liste.
Peut-etre que j'insere mal ces bouts de code dans mon programme.
Merci pour votre aide
#6 Sat 01 March 2003 11:32
- Frédéric Renversez
- Invité
Re: Enregistrer une table dont le nom est une variable
> /.../ La solution proposee par Frederic Renversez (que je remercie au passage) fonctionne mais ne permet pas de renommer une table >existante? Celle proposee par Jacques Paris me renvoie un message d'erreur que j'ai deja soumis a la liste.
Pour renommer une table existante il y a
Rename Table sMonNomDeTable As sMonnomDeFichier
avec sMonNOmDeFichier = c:tototiti.tab par exemple.
Mais dans ce cas le nom de la table de base est modifie.
SInon, la solution que je vous ai proposee hier est equivalente a un
Enregistrer Sous... de Mapinfo : la table de base reste et une table derivee
est creee.
Sinon , si vous avez des problemes, il se peut que vous ayez aussi un nom
de variable qui ait le meme nom qu'une table, ce qui fait que MapBasic s'emmele
les pinceaux dans des commandes comme Commit ou autre.
Ca par exemple est a eviter :
Dim MaTable As String
Open Table MaTable.tab