Quantcast
Channel: Forum SIG - Systèmes d'Information Géographique et Géomatique
Viewing all articles
Browse latest Browse all 8030

[MapBasic 10.x] Remplir un champ en fonction d'un autre

$
0
0
Bonjour,

Je me remets au MapBasic et je rencontre un petit problème. En effet, je voudrais remplir un champ en fonction de la valeur contenue dans un autre champs.
En fait, j'ai un fichier .TAB géocodé par le Geocodeur Universel et dans cette table le champ MI_CQ contient la qualité du géocodage mais pas de manière très explicite (S0;a pour un geocodage à la rue par exemple). Ainsi, je voudrais pouvoir mettre à jour un champ créé dans lequel le libellé serait plus pratique.

Ainsi, je prend la lettre du champ MI_CQ et selon cette lettre, cela correspond à un libellé comme suit :
N=Numéro C=Numéro Corrigé S=Rue T=Commune Z=CP D=Département

Comme faire cela en MapBasic (au moment du clic sur un bouton, je met à jour divers champs)???? Mon code peut-il etre amélioré (un IF, une boucle?)??

Voici le code actuel:

Code:

Open table w_nom_table        'Ouverture de la table sélectionnée dans la zone de liste

                Update w_nom_table Set ORG_GEO = "CCI"                'Rempli le champ ORG_GEO avec la valeur CCI
                Update w_nom_table Set TYP_GEO = "GEOCODEUR"        'Rempli le champ TYP_GEO avec la valeur GEOCODEUR
               
                Select count(*) "Nb" from w_nom_table where Left$(MI_CQ,1)="N" into resultat    'Si la sélection ne retourne aucun résultat on passe à la suite
                If resultat.Nb <> 0 then
                Select * from w_nom_table where Left$(MI_CQ,1)="N" into Selection
                Update Selection Set ECH_GEO = "Numero" '=>correspond au champ MI_CQ : remplacer la première lettre par libelle + parlant       
                End if

                Select count(*) "Nb" from w_nom_table where Left$(MI_CQ,1)="C" into resultat
                If resultat.Nb <> 0 then               
                Select * from w_nom_table where Left$(MI_CQ,1)="C" into Selection       
                Update Selection Set ECH_GEO = "Numero Corrige"
                End if

                Select count(*) "Nb" from w_nom_table where Left$(MI_CQ,1)="S" into resultat
                If resultat.Nb <> 0 then
                Select * from w_nom_table where Left$(MI_CQ,1)="S" into Selection       
                Update Selection Set ECH_GEO = "Rue"
                End if

                Select count(*) "Nb" from w_nom_table where Left$(MI_CQ,1)="T" into resultat
                If resultat.Nb <> 0 then
                Select * from w_nom_table where Left$(MI_CQ,1)="T" into Selection       
                Update Selection Set ECH_GEO = "Commune"
                End if

                Select count(*) "Nb" from w_nom_table where Left$(MI_CQ,1)="Z" into resultat
                If resultat.Nb <> 0 then
                Select * from w_nom_table where Left$(MI_CQ,1)="Z" into Selection       
                Update Selection Set ECH_GEO = "Code Postal"
                End if

                Select count(*) "Nb" from w_nom_table where Left$(MI_CQ,1)="D" into resultat
                If resultat.Nb <> 0 then
                Select * from w_nom_table where Left$(MI_CQ,1)="D" into Selection
                Update Selection Set ECH_GEO = "Departement"
                End if

Autre problème, je voudrais une fois toutes les mise à jour effectuées pouvoir exporter ma table en format csv ou dbf pour pouvoir ensuite l'ouvrir facilement sous Excel. J'avais créé lors de mes études un outils d'export en DXF mais celui bug :/ Ainsi, comment faire pour pouvoir avoir une fenêtre de dialogue nous demandant où l'on souhaite exporter notre fichier en CSV (ou DBF)????


Merci
*******
EDIT
*******
Je viens de programmer l'export en CSV qui permet d'aller sur Excel ensuite :

Code:

Sub btn_export
dim w_indice_table as smallint
dim w_nom_table as string

        w_indice_table = 0

        w_indice_table = readcontrolvalue(2)
        if w_indice_table > 0 then
                w_nom_table = liste_table(w_indice_table)

                Export w_nom_table into "C:\Users\mt\Desktop\" & w_nom_table & ".CSV"
                          Type "ASCII" Overwrite Delimiter "," CharSet "WindowsLatin1" Titles
        else
                note "Vous devez sélectionner une couche"
        end if
End sub

Cependant, comment faire pour que l'utilisateur puisse choisir le dossier de destination? Car ici le fichier s'enregistre sur mon bureau (pour le test) mais j'aimerais avoir une fenêtre de dialogue pour spécifier mon répertoire. Est-ce possible?

Viewing all articles
Browse latest Browse all 8030

Trending Articles