Pages: 1
- Sujet précédent - Map Basic : ouvrir une table qui a une dimension de string - Sujet suivant
#1 Mon 03 December 2012 16:37
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Map Basic : ouvrir une table qui a une dimension de string
Bonjour,
J'ai utilisé la fonction FileSaveAsDlg pour permettre d'enregistrer une table sous un autre nom.
dim table_1 as string
table_1=FileSaveAsDlg("","",".tab","emplacement") 'donc table_1 est du genre c:\nom.tab
Puis j'ai ouvert cette table :
ouverture_table="open table "+chr$(34)+table_1+chr$(34)+""
run command ouverture_table
Puis j'ai voulu connaitre la valeur d'un champ :
J'ai commencé par vouloir récupérer le nom de la table :
dim table_nom as string
table_nom=tableinfo(1,tab_info_name)
Et j'ai fini en écrivant ceci :
valeur=table_nom.colonne1
MAIS j'ai alors le message d'erreur suivant : Unrecognized command: ..
Pourquoi et comment rectifier ?
Pourquoi ne veut il pas de table_nom ? A priori parce que c'est un dim string, mais dans mon cas je suis obligé de le dimensionner.
Merci pour votre aide :-)
Hors ligne
#2 Thu 13 December 2012 20:38
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Map Basic : ouvrir une table qui a une dimension de string
Bonjour
Votre "colonne1" est incorrect
Faire référence à une colonne d'une table peut se faire de 3 façons
table_name.column_name world.Country
table_name.col# world.COL2
table_name.col( SmallInt ) world.COL(i)
Bon courage
Hors ligne
#3 Fri 14 December 2012 08:59
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Re: Map Basic : ouvrir une table qui a une dimension de string
Merci pour votre réponse
Hors ligne
#4 Thu 07 November 2013 16:26
- Nicolas Szlapka
- Participant actif
- Lieu: NPDC
- Date d'inscription: 20 Dec 2006
- Messages: 107
Re: Map Basic : ouvrir une table qui a une dimension de string
Bonjour
J'ai quelques inquiétudes sur le rapport entre le "chemin" ou le nom d'une table et la variable de type String qui peut lui être associée, notamment dans un FileSaveASdlg.
J'ai déjà cherché des éléments de réponse ici et là, mais cela ne me permet pas de comprendre à 100% et de résoudre mon problème. Je sèche un peu.
J'explique :
Le processus que je fais commence par l'enregistrement d'une sélection en tant que table, celle-ci étant ouverte dans la foulée.
Je passe donc par :
Code:
dim savetable as string savetable = FileSaveASdlg("C:\", "x", "tab","Enregistrer") 'x est remplacé par le nom qu'on va donner à cette table if savetable <> "" then commit table Selection as savetable open table savetable as Exemple
Jusque là, tout va bien. Je sais que la variable savetable correspond au chemin complet qui mène à la table en question (de C:\dossier\... jusqu'à ...\sous dossier\nomtable.tab). Je sais aussi que cet alias est très utile, car le nom choisi pour la table lors de son enregistrement n'est pas toujours le même.
Bref. C'est dans la suite que ça se corse un peu.
Je veux que des éléments de la table soient assemblés selon le même identifiant. C'est le processus réalisé via Table > Fusionner des objets depuis une colonne. J'ai récupéré les lignes de code dans la FMB.
Dans ce processus, on peut créer une nouvelle table d'après la table Exemple qui est ouverte.
Cette nouvelle table sera nommée Assemblage :
Code:
Create table "Assemblage" (CODE Char(2), ... , POP Float) file "C:\dossier\...\sous dossier\Assemblage.tab" type native Charset "WindowsLatin1" Create Object As Union From Exemple Into Table Assemblage Group by CODE Data CODE=CODE, ... ,POP=sum(POP)
Je veux que la table soit enregistrée dans le même répertoire que son modèle, dont le chemin est sous-entendu dans savetable.
Ce qui me fait donc réfléchir sur l'utilité/l'utilisation de savetable.
Peut-on "fractionner" la variable savetable dans le FileSaveASdlg ?
De sorte que l'on ait par exemple une variable chemin qui part de "C:\" jusqu'à "sous dossier\" et une autre qui correspond au nom de la table...?
De cette manière je pourrais peut-être réutiliser ces variables pour l'enregistrement de Assemblage ? Notamment derrière "file", dans le code correspondant à la fusion.
J'espère être assez clair...
Si quelqu'un a compris mon souci et peut me renseigner, je l'en remercie d'avance.
(si ça se trouve, je me plante complètement dans la façon de faire)
Nicolas
Hors ligne
#5 Fri 08 November 2013 11:08
- Nicolas Szlapka
- Participant actif
- Lieu: NPDC
- Date d'inscription: 20 Dec 2006
- Messages: 107
Re: Map Basic : ouvrir une table qui a une dimension de string
J'ai trouvé réponse à ma question en tombant sur ce sujet de Forum SIG.
Le terme PathToDirectory$() m'a été très utile.
J'ai cherché dans le guide et l'aide de MB où j'ai trouvé les significations des fonctions :
PathToDirectory$(), qui renvoit le chemin "C:\dossier\sous dossier\"
PathToFileName$(), qui renvoit à "nom_table.tab"
PathToTableName$(), qui renvoit à "nom_table"
Je n'avais jamais utilisé ces fonctions. C'est exactement ce dont j'avais besoin !
Donc pour le suivi, je vais tout de même montrer le résultat qui semble fonctionner (si ça peut aider quelqu'un) :
Code:
sub agregation dim chemin, nom_table_agreg, assembler As String chemin = PathToDirectory$(enregistrement) 'dim enregistrement as string est indiqué en tête de programme nom_table_agreg = "Assemblage" assembler = PathToDirectory$(enregistrement)+ PathToTableName$(nom_table_agreg) + ".tab" Create Table "Assemblage" (CODE Char(2), POP Float) file assembler TYPE NATIVE Charset "WindowsLatin1" Create Map For Assemblage CoordSys Earth Projection 3, 33, "m", 3, 46.5, 44, 49, 700000, 6600000 Bounds (-112761336.458, -100805724.408) (114161336.458, 126116948.507) Create Index On Assemblage (CODE) Add Map Layer Assemblage Set Map Layer Assemblage Editable On Create Object As Union From Exemple Into Table Assemblage Group by CODE Data CODE=CODE, POP=sum(POP) Set Map Layer Assemblage Display Global Global Pen (2,2,0) Global Brush (1,16777215,16777215) Editable Off Commit table Assemblage interactive end sub
La table Assemblage apparaît bien dans le même répertoire que la table Exemple. Quel bonheur.
Bonne journée à tous !
Dernière modification par Nicolas Szlapka (Fri 08 November 2013 14:25)
Nicolas
Hors ligne
Pages: 1
- Sujet précédent - Map Basic : ouvrir une table qui a une dimension de string - Sujet suivant