Page 1 sur 1

Recherche d'une chaîne dans un champ multi-valeurs

MessagePublié: 10 Mars 2011 à 15:31
par ALAG
Comment faire pour rechercher par des fonctions @ une chaîne de caractères dans une champ ayant plusieurs valeurs ?
La fonction @contains serait bien mais elle fait la recherchedans une seule valeur

MessagePublié: 10 Mars 2011 à 15:41
par Michel Nico
regarde dans l'aide de @contains :
This example returns 1 to indicate that the single text item in one parameter is present in the text list that makes up the other parameter.
@Contains("Tom";"Tom":"Dick":"Harry")

MessagePublié: 10 Mars 2011 à 15:54
par LSong
@contains (@implode (mon champs; "/"); "le truc que je cherche")

MessagePublié: 10 Mars 2011 à 16:23
par ALAG
Merci pour votre aide.
En fait ce que je veux faire est un peu plus compliqué. Il faut que je teste si dans une donnée multivaleurs, je retrouve la même chaîne de caractères dans chacune des valeurs
EX : 'TOM':'TOMATE':'TOMY';'TO' ==> OK
'TAM':'TOMATE':'TOMY';'TO' ==> KO

MessagePublié: 10 Mars 2011 à 16:49
par Michael DELIQUE
salut

ce genre formule fonctionnera

Code : Tout sélectionner
t1 := 'TOM':'TOMATE':'TOMY':'TO';
t2 := 'TOM':'TOMATE':'TOMY';
t11 := '*'+t1+'*';
t22 := '*'+t2+'*';

@If(@Contains(t12;'TO');"OK";"BAD")+@NewLine+
@If(@Contains(t22;'TO');"OK";"BAD")

MessagePublié: 11 Mars 2011 à 09:43
par ALAG
Je débute et je ne comprends pas pourquoi le fait de concaténer la liste 1 avec des étoiles, change qqe chose dans le test. Désolée.

Dans ce que je veux faire, la liste est une liste d'adresses de destinatataires (champ SendTo dans form Memo de la messagerie). Je peux avoir des adresses internes et des adresses externes. Si j'ai au - 1 adresse externe, je fais une action, si je n'ai que des adresses internes, il y a une autre action.
Les adresses internes sont du type 'CN=.../O=...'.
Je pensais faire ce test : si chaque valeur contient 'CN=' ==> que des adresses internes donc action 1
sinon action 2.

Est-ce qu'il est possible de faire cela ? y a t-il un moyen des tester des adresses internes ou externes dans le champ SendTo ?

Merci bcp pour votre aide

MessagePublié: 11 Mars 2011 à 09:59
par Michael DELIQUE
re,

c'est quoi ça => Si j'ai au - 1 adresse externe,

sinon pour mieux comprendre passe ça dans une texte calculé

t1 := 'TOM':'TOMATE':'TOMY':'TO';
t2 := 'TOM':'TOMATE':'TOMY';
t11 := '*'+t1+'*';
t22 := '*'+t2+'*';

t11+@newLine+t22


tu comprendra

pour ton CN= essais un @contains("CN=")

MessagePublié: 11 Mars 2011 à 10:11
par ALAG
Si par ex le champ SendTo que je teste, contient :
- 'CN=adresse1/O=...':'CN=adresse2/O=...':'CN=adresse3/O=...' ==> il ne s'agit que des adresses internes car TOUTES les valeurs ont 'CN='

- 'CN=adresse1/O=...':'adresse2@...':'CN=adresse3/O=...' ==> la 2ème valeur ne contient pas 'CN=' donc c'est une adresse externe.

Si je prends la fonction @Contain('CN='), elle retournera TRUE dans les 2 cas. Ca ne va donc pas.

Je ne sais pas si je suis plus claire ????

MessagePublié: 11 Mars 2011 à 10:48
par Michael DELIQUE
re

ok, essais contains "@"

MessagePublié: 11 Mars 2011 à 11:04
par ALAG
Je ne peux pas tester sur '@' car dans les adresses internes, j'ai aussi ce caractère :'CN=adresse1/O=...@...'

@Contain regarde si il trouve la chaine dans la liste. Il faudrait que je trouve une solution pour vérifier que la chaine est dans ttes les valeurs de la liste.
A moins de savoir comment tester si une adresse appartient à un carnet d'adresses (donc adresse interne). Est-ce possible ?
Et tt ça doit se faire avec des formules, pas en script !!!

Ca se complique ...

MessagePublié: 11 Mars 2011 à 11:08
par Michael DELIQUE
seule solution

tester chaque valeur indépendement via une boucle @for et là le "CN=" fonctionnera

MessagePublié: 11 Mars 2011 à 11:56
par ALAG
Merci bcp pour ton aide. Je vais essayer cela.

MessagePublié: 17 Mars 2011 à 00:05
par roubech
je ne vois pas comment tester la presence d'un élément vide dans une liste du coup petite bidouille en ajountant CN=* ...
[syntax="LotusScript"]@Contains(@RightBack("CN=*"+SendTo; "CN="); "*")[/syntax]

penser au cas où l'émetteur saisi l'adresse d'un internet au format internet
penser également au cas où l'émetteur choisit un groupe