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

GEODATA DAYS 2024

#1 Wed 19 March 2008 11:01

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

[Map Basic 7.x] Mise a jour de colonnes

Bonjour j'ecris en ce moment un programme qui a pour but de merger dans un premier temps deux tables. N'arrivant pas a merger ma table j'ai essayé comme suit de faire une selection et de faire le merge sur la selection mais cela ne fonctionne pas non plus  .

L'utilisateur doit choisir ces trois tables dans les boites de dialogues (tables deja ouvertes dans mapinfo) et le programme doit remplir les champs non renseigné d'une table sur l'autre. C'est a dire que dans ma premiere table (Region) je veux remplir en fonction d'une variable id la colonne sous prefecture qui se trouve rempli dans ma table (département).
Le probleme c'est que ca semble tout bete mais ca fais 1 h que je bloque la dessus, d'ailleur ma selection focntionne mais un add column / set to / where ne marche pas. Je pense que le probleme vient de la gestion hasardeuse de mes fenetres de données, mais j'arrive une nouvelle fois a la limite de mes connaissances 

Code:

SUB DLG
 
 
call contenu
 
Dialog Title "Prog Toutcomm" width 250 Height 120
Control statictext Position 10,12 width 100 Title "Table des Regions :"
Control PopUpMenu Position 110,10 width 110 Height 10 id 1 Title from Variable NomTable Value 1 into A 
 
Control statictext Position 10,32 width 100 Title "Table des Dep :"
Control PopUpMenu Position 110,30 width 110 Height 12 id 2 Title from Variable NomTable Value 1 into B 
Control statictext Position 10,52 width 80 Title "Table Tout_COM :"
Control PopUpMenu Position 110,50 width 110 Height 10 id 3 Title from Variable NomTable Value 1 into C 
Control statictext Position 10,82 width 100 Title "Nom du fichier de sortie"
Control edittext Position 110,80 width 100 Height 12 id 4 Value "Ta_commune" into nom
Control CancelButton Position 60, 100 Width 50 Title "Annuler"
Control OKButton Position 140, 100 Width 50 Title "OK"
 
note nomtable(A)
If commandinfo(cmd_info_dlg_ok) and nom <> "" then
 
 
END IF
 
 
END SUB

Hors ligne

 

#2 Wed 19 March 2008 11:49

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

Re: [Map Basic 7.x] Mise a jour de colonnes

... ?? le code fourni ne nous éclaire pas beaucoup sad
Je suppose que la sub contenu donne une valeur à Nomtable...
Mais que se passe-t-il après que l'utilisateur ait cliqué OK (et donné une valeur à nom) ??

Hors ligne

 

#3 Wed 19 March 2008 11:58

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: [Map Basic 7.x] Mise a jour de colonnes

D'abord merci de ta réponse,
Oups j'avais pas vu que je vous avez pas fournit le sub contenu : le voici

Code:

SUB Contenu

    nb = NumTables()
    ReDim NomTable(nb)
    For i =1 to nb
       NomTable(i) = TableInfo(i,Tab_Info_Name)
    Next


END SUB

Quand il clique sur ok ce que je veux faire est de copier une colonne de la deuxieme table dans la premiere puis faire une jointure entre ce résultat et la troisieme table. Le nom correspondant au nom du fichier txt que mapinfo editeras en sortie.

J'espere avvoir été clair, si vous n'avez pas bien compris je peux encore essayer de reexpliquer smile

Hors ligne

 

#4 Wed 19 March 2008 12:24

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

Re: [Map Basic 7.x] Mise a jour de colonnes

C'est clair pour contenu (que j'avais deviné ...smile)
Mais pour la suite il ne suffit pas de dire "voilà ce que je veux mais ça marche pas !!"
Pour qu'on puisse aider il faut préciser "voilà comment je m'y prends et voilà où ça bloque"
Sinon...on se perd en conjectures tongue

Hors ligne

 

#5 Wed 19 March 2008 12:29

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: [Map Basic 7.x] Mise a jour de colonnes

Ok ok

Ben je pensais faire un

Code:

Add Column "Nomtable(A)" (Sous)From Nomtable(B) Set To SOus Where CODE= CODE

Puis apres un select * from (les deux tables) puis un drop de certaines colonnes inutiles

puis enfin :

Code:

Export SELECT Into pathtodirectory$(tableinfo(nomtable(A),TAB_INFO_TABFILE)) + nom + ".dbf" Type "DBF" CharSet "CodePage850"

pour exporter

Voili voiloi smile

Hors ligne

 

#6 Wed 19 March 2008 13:20

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

Re: [Map Basic 7.x] Mise a jour de colonnes

Le premier code mettra à jour les valeurs de la colonne "sous" pré-existante dans Nomtable(A) avec les valeurs de la colonne "sous" de Nomtable(B) là où leurs colonnes CODE sont égales ...rien à redire si c'est bien le cas de figure, sauf que si Nomtable(A) sont les régions, la colonne "sous" va être remplie par l'une des n sous-préfectures des n départements (Nomtable(B)) qui la composent ???? Il y a un problème de sens de "sous-préfecture d'une région" !!
Le second code comporte une erreur: Export SELECT est faux (mot réservé), il faut dire Export selection (ou Export truc, si on a pris la précaution de nommer le select * par un into truc)
Voilou...pour l'instant smile

Hors ligne

 

#7 Wed 19 March 2008 13:51

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: [Map Basic 7.x] Mise a jour de colonnes

Le probleme reside dans le fait que mapinfo aime pas du tout le premier code il affiche une erreur tel que  "le Resultat de l'expression n'est pas un nom de table ou de colonne" Je comprend pas pourquoi....

Pour le select ca fonctionne puisque ma deuxieme selection est stocké dans une table temporaire select, je l'ai déja fait pour un autre programme, je vais quand meme changer pour éviter tout quiproquo futur smile

Par contre le probleme reste entier pour la mise a jour de la colonne, c'est d'ailleur fortement énervant du fait que je ne peux pas avancer  pour le reste, y compris pour ma deuxieme selection.

Hors ligne

 

#8 Wed 19 March 2008 15:03

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

Re: [Map Basic 7.x] Mise a jour de colonnes

- premier code: les guillemets autour Nomtable(A) sont en trop et, si ça ne suffit pas de les enlever, passez par de l'interprété (décomposer) puisqu'il y a constantes et variables mélangées. Genre:
cmd="Add Column "+Nomtable(A)+" (Sous) From "+Nomtable(B)+" Set To SOus Where CODE= CODE"
print cmd   'pour vérifier
run command cmd
- select est un mot réservé et là il ne veut en plus rien dire: c'est selection qu'on exporte ....

Hors ligne

 

#9 Wed 19 March 2008 15:08

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: [Map Basic 7.x] Mise a jour de colonnes

Merci pour l'aide ca marche wink

Le select en fait correspond a ma requette suivante qui est stocké into SELECT (j'ai ecris select pour etre plus court que selection) et ca fonctionne parfaitement quand meme mais je vais changer ca tout de meme wink

Hors ligne

 

#10 Wed 19 March 2008 15:14

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

Re: [Map Basic 7.x] Mise a jour de colonnes

Désolé, je n'avais pas vu les guillemets au premier coup d'oeil ...
Quid de ma remarque sur le sens général de votre démarche ??

Hors ligne

 

#11 Wed 19 March 2008 15:32

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: [Map Basic 7.x] Mise a jour de colonnes

Pour la démarche le but est de renseigner cette colonne afin de pouvoir faire un sous total  sous excel par la suite. Un premier par préfecture puis par sous préfecture smile C'est purrement usuel pour des sorties de fichiers "propres".

Hors ligne

 

Pied de page des forums

Powered by FluxBB