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:
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 :
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?
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
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