Page 1 sur 1

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

MessagePublié: 24 Mars 2010 à 08:47
par lebanner
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

MessagePublié: 24 Mars 2010 à 08:51
par Michael DELIQUE
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

MessagePublié: 24 Mars 2010 à 09:32
par lebanner
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

MessagePublié: 24 Mars 2010 à 10:12
par Michael DELIQUE
oui pour 2 raisons

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

MessagePublié: 24 Mars 2010 à 10:26
par lebanner
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

MessagePublié: 24 Mars 2010 à 10:32
par Michael DELIQUE
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 )

MessagePublié: 24 Mars 2010 à 10:51
par lebanner
OK, merci beaucoup

Après plusieurs tests, cela fonctionne nickel

Merci Michael

Cordialement

MessagePublié: 26 Mars 2010 à 08:39
par lebanner
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

MessagePublié: 26 Mars 2010 à 08:44
par Michael DELIQUE
salut

essais

If Instr(transfert,recupval+chr(10))=0 Then

MessagePublié: 26 Mars 2010 à 09:12
par lebanner
Je suis désolé, j'ai cherché à faire autrement alors que la solution est assez simple.

Merci

Cordialement