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 Mon 09 August 2010 22:59

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

(MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

J'ai fait un recherche avant de posté ce message, mais je n'ai rien trouver de similaire donc voici mon problème:

Pour l'exécution d'une macro, je dois créer une table de travail à partir d'une choisie par l'utilisateur afin de ne pas altérer la table initiale. J'ai donc tenté de faire un «save as»:

Code:

commit TableChoisie as "C:\temp\mapinfo\TableDeTravail.Tab"
open table "C:\temp\mapinfo\TableDeTravail.Tab" as "TableDeTravail"

TableChoisie étant une variable, de type string, définie lors de l'ouverture de la table choisie, par un FileSaveAsDlg.

La table de travail se crée et la macro peut continuer "sans problème apparent" cependant les éléments de ma table initiale, TableChoisie, sont linéaires (se sont des routes) alors que les éléments de la table résultante sont ponctuels; il semble que se soit les centroïdes des éléments de la couches initiale.

J'ai alors tenté un «save selection as»:

Code:

Select * from TableChoisie into TableTempo
Commit table TableTempo as "C:\temp\mapinfo\TableDeTravail.Tab"
open table "C:\temp\mapinfo\TableDeTravail.Tab" as "TableDeTravail"
Drop TableTempo

Ca a fonctionné jeudi et vendredi passé. J'arrives ce matin pour continuer à débuger ma macro, ça ne fonctionne plus, ça me donne le même problème qu'auparavant...Après quelques temps de découragement, je me remets à chercher des raisons au problème. J'ai cru avoir trouvé une raison qui serait, je crois, ma variable TableChoisie. Je modifie donc mon code en fonction d'adapter celui-ci pour lui faire entrer un texte fixe. ça a donné quelque chose dans se style:


Code:

Select * from "StatCan08_miniature" into TableTempo
Commit table TableTempo as "C:\temp\mapinfo\TableDeTravail.Tab"
open table "C:\temp\mapinfo\TableDeTravail.Tab" as "TableDeTravail"
Drop TableTempo

Même résultat, I.e: La table est créée avec des éléments ponctuels au lieu d'éléments linéaires comme supposé.


Selon ce que je peux comprendre, c'est que MI à un problème interne lors de l´exécution de la macro, que je ne pourrais pas vraiment réparer, car j'ai modifié ma macro en fonction que MI n'ai aucun problème avec mon code. Je m'en remets donc à vous car je voudrais comprendre le pourquoi d'une sauvegarde d'un fichier linéaire en fichier ponctuel et si possible, avoir une solution car ça fait près d'une semaine que je planche afin de trouver des solutions à des problèmes qui sont tous reliés à ce problème.

Sur l'image jointe, la fenêtre de gauche représente ce que je suis sensé obtenir suite à mon «save as» tandis que la fenêtre de droite représente ce que j'ai à la fin. La map de gauche, StatCan08_Miniature, c'est ma TableChoisie alors que la map de droite, StatCanInit, c'est ma TableDeTravail.

Si besoin il y a, je peux transmettre la macro au complet mais elle énorme .

Dernière modification par CartoKen (Mon 09 August 2010 23:07)


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

Ken aka CartoKen

Hors ligne

 

#2 Tue 10 August 2010 14:31

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: (MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

Bonjour,

Je vois une erreur mais je ne crois pas que ces la source de ton problème mais le voici,

dant ton code tu as "Drop TableTempo" au lieu de "Drop Table TableTempo",

Je suggère que tu donne un autre nom a ton nom de table...genre SleTempo étant donné que le mot table peut porter à confusion avec les fonctions.

JF

Hors ligne

 

#3 Tue 10 August 2010 15:37

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

Re: (MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

Merci pour la remarque mais, je viens de vérifié et j'avais déjà noté cette erreur donc, je l'avais modifié suite à mon post. Habituellement, pour ce qui est des noms des éléments temporaires (table, sélection), j'applique une classification un peu spéciale dépendant du type; pour les sélections, les noms donnés sont de LLL à ZZZ (.. into LLL) que je supprime suite à mes l'obtention de mes résultats et pour les tables, je leurs donnes un nom dans le même style (de AAA à KKK) mais avec le mot table dedans : TableAAA à TableKKK.

Mais pour les besoin de la cause, j'ai modifié mon code de façon à ce qu'il soit plus interprêtable pour les autres programmeurs MB de la communauté, mais apparament j'ai oublié d'adapter les noms en fonction du type de résultat voulus par ma sélection....

Merci encore pour tes conseils et de l'aide que tu as bien voulus me donner.

Dernière modification par CartoKen (Tue 10 August 2010 15:40)


Ken aka CartoKen

Hors ligne

 

#4 Tue 10 August 2010 16:27

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: (MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

Peux-tu attacher le code complet?

JF

Hors ligne

 

#5 Tue 10 August 2010 17:42

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

Re: (MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

D'accord je joins la macro; j'ai cependant remarqué que la première fois où j'insère un nouveau nom à la ligne 289 et 291, ex: "C:\temp\mapinfo\StatCanInitDUR.tab", la macro roule correctement sans l'erreur mentionnée (fichier linéaire devient fichier ponctuel). Par la suite, si je dois faire une modification suite à une autre erreur et que je reprend la macro, l'erreur se produit... Ce que je ne comprend pas, c'est la raison...Pourquoi la première fois l'erreur ne se produit pas alors que les fois subséquentes elle se produit????

Pour ce qui est de la macro, c'est un très gros MBX qui a des MBO qui y sont reliés mais voici le code une fois épurer de toutes les lignes commentés suite à des erreurs ou encore a des modifications de cheminement. Juste le MBX principal, sans la répétition pour les 2 autres segments, a près de 650 lignes. Initialement, avant le "ménage", elle en contenait près de 900...Vu que ça ferai un très gros post, j'ai décidé de le mettre en fichier joint TXT. Si le MBO est nécessaire, je le metterais aussi sur le forum. Les lignes mentionnées plus haut se retrouvent aux lignes 286 à 293. Je dois vous avertir que le fichier une fois fonctionnel sans aucune erreur sera diviser afin de mieux répondre à nos besoins ( plus segmenté et convivial avec un menu plus explicite et précis ).

Dernière modification par CartoKen (Tue 10 August 2010 17:44)


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

Ken aka CartoKen

Hors ligne

 

#6 Tue 10 August 2010 20:46

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: (MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

Bonjour,

En fait à ligne 290 tu fais

Code:

TableA = "StatCanInit_Copy_Tempo"

et en poursuivant à la ligne 461, tu lui dit de transformer t'es ligne de la tableA en points...

Code:

        while not EOT(TableA)
            Select * from TableA where rowid=EmplacementRowID into pointStat
            Xstat = centroidX(pointStat.obj)
            Ystat = centroidY(pointStat.obj)
            update pointStat
            set obj = createpoint(Xstat,Ystat)
            if pointStat.obj within Tempo_DMTI_BUF.obj then
                select DUS_Unique_ID from TableA where rowid=EmplacementRowID into OOO
                browse * from OOO max

ce qui a mon avis change ton fichier lignes en points...

Tu devrais faire un copy supplémentaire .... exemple

Code:

TableA= ""
Select * from "StatCan08_miniature" into OOO
Commit table OOO as "C:\temp\mapinfo\StatCanInitDUR.tab"
Commit table OOO as "C:\temp\mapinfo\StatCanInitDURLignes.tab"
TableA = "StatCanInit_Copy_Tempo"
open table "C:\temp\mapinfo\StatCanInitDUR.tab" as "StatCanInit_Copy_Tempo"
drop table OOO

StatCanInitDURLignes.tab sera ta copy ligne
JF

Hors ligne

 

#7 Tue 10 August 2010 20:53

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

Re: (MI 10.0, MB 8.5) Problème de sauvegarde Linéaire => Ponctuel

Je test et je fais un suivi par la suite. Merci tout de même pour ton aide!

                       Yeah, ça fonctionne !!!
Une erreur de débutant (et c'est vrai)... Merci pour ta rapidité et ton aide Jean94.

Dernière modification par CartoKen (Tue 10 August 2010 23:47)


Ken aka CartoKen

Hors ligne

 

Pied de page des forums

Powered by FluxBB