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

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

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

Messagepar ALAG » 10 Mars 2011 à 15:31

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
ALAG
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 8
Inscrit(e) le : 10 Mars 2011 à 11:49

Messagepar Michel Nico » 10 Mars 2011 à 15:41

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")
Michel Nico
Posteur néophyte
Posteur néophyte
 
Message(s) : 60
Inscrit(e) le : 18 Jan 2011 à 17:19
Localisation : Toulouse

Messagepar LSong » 10 Mars 2011 à 15:54

@contains (@implode (mon champs; "/"); "le truc que je cherche")
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar ALAG » 10 Mars 2011 à 16:23

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
ALAG
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 8
Inscrit(e) le : 10 Mars 2011 à 11:49

Messagepar Michael DELIQUE » 10 Mars 2011 à 16:49

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")
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar ALAG » 11 Mars 2011 à 09:43

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
ALAG
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 8
Inscrit(e) le : 10 Mars 2011 à 11:49

Messagepar Michael DELIQUE » 11 Mars 2011 à 09:59

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=")
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar ALAG » 11 Mars 2011 à 10:11

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 ????
ALAG
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 8
Inscrit(e) le : 10 Mars 2011 à 11:49

Messagepar Michael DELIQUE » 11 Mars 2011 à 10:48

re

ok, essais contains "@"
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar ALAG » 11 Mars 2011 à 11:04

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 ...
ALAG
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 8
Inscrit(e) le : 10 Mars 2011 à 11:49

Messagepar Michael DELIQUE » 11 Mars 2011 à 11:08

seule solution

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

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar ALAG » 11 Mars 2011 à 11:56

Merci bcp pour ton aide. Je vais essayer cela.
ALAG
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 8
Inscrit(e) le : 10 Mars 2011 à 11:49

Messagepar roubech » 17 Mars 2011 à 00:05

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
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille


Retour vers Développement