#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
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
---------------------
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