Page 1 sur 1
Mise à jour de champ en LS

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
25 Jan 2012 à 10:25
par Michael DELIQUE
salut
déjà mettre une gestion des erreurs =>
viewforum.php?f=49ensuite 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

Publié:
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

Publié:
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

Publié:
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

Publié:
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