ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Nettoyage d'une Zone Alphanumérique   



L'auteur

Jean-Marc TESTUD
France France
Membre Actif (personne physique)
# 0000000026
enregistré le 15/10/2004

TESTUD JEAN MARC
GRAVESON 13690
de la société Transports JH MESGUEN
Fiche personnelle


Note des membres
pas de note

Contributions > 20 - Trucs et Astuces

Nettoyage d'une Zone Alphanumérique
# 0000000305
ajouté le 27/03/2006 09:58:11 et modifié le 06/04/2006
consulté 8703 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0
VFP 5.0
VFP 3.0
FPW 2.6
FPD 2.x

Description

Cette fonction permet de prendre une zone alpha. et de la nettoyer des caractères qui ne sont ni alphabétiques ni numériques.

Cette fonction peut être utile par exemple dans le cas suivant : Fichier Client avec des champs code, nom, cp, ville et vous souhaitez avoir des index sur les champs nom et ville. Vous rajoutez les champs nomnet et villenet qui contiennent respectivement clenet(nom) et clenet(ville) à mettre à jour lors des inserts et update et vous créez vos index sur ces champs.

Vous gardez en simultanée dans la table les valeurs utilisateurs (nom et ville) et les valeurs nettoyées (nomnet et villenet) ce qui vous permet des affichages ou des recherches dans l'ordre des index plus sympathiques.

Exemple : Affichage dans l'ordre des noms croissants:

Code   Nom                                    Nomnet

0015    D.U.E. Sàrl                         DUESARL
0014    Du Jardin Joel                    DUJARDINJOEL
0014    Du    Jardin Noel                DUJARDINNOEL
0018    Dupont Henri                     DUPONTHENRI
Code source :
*--------------------------------------------------------------------------*
*---> Jean-Marc TESTUD
*---> Procedure de Nettoyage d'une Zone en supprimant tous
*---> les carrateres autres que lettres(a-z) et les chiffres(0-9)
*---> et en transformant le tout en majuscules
*---> Parametres : chaine , numérique
*--->              Chaine à transformer
*--->              Longueur de la Chaine de retour (facultative)

function CleNet
parameters __Var,__Len
private __Var,__Len,__i
if parameter() = 0 then
    __Var = ""
else
  if parameter()=1  then
     __Len=len(__Var)
  else
     __Len=abs(int(__Len))
  endif
  __Var=strtran(upper(__Var)," ")
  For __i = 1 to len(__Var)
        do case
         case substr(__Var,__i,1) $ upper("àâäã")
                __Var = stuff(__Var,__i,1,"A")
         case substr(__Var,__i,1) $ upper("ôö")
                __Var = stuff(__Var,__i,1,"O")
         case substr(__Var,__i,1) $ upper("îï")
                __Var = stuff(__Var,__i,1,"I")
         case substr(__Var,__i,1) $ upper("éèêë")
                __Var = stuff(__Var,__i,1,"E")
         case substr(__Var,__i,1) $ upper("ûüù")
                __Var = stuff(__Var,__i,1,"U")
         case substr(__Var,__i,1) $ upper("ñ")
                __Var = stuff(__Var,__i,1,"N")
         case substr(__Var,__i,1) $ upper("ç")
                __Var = stuff(__Var,__i,1,"C")
        endcase
     if substr(__Var,__i,1) $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" then
     else
        __Var = stuff(__Var,__i,1," ")
     endif
  next
  __Var=padr(strtran(__Var," "),__Len," ")
endif
return __Var

Commentaires
Aucun commentaire enregistré ...

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3