Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Wed 03 January 2007 17:16

mathildeharel
Participant occasionnel
Date d'inscription: 4 Nov 2005
Messages: 17

fenêtre mapbasic

Bonjour à tous et bonne année 2007!
voici mes problèmes:
1) je ne connais quasimment rien en visual basic...mais...
2) j'ai créé un script dans lequel je demande l'ouverture d'une table dans un répertoire donné, puis de l'enregister sous un autre répertoire dans une autre projection. Je voudrais répéter cette demande un certain nombre de fois, mais au bout de la quatrième, il m'affiche un message d'erreur:
"(C:\SIG\.....\nom fichier.tab:10)le résultat de l'expression n'est pas un nom de table ou de colonne"

Voici un extrait de mon script:

dim matable as string
matable=fileopendlg("C:\SIG_CRPF\","","TAB","choisir la table HAB_LIN)
open table matable interactive
Map from Hab_lin
dim nom as string
dim nomfinal as string
nomfinal = filesaveasdlg("C:\SIG_CRPF\",nom+"hablin_","TAB","enregistrer le fichier HAB_LIN")
commit table Hab_lin as nomfinal TYPE NATIVE Charset "WindowsLatin1" CoordSys Earth Projection 3, 1002, "m", 0, 46.8, 45.898918964419, 47.696014502038, 600000, 2200000 Bounds (30000, 1600000) (1230000, 2700000)
drop table Hab_lin

matable=fileopendlg("C:\SIG_CRPF\","","TAB","choisir la table BATI ")
open table matable interactive
Map from Bati
nomfinal = filesaveasdlg("C:\SIG_CRPF\",nom+"bati_","TAB","enregistrer le fichier BATI  dans le dossier MAPINFO de la commune")
commit table Bati as nomfinal TYPE NATIVE Charset "WindowsLatin1" CoordSys Earth Projection 3, 1002, "m", 0, 46.8, 45.898918964419, 47.696014502038, 600000, 2200000 Bounds (30000, 1600000) (1230000, 2700000)
drop table Bati

matable=fileopendlg("C:\SIG_CRPF\","","TAB","choisir la table BATI_PT")
open table matable interactive
Map from Bati_pt
nomfinal = filesaveasdlg("C:\SIG_CRPF\",nom+"bati_pt_","TAB","enregistrer le fichier BATI_PT")
commit table Bati_pt as nomfinal TYPE NATIVE Charset "WindowsLatin1" CoordSys Earth Projection 3, 1002, "m", 0, 46.8, 45.898918964419, 47.696014502038, 600000, 2200000 Bounds (30000, 1600000) (1230000, 2700000)
drop table Bati_pt

matable=fileopendlg("C:\SIG_CRPF\","","TAB","choisir la table HAB_PT")
open table matable interactive
Map from Hab_pt
nomfinal = filesaveasdlg("C:\SIG_CRPF\",nom+"hab_pt_","TAB","enregistrer le fichier HAB_PT")
commit table Hab_pt as nomfinal TYPE NATIVE Charset "WindowsLatin1" CoordSys Earth Projection 3, 1002, "m", 0, 46.8, 45.898918964419, 47.696014502038, 600000, 2200000 Bounds (30000, 1600000) (1230000, 2700000)
drop table Hab_pt

Merci beaucoup à tous ceux qui voudront bien un peu de temps pour déchiffrer tout cela.

Hors ligne

 

#2 Wed 03 January 2007 18:36

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: fenêtre mapbasic

Bonjour,
Pas le temps de tout lire mais juste un moyen de vérifier les valeurs que prend nomfinal :
intercaler avant chaque "commit" un "print nomfinal"

Hors ligne

 

#3 Mon 08 January 2007 09:38

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: fenêtre mapbasic

Bonjour

Je ne connais rien à MapInfo mais:

dim matable as string
matable=fileopendlg("C:\SIG_CRPF\","","TAB","choisir la table HAB_LIN)
open table matable interactive
Map from Hab_lin
dim nom as string
dim nomfinal as string


1) Utiliser en tête de module:

option explicit

ce qui oblige la déclaration des variables, ceci évite bien des erreurs.

2) Déclarer toutes vos variables en tête de procédure ou de fonction

dim matable as string
dim nom as string
dim nomfinal as string

ensuite le code.

3) Je ne suis pas un spécialiste de VBA (mais plutôt de VB6) et une chose me surprend :

nomfinal = filesaveasdlg("C:\SIG_CRPF\",nom+"hablin_","TAB","enregistrer le fichier HAB_LIN")


La variable "nom" est affectée quand ???
A la lecture de votre code il me semble qu'elle vaut toujours "" (chaine vide). A moins que celle ci soit affectée par la fonction filesaveasdlg, qui si j'ai bien compris comprends 4 paramètres:
- chemin d'enregistrement
- nom du fichier
- extention
- texte de la boite de dialogue.

d'autre part la répétition du code pourrait être évitée avec une boucle de type do while ... Loop.

Si le problème n'est toujours pas résolu (la solution de Maurice est un debug efficace), donnez moi la doc de la fonction filesaveasdlg et je tenterai de vous répondre plus précisément  La nature et l'écriture du troisième paramètre étant surprenante pour du VB. Car nom + "bati_"  si nom vaut toto donne "totobati_ " (j'aurais plutôt vu bati_toto) de plus à l'opérateur de concaténation "+" on préfére & pour les chaines de caractères question de lisibilité.

A+

Christophe


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#4 Mon 08 January 2007 13:20

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: fenêtre mapbasic

Pour faire ce job (ouverture et reprojection, au même endroit ou pas, d'une ou plusieurs tables) j'avais commis l'outil ci-joint. Mais que cela ne vous empêche pas de continuer à développer smile
Je crois que Christophe met le doigt sur le problème: c'est quoi cette variable nom ?? et sur la "philisophie" du script: les mbx permettent de faire des boucles, donc autant se servir de cette possibilité...


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#5 Fri 02 July 2010 08:46

hugoroussaffa
Participant occasionnel
Lieu: Verdun en lauraguais
Date d'inscription: 19 Oct 2008
Messages: 38
Site web

Re: fenêtre mapbasic

I love U wink

merci so much


Hugo Roussaffa
GeoDatup

Hors ligne

 

#6 Wed 18 December 2013 10:11

MuSeb88
Juste Inscrit !
Lieu: Aix en Provence
Date d'inscription: 2 Mar 2010
Messages: 1
Site web

Re: fenêtre mapbasic

Parfait ce petit outil ! Merci beaucoup à l'auteur ! wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB