#1 Thu 23 April 2009 11:31
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
[MI 8.5] Affichage d'etiquette conditionné
Est-il possible de conditionné l'affichage d'étiquette?
En fait je dispose d'un réseau hydro sur lequel je voudrais afficher la longueur des troncons. Cependant, je souhaite que cette longueur ne s'affiche que sur les troncons dont le champ 'année' est rempli. Est-ce possible?
N'ayant pas trouvé de solution, j'ai tenté de créer un champ dans lequel la longueur des tronçon n'est renseigné que pour ceux dont le champ 'année' est rempli.
Ma pratique de MapInfo commençant à dater, je ne me souviens plus comment procéder.
Voici ce que j'ai tenté sous MapBasic:
UPDATE segment SET Long=Longueur_m_segment WHERE Annee <> ""
Msg : "impossible de realiser cette operation sur le champ Annee"
Merci d'avance,
Greg
Hors ligne
#2 Thu 23 April 2009 11:43
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MI 8.5] Affichage d'etiquette conditionné
Salut Greg,
ton champs Année est en Texte ou en numérique?
A+
Joël
Hors ligne
#3 Thu 23 April 2009 11:45
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [MI 8.5] Affichage d'etiquette conditionné
En texte
Hors ligne
#4 Thu 23 April 2009 12:24
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MI 8.5] Affichage d'etiquette conditionné
As tu essayé:
UPDATE segment SET Long=Longueur_m_segment WHERE Annee not like ""
A+
Joël
Hors ligne
#5 Thu 23 April 2009 13:00
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MI 8.5] Affichage d'etiquette conditionné
Bonjour
- Update met a jour toute la table, sauf si on introduit LA SEULE CONDITION ADMISSIBLE Where RowID=xxxxx
- il faut donc faire une sélection "toto" sur la condition de votre choix PUIS faire porter le Update sur toto, sans Where...
- dans votre cas, tant qu'à faire la sélection...ajoutez toto par le contrôle des couches et mettez les étiquettes voulues à toto
Hors ligne
#6 Thu 23 April 2009 13:45
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [MI 8.5] Affichage d'etiquette conditionné
UPDATE segment SET Long=Longueur_m_segment WHERE Annee not like ""
Effectivement, cette condition ne fonctionne pas non plus....puisque seul Where RowID=xxxxx est admis par Update
ajoutez toto par le contrôle des couches et mettez les étiquettes voulues à toto
Merci du conseil, j'étais en train de me compliquer la vie pour pas grand chose ...
Merci à vous,
@+
Greg
Dernière modification par greg-gwened (Thu 23 April 2009 13:45)
Hors ligne
#7 Thu 23 April 2009 13:59
- matieu_dumo
- Participant actif
- Lieu: Questembert
- Date d'inscription: 15 Mar 2006
- Messages: 135
- Site web
Re: [MI 8.5] Affichage d'etiquette conditionné
Bonjour,
je fonctionne de manière différente pour l'affichage conditionné d'étiquettes sur une couche. Le principe étant de créer une sélection des objets dont je souhaite leur attribuer une étiquette, dans le cas précis :
Code:
select * from réseau hydro where Annee not like "" into label_hydro
ajouter la couche label_hydro dans le contrôle des couches, jouer avec la superposition si nécessaire (généralement en dessous de la couche réseau hydro) et définir l'étiquette souhaitée.
Hors ligne
#8 Thu 23 April 2009 14:37
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [MI 8.5] Affichage d'etiquette conditionné
Oui, c'est justement la méthode proposé par Maurice ... avec toto au lieu de label_hydro
Hors ligne
#9 Thu 23 April 2009 14:45
- matieu_dumo
- Participant actif
- Lieu: Questembert
- Date d'inscription: 15 Mar 2006
- Messages: 135
- Site web
Re: [MI 8.5] Affichage d'etiquette conditionné
Effectivement, j'ai encore survolé le post trop rapidement
Hors ligne
#10 Thu 23 April 2009 15:04
- jasper
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 7 Mar 2007
- Messages: 44
Re: [MI 8.5] Affichage d'etiquette conditionné
Bonjour à tous...
Une "petite" astuce, pour réellement créer une étiquette conditionnelle (sans ajout de colonnes ou de couches dans le ctrle des couches) : utiliser une expression d'étiquette...
Voici un exemple concret, à saisir dans l'expression de l'étiquette :
Left$(Str$(longueur_m),(Annee not like "")*254)
La logique est la suivante : si le critére retrourne True (c'est à dire 1), on affiche dans l'étiquette les 254 caractères de la colonne longueur ; si le critère retourne False (c'est à dire 0) on affiche 0 caractères de la colonne longueur...
Cordialement,
Jasper.
Hors ligne
#11 Thu 23 April 2009 15:55
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MI 8.5] Affichage d'etiquette conditionné
Très séduisant...mais ça ne marche pas (même après correction de la faute de frappe Lef$ pour Left$, corrigée dans le post)
Je crains que ce soit FALSE ou TRUE qui soit retourné, et pas 0 ou 1...
Hors ligne
#12 Thu 23 April 2009 16:06
- jasper
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 7 Mar 2007
- Messages: 44
Re: [MI 8.5] Affichage d'etiquette conditionné
Effectivement, j'ai oublié de convertir le True/False en entier dans mon précédent post...
Left$(Str$(longueur_m),Int(Annee not like "")*254)
Dernière modification par jasper (Thu 23 April 2009 16:08)
Hors ligne
#13 Thu 23 April 2009 16:17
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MI 8.5] Affichage d'etiquette conditionné
Bien vu !! Je venais de trouver "le truc"...
Astuce à noter soigneusement
On peut utiliser les deux syntaxes, équivalentes:
Left$(Str$(longueur_m), Int(not Annee like "")*254) (je crois que MI "préfère" le not au début)
ou (plus clair ??):
Left$(Str$(longueur_m), Int(Annee <> "")*254)
Hors ligne
#14 Thu 23 April 2009 19:49
- hanczyk
- Participant assidu
- Lieu: Châlons-en-Champagne
- Date d'inscription: 21 Apr 2006
- Messages: 596
Re: [MI 8.5] Affichage d'etiquette conditionné
Bonjour,
Left$(Str$(longueur_m), Int(not Annee like "")*254) (je crois que MI "préfère" le not au début)
ne marche pas :
Trouvé [254] pendant la recherche de [)]. Liste d'argument absente ou vide Sous-clause d'étiquette non valide ou incomplète
ou (plus clair ??): Left$(Str$(longueur_m), Int(Annee <> "")*254)
marche !
Pourquoi ? MI7.8
@+ jmh
Jean-Marc Hanczyk
Hors ligne
#15 Thu 23 April 2009 20:59
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MI 8.5] Affichage d'etiquette conditionné
...Pourquoi ? MI7.8
Je crains bien que oui:
- passé dans la FMB, Left$(Str$(longueur_m), Int(not Annee like "")*254) marche
- passé dans l'interface, on obtient ton message d'erreur et l'instruction s'inscrit dans la FMB
Left$(Str$(longueur_m), Int(not Annee like "")254*254)
Pourquoi cet ajout de 254... bug !!
Hors ligne
#16 Fri 24 April 2009 11:55
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [MI 8.5] Affichage d'etiquette conditionné
Merci à tous : problème résolu ... qui en soulève d'autres
Dernière modification par greg-gwened (Fri 24 April 2009 11:55)
Hors ligne