#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
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
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é ...)
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
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
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
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
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
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
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 C'est purrement usuel pour des sorties de fichiers "propres".
Hors ligne