J'ai développé la routine suivante
- Code : Tout sélectionner
Sub Click(Source As Button)
Dim session As New NotesSession
Dim vuecompt As NotesView
Dim basecompt As NotesDatabase
Dim compteur As Integer
Dim prixtotal As Integer
Dim nomagent As Variant
Dim nom2 As Variant
Dim daterepas As Variant
Dim date_repas_supprime As Variant
Dim repasreserve As Variant
Dim chaine As String
Dim chaine2 As String
Dim doc As NotesDocument
Dim nDoc As NotesDocument
Dim erreur As Integer
'demande suppression repas
date_repas_supprime = Inputbox ("Date du repas à supprimer sous format JJ/MM/YYYY : ", "Suppression repas")
erreur = 0
'suppression du repas - s'assurer que la date est bonne : pas un samedi ou un dimanche
If Weekday(Cvdate(date_repas_supprime)) = 1 Then
Msgbox ("erreur : le jour choisi pour le repas supprimé est un dimanche")
erreur = 1
End If
If Weekday(Cvdate(date_repas_supprime)) = 7 Then
Msgbox ("erreur : le jour choisi pour le repas supprimé est un samedi")
erreur = 1
End If
'la date supprimée ne doit pas être un jour férié
Dim mvueferie As NotesView
Dim mjourferie As NotesDatabase
Dim repasdoc As NotesDocument
Dim datetravail As Variant
Set mjourferie = session.CurrentDatabase
Set mvueferie = mjourferie.GetView("jourferie")
Set repasdoc = mvueferie.GetFirstDocument
Do While (Not repasdoc Is Nothing)
datetravail = repasdoc.GetItemValue("AllHolidays")
If date_repas_supprime = Cstr(datetravail(0)) Then
Msgbox ("le jour choisi pour le repas supprimé est un jour férié")
erreur = 1
End If
Set repasdoc = mvueferie.GetNextDocument(repasdoc)
Loop
'la date supprimée doit être dans plus de 7 jours, pas avant
Dim datecourante As Variant
datecourante = Today()
datefuture = datecourante + 7
If Cdat(date_repas_supprime) >= Cdat(date_courante) And Cdat(date_repas_supprime) <= Cdat(datefuture) Then
Msgbox ("Repas trop proche : impossible de le supprimer")
erreur = 1
End If
If Cdat(date_repas_supprime) <= Cdat(datecourante) Then
Msgbox ("Repas déjà pris, impossible de le supprimer")
erreur = 1
End If
'suppression de la date du repas
If erreur = 0 Then
Dim workspace As New NotesUIWorkspace
Dim Agent As NotesUIDocument
Set Agent = workspace.CurrentDocument
Dim AgentMasque As Variant
AgentMasque = Agent.FieldGetText("NOM_AGENT")
Set basecompt = session.CurrentDatabase
Set vuecompt = basecompt.GetView("vrepasdumois")
Set doc = vuecompt.getFirstdocument()
nomagent = doc.GetItemValue("nomagentrepas")
daterepas = doc.GetItemValue("daterepas")
Dim str_date As Variant
Dim str_agent As Variant
erreur = 1
'suppression du repas
Do While (Not doc Is Nothing)
nomagent = doc.GetItemValue("nomagentrepas")
daterepas = doc.GetItemValue("daterepas")
str_date = Cstr (daterepas(0))
str_agent = Cstr (nomagent(0))
If AgentMasque = str_agent And Cdat(date_repas_supprime) = Cdat(str_date) Then
Set nextDoc = vuecompt.GetNextDocument(doc)
Call doc.Remove(True)
Set doc = nextDoc
erreur = 0
Else
'document suivant
Set doc = vuecompt.GetNextDocument(doc)
End If
Loop
End If
'suppression impossible
If erreur = 1 Then
Msgbox ("Repas non trouvé, impossible de le supprimer")
End If
End Sub
Elle permet de supprimer un enregistrement dans une liste intégrée de données (nom utilisateur, date).
Je sais que la fonction fonctionne comme je le désire, je supprime mon enregistrement, je sors du masque, je ré exécute le masque, et mon enregistrement a bien été supprimé
Mais il me manque une info pour que ce soit parfait :
je voudrais mettre à jour les données du masque SANS avoir à sortir du masque. Comment faire ?
D'avance, merci