#1 Tue 16 November 2004 13:16
- Marie BOISARD
- Invité
etiquette expression
bonjour
petit soucis!!!
Voila je vous explique, pb d'affichage d'etiquettes. J'ai une table avec un
champs id 1 a 100 je voudrais afficher uniquement les etiquettes 1 a 31 je
ne trouve pas comment il faut faire. L'aide de mapinfo dans ce domaine est
assez limite.
Marie B.
#2 Tue 16 November 2004 13:16
- ROBIN Thomas
- Invité
Re: etiquette expression
Bonjour
Il faut que tu sélectionne les entitées correspondant à ta requête et
que tu crée avec cette sélection une seconde table :
SELECT * FROM ma_table WHERE ma_table.ID
Ainsi tu enregistres ta sélection dans une nouvelle table et pour
afficher tes étiquettes tu n'utilises que cette table tout en sachant
que tu pourra qd même superposer le reste de tes entitées dans ta carte
...
Cordialement
Thomas
#3 Tue 16 November 2004 14:36
- Geo Maumet
- Invité
Re: etiquette expression
Bonjour
Si vous voulez pas passer par une selection, vous pouvez essayer un truc sympa
dans expression de l'etiquette
Left(Str(ChampNum), Int(ChampNum/31)*254)
J'explique
Le divise mon champ (ChampNum) par la valeur max a afficher, j'obtiens 0.xxx
pour les valeurs inf a 31 et 1.xxx ou plus pour les valeurs sup
Je ne prend que la partie entiere du decimale precedent, 0, 1,2,...
Je multiplie la valeur par 254 (je vois grand) j'obtients donc toujours 0 pour
les inf a 31 et une valeur d'au moins 254 pour les autres
Et je prend les X caracteres de gauche de la valeur transformee en chaine (Str)
donc 0 pour les valeurs inf a 31.
Voila, c'est du tordu
Salut
Laurent
#4 Tue 16 November 2004 09:00
- Jacques Paris
- Invité
Re: etiquette expression
La formule donnee par Laurent marche dans l'autre sens que celui demande,
elle est vide pour les valeurs inferieures a 31, mais elle m'a lance sur une
piste. Autre mauvaise interpretation possible, je l'ai faite aussi, il n'est
pas specifie que les etiquettes a faire paraitre sont le contenu de la
colonne champs id qui sert de base a la selection
En faisant donc l'hypothese reductrice et probablement fausse que les
etiquettes sont le contenu de champs id , j'ai voulu voir comment on
pourrait proceder pour un affichage selectif. Il est impossible dans les
formules d'expression que l'on trouve dans plusieurs fenetres de menu (tout
comme dans la fenetre MapBasic) d'utiliser des enonces conditionnels. Par
contre les fonctions Minimum et Maximum peuvent remplir en partie ces
fonctionnalites. Voici une facon tres generale de proceder
En dimensionnant comme integer
champnum comme la variable condition d'affichage
Maxval comme la limite superieure des valeurs a afficher (si maxval=31 31
sera affiche, pas 32)
Minval comme la limite inferieure ... (si minval=15, 15 sera affiche, pas
14)
Si une valeur maximale est donnee
left(str(champnum), int(maximum((maxval+1-champnum),0) )*12)
si une valeur minimael est donnee
left(str(champnum), int(maximum((champnum -minval+1),0) )*12 )
et si les deux le sont
left(str(champnum), minimum(int(maximum((maxval+1-champnum),0) )*12,
int(maximum((champnum -minval+1),0) )*12 ))
Quelques petites notes
1- j'ai utilise 12 (la taille du plus grand nombre en entier) plutot que 254
car pour de grandes valeurs de ChampNum le resultat du produit depasse
certaines limites internes. L'ideal serait de travailler avec la vraie
longueur et pour cela remplacer 12 par len(str(champnum))
2- si les limites specifiees sont exclues de la gamme des valeurs
acceptables (si maxval=31, 31 ne sera pas affiche), il suffit de retirer
le +1 dans les diverses equations.
3- J'ai teste les formules pour les valeurs de champnum smallint
(