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

 

Pied de page des forums

Powered by FluxBB