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Ă© ?

#1 Tue 21 March 2006 12:41

Vero
Participant actif
Lieu: Echirolles
Date d'inscription: 6 Sep 2005
Messages: 50

VB et Etiquettes

Bonjour,

Dans ArcView 9.1, je tente d'insérer une étiquettes sur 2 lignes avec condition.
Pour mettre le contenu de l'étiquette sur 2 lignes aucun souci, en revanche je pensais pouvoir insérer une expression avancée contenant un "If... then ... else". Là je coince.

Je souhaite faire une condition du style :
si le champ "nom du batiment" est vide étiqueter "nom du batiment & nb de logements", sinon "nom du promoteur & nb de logements".

Merci d'avance pour vos conseils.

Véro


Véronique VESTRI
Responsable SIG
Ville d'Echirolles (38)
v.vestri@texte-a-enlever.ville-echirolles.fr

Hors ligne

 

#2 Tue 21 March 2006 13:35

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: VB et Etiquettes

Bonjour,

Peut-ĂȘtre que votre problĂšme vient du fait que vous utilisez des valeurs de plusieurs champs, ce qu'il faut dĂ©clarer dans la fonction FindLabel.

Voici un exemple qui affiche le nom des communes (champ [POLYGON_NM]) sur plusieurs lignes si celui-ci comprend un trait d'union, ainsi que le code INSEE (champ [CODINSEE]) si celui-ci est renseigné.

En espérant que cela vous aide,
Kevin Jousseaume.

--------------------------------------------------------
Function FindLabel ([POLYGON_NM], [CODINSEE])
strOldchaine = [POLYGON_NM]
strCodeInsee = [CODINSEE]

if strCodeInsee <> "" Then
  strOldchaine = strOldchaine & vbnewline & strCodeInsee
End If

    strNewChaine = ""
     
    Do While Len(strOldchaine) > 0
        place = InStr(strOldchaine, "-")
        If place = 0 Then
            strNewChaine = strNewChaine & strOldchaine
            Exit Do
        End If
        strNewChaine = strNewChaine & Left(strOldchaine, place) & vbNewLine
        strOldchaine = Right(strOldchaine, Len(strOldchaine) - place)
    Loop

FindLabel = strNewChaine
End Function

Hors ligne

 

#3 Tue 21 March 2006 20:12

Vero
Participant actif
Lieu: Echirolles
Date d'inscription: 6 Sep 2005
Messages: 50

Re: VB et Etiquettes

J'ai bien avancé : plus aucune erreur dans la syntaxe, cependant l'affichage
ne répond toujours pas à ma demande.
Je souhaite avoir :
Nom du batiment
nb de logements

ou si nom du batiment est vide

Nom du promoteur
nb de logements

Si quelqu'un a encore une idée... merci d'avance

Véro

Voici le code de l'étiquette
-------------------------
Function FindLabel ( [Arche5_BatiCV.NomBATI], [LOG_TOTAL] ,
[Arche5_BatiCV.Promoteur] )

strRESIDENCE =  [Arche5_BatiCV.NomBATI] & vbcr & "(" & [LOG_TOTAL]  & "
log)"
strPROMOTEUR = [Arche5_BatiCV.Promoteur] & vbcr & "(" & [LOG_TOTAL]  & "
log)"
strETIQ = strRESIDENCE

If [Arche5_BatiCV.NomBATI]  = "" Then
strETIQ = strPROMOTEUR
end if

FindLabel = strETIQ
End Function
---------------------


Véronique VESTRI
Responsable SIG
Ville d'Echirolles (38)
v.vestri@texte-a-enlever.ville-echirolles.fr

Hors ligne

 

#4 Mon 27 March 2006 17:41

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: VB et Etiquettes

Bonjour,

Je pense que le problĂšme vient du test suivant :
If [Arche5_BatiCV.NomBATI]  = "" Then
...
end if

Essayez de compléter ce test avec la valeur " " (espace)
If [Arche5_BatiCV.NomBATI]  = "" or [Arche5_BatiCV.NomBATI]  = " " Then
...
end if

J'ai fait le test avec le code suivant, et cela m'a donné le résultat escompté :
-------------------------
Function FindLabel ( [Arche5_BatiCV.NomBATI],  [INSEE.LOG_TOTAL], [Arche5_BatiCV.Promoteur] )

strNomBati = [Arche5_BatiCV.NomBATI]
strPromoteur = [Arche5_BatiCV.Promoteur]
strLogTotal = [INSEE.LOG_TOTAL]

if strNomBati = "" or strNomBati = " " then
strLabel = strPromoteur & vbcr & "(" & strLogTotal  & " log)"
else
strLabel = strNomBati  & vbcr & "(" & strLogTotal  & " log)"
end if

  FindLabel = strLabel
End Function
-------------------------

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo