Page 1 sur 2

Modifier valeur d'un champ date en LS

MessagePublié: 23 Juin 2011 à 13:31
par boz871
Bonjour

J'ai un bouton dans une vue qui exécute un certain nombre d'action LS (mailing word à partir des données de chaque document de la vue notamment) et en fin de script je souhaiterais modifier un champ date dans chaque document qui contiendrait la date du jour (en l'occurence celle du mailing)

C'est quelque chose que je fais trés bien en FORMULE mais la je seche.


Merci de votre aide

Frantz

MessagePublié: 23 Juin 2011 à 13:38
par Michael DELIQUE
salut

regarde dans l'aide en ligne l'objet Notesdatetime

MessagePublié: 23 Juin 2011 à 13:46
par roubech
c'est quoi qui te bloque ? le test sur la date ou la modification du champ ?
au pire dis nous ce que tu verai en @Formule si tu sont et on transpose

MessagePublié: 23 Juin 2011 à 13:55
par boz871
en fait je viens de trouver

je faisais un call uidoc.fieldsettext("mon champ date",today) et ca plantait

Je fais maintenant un simple call uidoc.fieldsettext("mon champ date",cstr(today)) et ca passe

Merci à vous

MessagePublié: 23 Juin 2011 à 13:59
par roubech
ca me surprend de te voir manipumer des uidoc sur un traitement qui parcours plusieurs docs d'une vue. A priori, tu ne les ouvres pas à l'écran, donc pas besoin de passer par uidoc. Tu els ouvres juste en mémoire, donc passer par NotesDocument est plus pertinent et te permet en plus de garder le type date au lieu d'être obligé là de passer par du texte

MessagePublié: 23 Juin 2011 à 14:03
par boz871
effectivement je ne les ouvrais pas à l'écran pour mon mailing mais je n'arrivais pas à modifier ce champ donc je suis passer par ceci

Set uidoc= ws.EditDocument
Call uidoc.FieldSetText("date_relance_renouv",Cstr(Today))
Call uidoc.Save
Call uidoc.Close(True)

Mais si tu as une solution pour moi qui m'evite de charger les documents dans le ws je suis preneur

MessagePublié: 23 Juin 2011 à 14:10
par boz871
Quelle est la syntaxe pour affecter une valeur à un champ dans une classe notesdocument stp ?

MessagePublié: 23 Juin 2011 à 14:15
par Michael DELIQUE
re,

NotesDocument.replaceItemValue("MonChamp","mavaleur")

MessagePublié: 23 Juin 2011 à 14:21
par boz871
Je viens de remplacer mes 4 lignes par ceci

Set item=doc.ReplaceItemValue("date_relance_renouv",Today)

mais la valeur du champ ne change pas

MessagePublié: 23 Juin 2011 à 14:41
par boz871
EDIT

Oups avec 1 call doc.save derrière c'est mieux

Merci de ton aide

MessagePublié: 23 Juin 2011 à 14:49
par Michael DELIQUE
re,


Set item=doc.ReplaceItemValue("date_relance_renouv",Today)


pourquoi le 'set item' ? il ne sert a rien !

MessagePublié: 23 Juin 2011 à 15:24
par boz871
oui c'est exact

doc.replaceitemvalue "date_relance_renouv", today suffit

MessagePublié: 23 Juin 2011 à 15:30
par boz871
j'ai encore un probleme si tu peux m'eclairer

je fais cela
doc.ReplaceItemValue "date_relance_renouv",Today
Call doc.Save(False,False)

et aprés je lis le doc suivant
Set doc = view.GetNextDocument(doc)

j'ai une erreur entrée absente de l'index (nom de ma vue)

si j'enleve le save ca fonctionne

edit :
petite précision le fait de saisir une date dans ce champ fait disparaitre mon document de cette vue. Faut il que je recherche toujours le 1er document de la vue

MessagePublié: 23 Juin 2011 à 15:35
par Michael DELIQUE
re,

met un call devant c'est mieux

ta vue n'aurrai pas la date en select ?

ça veux dire que le document ne fait plus parti de la vue et que donc on ne pont plus acceder au suivant

pour passer ça

Code : Tout sélectionner
set doc = view.getfirstdocument
while not doc is nothing then
set doc2 = doc
set Doc = view.getNextDocument (doc)

call doc2.replace...
call doc2.save...
set doc = nothing

wend

MessagePublié: 23 Juin 2011 à 15:39
par boz871
oui c'est ca je relis le 1er doc

set doc=view.getfirstdocument et ca fonctionne

La date est effectivement un des critères de mon SELECT

encore merci

EDIT

ma methode boucle si le document ne rentre pas dans mes critères et donc si le document n'est pas modifié. Il reste donc dans ma vue et je reprends toujours celui la

J'ai appliqué le ceode de Michael et la ca fonctionne dans les 2 cas