Page 1 sur 1

Mise à jour de champ en LS

MessagePublié: 24 Jan 2012 à 14:50
par vilasuadi
Bonjour,

Je cherche à mettre à jour des champs quand l'utilisateur clic sur un bouton.
En suivant un tuto et des réponses du forum, j'ai réalisé ce code :
Code : Tout sélectionner
Sub Click(Source As Button)
   Dim Session As NotesSession
   Dim DB As NotesDatabase
   Dim Doc As Notesdocument
   Set Session = New NotesSession
   Set DB = Session.currentdatabase
   Set Doc = DB.CreateDocument
   Doc.dateGRH = Now()
   Doc.nomOperateur = Notessession.username   
End Sub


J'obtiens l'erreur : "variant does not contain an object". Je pense que l'initialisation de mon document est incorrect.
Je suis débutant en LS ( et même en dev Lotus en général).

Merci

Re: Mise à jour de champ en LS

MessagePublié: 24 Jan 2012 à 15:35
par Michael DELIQUE
salut

pas Notessession.username mais session.username

tu utilise le nom de la class au lieux du nom de l'objet !

Re: Mise à jour de champ en LS

MessagePublié: 24 Jan 2012 à 16:15
par vilasuadi
Plus de message d'erreur.
Un gros merci pour toutes les réponses que tu m'as donnée aujourd'hui.

La prochaine étape sera, je pense, de rafraichir le document pour afficher le mise à jour des champs.
Sur ce, bonne fin de journée et à demain.

Re: Mise à jour de champ en LS

MessagePublié: 24 Jan 2012 à 20:49
par roubech
là, tu créés un nouveau doc que tu n'enregistres pas, donc au final tu ne fait rien

si tu veux récupérer le doc courant, regarde session.documentcontext
mais si ton doc est en cours d'édition par l'utilisateur, éviter de mélanger des modifications par l'utilisateur en "frontal" et des modifications en même temps par du code en "dorsal" (backend), regarder les classes NotesUIWorkspace et NotesUIDocument ...

mais pour mettre à jour 2 champs comme ça en @formula, ca doit passer et plus abordable
mais comme tu dois te former, c'est interessant pour toi de voir les 2 et de comprendre la différence entre manipuler un document ouvert à l'écran et manipuler un ou plusieurs docs en "mode batch"

Re: Mise à jour de champ en LS

MessagePublié: 25 Jan 2012 à 09:48
par vilasuadi
Bonjour,

Je ne fais pas de modification dorsal et frontal en même temps. Pour valider un document, l'utilisateur concerné ne fait que cliquer sur le bouton pour enregistrer la date de validation et le nom du valideur. Les modifcations sur le document sont réalisées par une autre personne.

Avec ce code, je répond à mon besoin
Code : Tout sélectionner
Sub Click(Source As Button)
   Dim Session As NotesSession
   Dim UIWork As NotesUIWorkSpace
   Dim UIDoc As NotesUIDocument
   Dim s_user As String
   Dim s_date As String
   Set Session = New NotesSession
   Set Uiwork = New NotesUIWorkSpace
   Set UIDoc = UIWork.CurrentDocument   
   s_user = Session.UserName
   s_date = Now()
   Call UIDoc.FieldSetText("nomValideur",s_user)
   Call UIDoc.FieldSetText("dateValidation", s_date)   
End Sub


Si vous avez des remarques qui peuvent m'améliorer, je suis preneur.

Merci de votre aide

Re: Mise à jour de champ en LS

MessagePublié: 25 Jan 2012 à 10:25
par Michael DELIQUE
salut

déjà mettre une gestion des erreurs => viewforum.php?f=49

ensuite je sais pas si je vois tout le code, mais tu utilises des variables pour rien

avant

Code : Tout sélectionner
   s_user = Session.UserName
   s_date = Now()
   Call UIDoc.FieldSetText("nomValideur",s_user)
   Call UIDoc.FieldSetText("dateValidation", s_date)   


après
Code : Tout sélectionner
   Call UIDoc.FieldSetText("nomValideur", Session.UserName)
   Call UIDoc.FieldSetText("dateValidation", Now())   

Re: Mise à jour de champ en LS

MessagePublié: 25 Jan 2012 à 11:07
par vilasuadi
re,

J'ai modifié mon code mais je ne suis pas sur du positionnement de ma gestion d'erreur
Code : Tout sélectionner
Sub Click(Source As Button)
   On Error Goto ErrorHandler ' Si erreur aller à l'étiquette
   Dim Session As NotesSession
   Dim UIWork As NotesUIWorkSpace
   Dim UIDoc As NotesUIDocument
   Set Session = New NotesSession
   Set Uiwork = New NotesUIWorkSpace
   Set UIDoc = UIWork.CurrentDocument   
   Call UIDoc.FieldSetText("nomOperateur",Session.UserName)
   Call UIDoc.FieldSetText("dateGRH", Now())   
   Exit Sub   
ErrorHandler:
   Messagebox "Erreur:" & Error(Err), 0+64, "Erreur!!" ' Un avertissement
   Print "Erreur No. : " Err             ' Numéro du code d'erreur
   Print "Description : " Error(Err)     ' La description
   Print "Ligne No. : " Erl              ' La ligne ou se trouve l'erreur
   Resume Next                           ' Reprend le prog à l'instruction suivante
   Exit Sub                              ' Sort de la procédure
End Sub


Mon code est-il correct?

Merci

Re: Mise à jour de champ en LS

MessagePublié: 25 Jan 2012 à 11:13
par Michael DELIQUE
ouaip c'est mieux

pour la gestion des erreurs essais ça ya plus d'information

MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"

Re: Mise à jour de champ en LS

MessagePublié: 25 Jan 2012 à 11:21
par vilasuadi
OK, code mis à jour.

Code : Tout sélectionner
Sub Click(Source As Button)
   On Error Goto ErrorHandler ' Si erreur aller à l'étiquette
   Dim Session As NotesSession
   Dim UIWork As NotesUIWorkSpace
   Dim UIDoc As NotesUIDocument
   Set Session = New NotesSession
   Set Uiwork = New NotesUIWorkSpace
   Set UIDoc = UIWork.CurrentDocument   
   Call UIDoc.FieldSetText("nomOperateur",Session.UserName)
   Call UIDoc.FieldSetText("dateGRH", Now())   
   Exit Sub   
ErrorHandler:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Resume Next                           ' Reprend le prog à l'instruction suivante
   Exit Sub                              ' Sort de la procédure
End Sub


Merci

Re: Mise à jour de champ en LS

MessagePublié: 25 Jan 2012 à 11:23
par Michael DELIQUE
le resume next a la fin n'est pas necessaire. sauf si dans ton code tu gere ce genre de situation