Mise à jour de champ en LS

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Mise à jour de champ en LS

Messagepar vilasuadi » 24 Jan 2012 à 14:50

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
vilasuadi
Premier posts
Premier posts
 
Message(s) : 29
Inscrit(e) le : 20 Jan 2012 à 10:17

Re: Mise à jour de champ en LS

Messagepar Michael DELIQUE » 24 Jan 2012 à 15:35

salut

pas Notessession.username mais session.username

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

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Mise à jour de champ en LS

Messagepar vilasuadi » 24 Jan 2012 à 16:15

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.
vilasuadi
Premier posts
Premier posts
 
Message(s) : 29
Inscrit(e) le : 20 Jan 2012 à 10:17

Re: Mise à jour de champ en LS

Messagepar roubech » 24 Jan 2012 à 20:49

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"
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Mise à jour de champ en LS

Messagepar vilasuadi » 25 Jan 2012 à 09:48

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
vilasuadi
Premier posts
Premier posts
 
Message(s) : 29
Inscrit(e) le : 20 Jan 2012 à 10:17

Re: Mise à jour de champ en LS

Messagepar Michael DELIQUE » 25 Jan 2012 à 10:25

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())   
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Mise à jour de champ en LS

Messagepar vilasuadi » 25 Jan 2012 à 11:07

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
vilasuadi
Premier posts
Premier posts
 
Message(s) : 29
Inscrit(e) le : 20 Jan 2012 à 10:17

Re: Mise à jour de champ en LS

Messagepar Michael DELIQUE » 25 Jan 2012 à 11:13

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 !"
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Mise à jour de champ en LS

Messagepar vilasuadi » 25 Jan 2012 à 11:21

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
vilasuadi
Premier posts
Premier posts
 
Message(s) : 29
Inscrit(e) le : 20 Jan 2012 à 10:17

Re: Mise à jour de champ en LS

Messagepar Michael DELIQUE » 25 Jan 2012 à 11:23

le resume next a la fin n'est pas necessaire. sauf si dans ton code tu gere ce genre de situation
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers Développement