[Résolu] Erreur code dans QueryClose SMasque

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

[Résolu] Erreur code dans QueryClose SMasque

Messagepar camilleB » 27 Nov 2012 à 22:26

Bonjour, j'aimerai avoir un coup d’œil sur ce code!
En gros: j'affiche un sous masqueB dans un dialogBox à partir d'un bouton sur un masqueA.
Code : Tout sélectionner
Call ws.DialogBox ("sbfDemandeB", True, True, False, True, True, False, "Demande de prise en charge",doc, False, False, True )

Ensuite dans le QueryClose du sbfDemandeB j'ai un code qui permet de créer un sousDossier et d'envoyer un mail avec un lien base vers le sousDossier.
Comme le sous masque s'affiche dans dialogBox je ne peux pas debuger le code!

Mais apparemment l'erreur provient au niveau du SendMailMetiers(db, docsousdossier,vdestinataires)
Je vous passe l'ensemble du code, toutes les variables sont déclarés!
Code : Tout sélectionner
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
   On Error Goto ErrorHandler
   Dim ws As New NotesUIWorkspace
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim docSousDossier As NotesDocument
   Dim ParentDoc As NotesDocument
   Dim nUsername As NotesName
   Dim namValue As NotesName
   Dim vDestinataires As Variant
   Dim sCommonUsername As String, sDateTime As String, sAction As String
   Dim rtItemBodyMetiers As NotesRichTextItem
   Dim ParentUIdoc As NotesUIDocument
   Set db = session.CurrentDatabase
   Set doc = Source.document
   If Not Source.DialogBoxCanceled Then
      Call source.Refresh(True)
      Set itemHistory = doc.GetFirstItem("History")
      sCommonUsername = session.CommonUserName
      sDateTime = { le } + Cstr(Today) + { à } + Time$
      sExpediteur = db.Title
      
      'Contrôle des champs
      
      '
      '
      
      'Création d'un document sous-dossier + notification pour chaque destinataire

      
      vDestinataires = Fulltrim(doc.GetItemValue("Destinataires"))
      
      If (Trim(Source.FieldGetText("Destinataires")) <> "" ) Then
         
         sBodyText = ""
         
         
         Call TraiterNotification(doc,rtItemBodyMetiers)
         
      'Sélection
         Forall value In vDestinataires
            If value = "" Then Exit Forall
            valueTxt = value
            Set namValue = session.CreateName(valueTxt)
            Set docSousDossier = db.CreateDocument
            docSousDossier.Form = "SbfDossierMetiers"
            iSousDossier = iSousDossier + 1
            Call docSousDossier.ReplaceItemValue("Client", doc.GetItemValue("Client"))
            Call docSousDossier.MakeResponse(doc)
            Call docSousDossier.ComputeWithForm(True, False)
            Call docSousDossier.Save(True,False)      
            Call doc.Save(True,False)
         End Forall
         
         Call SendMailMetiers(db, docSousDossier, vDestinataires) [b]<== ERREUR ICI[/b]
         
      End If
      
      'suite code
      
   End If
   




il semble qu'il ne trouve pas docSousDossier (objet variable not set à la ligne du SendMailMetiers.

Merci de votre regard avisé.
cdt
camille
Dernière édition par camilleB le 30 Nov 2012 à 14:08, édité 1 fois.
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Erreur code dans QueryClose SMasque

Messagepar Michael DELIQUE » 28 Nov 2012 à 09:15

salut

commeça je dirais que ton probleme viens du If value = "" Then Exit Forall dans ta boucle, tu peut te retrouver avec un document vide
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: Erreur code dans QueryClose SMasque

Messagepar camilleB » 28 Nov 2012 à 10:44

Salut Michael, ce truc me rend fou!!
En mettant en commentaire le sendMailMetier, j'ai testé si le docsousdossier était Nothing et j'ai affiché s'il était marqué comme réponse (true)! Donc juste avant il est bon....!
Le sub sendmail est directement déclaré dans le sous masque!
De plus les docsousdossier sont bien présents dans la base! Je les ai affiché dans une vue de test.
pfff!

cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Erreur code dans QueryClose SMasque

Messagepar Michael DELIQUE » 28 Nov 2012 à 10:57

c'est l'appel de ta fonction SendMailMetiers qui plante ou la fonction elle meme ?

qu'as tu comme gestion des erreurs ?
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: Erreur code dans QueryClose SMasque

Messagepar camilleB » 28 Nov 2012 à 11:39

Merci Michael, tu m'as permis d'aller dans la bonne direction!
1- la fonction SendMail n'avait pas de gestion d'erreur! après correction j'ai vu qu'il plantait sur un rtitemBody non instancié.
2- Pourquoi? la variable du code est en fait rtitemBodyMetier.
En réfléchissant un peu (j'essaie des fois quand même!) j'ai dû créer une autre variable à cause d'une erreur DUPLICATE NAME que j'ai obtenu pour avoir ajouter une bib qui contient justement déjà une variable rtitem!
==> Gestion d'erreurs!!!
Je pense que j'aurai vu au debug mais Dialogbox = pas de debugger!
Grand merci à toi et grossière erreur de ma part!

cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Erreur code dans QueryClose SMasque

Messagepar roubech » 28 Nov 2012 à 20:41

perso je ne mets pas de code dans les dialog, mais avant et apres

set doc = ... pour préparer si besoin le doc qui sera affiché dans la dialogbox
res = ws.dialogbox(...,doc,...)
if res then
traitement basé sur les données récupérées via doc ...
end if
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Erreur code dans QueryClose SMasque

Messagepar camilleB » 29 Nov 2012 à 11:46

Salut, merci du conseil Roubech!
Au moins on peut voir ce qui se passe dans le code!
J'ai un souci de plus, mon doc principal est supprimé et je ne vois pas a quel moment!!!!
Aucun call doc.remove ou autre dans le code du QueryClose ni dans le masque appelant (appel du dialogbox). :(
Puis je vous faire parvenir le code du Queryclose en entier pour y jeter un petit coup d'oeil expert?
Merci par avance!
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Erreur code dans QueryClose SMasque

Messagepar Michael DELIQUE » 29 Nov 2012 à 12:24

Ctrl C / Ctrl V authorisé :)
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: Erreur code dans QueryClose SMasque

Messagepar camilleB » 29 Nov 2012 à 22:06

Salut,
j'ai donc viré le code du QueryClose du sbfDemandeB et le l'ai adapté pour être utilisé dans un bouton du masqueA.
J'ai adapté comme conseillé par Roubech, ie j'hérite des valeurs du sfDemandeB dans un doctmp pour mes traitements.
Le document enregistré du masqueA appelant n'est plus supprimé!
Merci à vous deux.
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45


Retour vers Développement

cron