Vérifier un champ de type Texte (multivalué)

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

Vérifier un champ de type Texte (multivalué)

Messagepar lebanner » 24 Mars 2010 à 08:47

Bonjour à tous,

J'ai une boucle qui me permet de récupérer des infos de SAP, j'affecte toutes les valeurs trouvées dans un champ Texte (autorisant de multiples valeurs avec une retour à la ligne pour distinguer les valeurs)

Les valeurs s'insérent correctement dans le champ mais le problème c'est que par moment j'ai plusieurs fois la même valeur.

dans mon champ texte, je peux trouver :
12
456
54
12
12

Comment faire pour ne pas avoir de doublon dans ce champ ? comment faire un contrôle sur les valeurs déjà renseignées ?

Voici le code LS qui me permet d'affecter les valeurs dans le champ :
Code : Tout sélectionner
For ...               
   recupval = t_stockdata.Rows(nbdata).BATCH
   Call uidoc.FieldAppendText("monchamp", recupval & Chr(10) )

Next


Je ne sais pas si je suis clair.

Merci d'avance

Cordialement
Dernière édition par lebanner le 26 Mars 2010 à 08:39, édité 2 fois.
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar Michael DELIQUE » 24 Mars 2010 à 08:51

salut

plusieurs solutions :

- tu colles ton recupval dans une liste genre maliste(recupval) = recupval ça va éliminer automatiquement les doublon et ensuite tu passe la liste dans ton champ

- tu concatene tes recupval dans un une variable string et avant de concaténé tu fais un controle avec instr()

- tu passe par un notesitem qui a laméthode 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 lebanner » 24 Mars 2010 à 09:32

Bonjour Michael,

Voici ce que j'ai fais :
Code : Tout sélectionner
Dim recuplist List As String
For ....
...
recupval = t_stockdata.Rows(nbdata).BATCH
recuplist(recupval) = recupval
....
Next


J'ai bien toutes les valeurs dans la liste (sans les doublons)

Pour ajouter cette liste dans le champ j'ai fais :
Code : Tout sélectionner
Call uidoc.FieldAppendText("monchamp", recuplist(recupval))


Il ne me prend qu'une seule valeur dans le champ Text multivalué

Merci d'avance

Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar Michael DELIQUE » 24 Mars 2010 à 10:12

oui pour 2 raisons

1 uidoc.fieldappendtext gere une chaine
2 avec les listes il faut boucler sur la liste pour renseigné les valeurs
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 lebanner » 24 Mars 2010 à 10:26

Michael DELIQUE a écrit:oui pour 2 raisons

1 uidoc.fieldappendtext gere une chaine
2 avec les listes il faut boucler sur la liste pour renseigné les valeurs


OK, je vois pourquoi du coup.

Par contre, comment je peux boucler sur cette liste sachant que je ne peux pas utiliser recuplist(0) ou recuplist(1)

voici ce que j'obtiens en debug

Merci

Je manque cruellement de café !!
Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar Michael DELIQUE » 24 Mars 2010 à 10:32

bon codé vite fait voila ce que je ferais

Code : Tout sélectionner
   For ...             
   recupval = t_stockdata.Rows(nbdata).BATCH
   If Trim(transfert) = "" Then
      Transfert = recupval
   Else
      If Instr(transfert,recupval)=0 Then
         Transfert = Transfert +Chr(10)+ recupval
      End If
   End If
   
Next

Call uidoc.FieldAppendText("monchamp", Tranfert )
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 lebanner » 24 Mars 2010 à 10:51

OK, merci beaucoup

Après plusieurs tests, cela fonctionne nickel

Merci Michael

Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar lebanner » 26 Mars 2010 à 08:39

Michael DELIQUE a écrit:bon codé vite fait voila ce que je ferais

Code : Tout sélectionner
   For ...             
   recupval = t_stockdata.Rows(nbdata).BATCH
   If Trim(transfert) = "" Then
      Transfert = recupval
   Else
      If Instr(transfert,recupval)=0 Then
         Transfert = Transfert +Chr(10)+ recupval
      End If
   End If
   
Next

Call uidoc.FieldAppendText("monchamp", Tranfert )


Ci dessous un exemple des éléments que je récupére dans Transfert.

Si recupval = "12", il me dit que la valeur existe déjà alors qu'il n'y a aucune chaine que correspond à 12. Il trouve le 12 dans la chaine "X4120D"

J'ai testé avec Iselement, avec arraygetindex, avec Strcompare mais rien n'y fait, je ne trouve pas le moyen de comparer la valeur récupérée à la chaine existante dans Transfert.

Comment faire en sorte qu'il arrive à comparer les valeurs en prenant en compte le Chr(10) dans Transfert

J'espère avoir été clair.

Merci

Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar Michael DELIQUE » 26 Mars 2010 à 08:44

salut

essais

If Instr(transfert,recupval+chr(10))=0 Then
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 lebanner » 26 Mars 2010 à 09:12

Je suis désolé, j'ai cherché à faire autrement alors que la solution est assez simple.

Merci

Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille


Retour vers Développement

cron