Page 1 sur 1

D'un champ multivalué à un autre...

MessagePublié: 11 Mai 2010 à 16:03
par jeulin
Bonjour à tous,

me revoilà avec un question sans doute simpliste pour ne pas dire "simplète" : je veux copier par LS des informations d'un champ multivalué situé dans un document dans un autre champ multivalué dans un autre document, tout cela en programmation dorsale.

Puis-je le faire directement ou dois-je absolument passer "item" par "item" ?

"Item by item", cela marche bien sur le plan des données brutes mais je n'arrive pas à "rafraîchir" le document, quoique je fasse (ou plutôt que je sache faire) et dans ma vue de réception, le nouveau document n'est pas "compris" comme ayant un champ multivalué... Il faut que je rafraîchisse manuellement avec "@Command([ToolsRefreshSelectedDocs])".

Je ne sais pas si je suis clair ?!?

Merci d'avance de vos suggessions !

MessagePublié: 11 Mai 2010 à 16:11
par Michael DELIQUE
salut

montre nous ton code

MessagePublié: 12 Mai 2010 à 07:52
par jeulin
Bonjour,

mon code est simple :

Code : Tout sélectionner
Set docRif = viewRif.GetDocumentByKey (parametre.value)
If Not(docRif Is Nothing) Then
     valeurRif=""
     Set itemRif = docRif.GetFirstItem( "RifFullNameNotes" )
     Forall vtemp In itemRif.Values
          If valeurRif = "" Then
               valeurRif = vtemp
          Else
               valeurRif = valeurRif + "," + vtemp     <= "," ou ";" : idem
          End If
     End Forall
     Call doc.replaceitemvalue("RifFullNameNotes", valeurRif)
Else
     Call doc.replaceitemvalue("RifFullNameNotes", "Nom du RIF inconnu")
End If
Call doc.computewithform(True,True)   <= avec ou sans : idem
Call doc.save(True,True)


Tout se remet "d'équerre" si je passe la commande de rafraîchissement...

Il y a un "schtuk" mais je ne le vois pas... :(

MessagePublié: 12 Mai 2010 à 08:17
par Michael DELIQUE
salut

aucun interet de la boucle pour concaténer les valeur du champ source, ton probleme viens de là.

tu passe une chaine il faut donc réafficher le document pour qu'il interprète la chaine et l'explode en un tableau

pour ma part je ferais comme ça :
Code : Tout sélectionner
   Set docRif = viewRif.GetDocumentByKey (parametre.value)
   If Not(docRif Is Nothing) Then
      Call doc.replaceitemvalue("RifFullNameNotes", call docRif.getitemValue("RifFullNameNotes"))
   Else
      Call doc.replaceitemvalue("RifFullNameNotes", "Nom du RIF inconnu")
   End If
   Call doc.computewithform(True,True)   <= avec ou sans : idem
   Call doc.save(True,True)

MessagePublié: 12 Mai 2010 à 13:24
par jeulin
Thank you very much, Sir !

Cela marche parfaitement... (sous réserve d'enlever le petit "call" égaré là où il ne doit pas être). :D

Merci et bon jeudi de l'Ascension à tous !