Page 1 sur 1

Pièce jointe insérée automatiquement à la création

MessagePublié: 11 Fév 2011 à 11:31
par Cyril Niang
Bonjour,

J'ai lu et relu plusieurs posts sur les pièces jointes, mais je n'ai pas trouvé un qui puisse répondre à mon besoin.

J'ai un fichier modèle excel que je dois insérer à chaque création de mon masque. J'ai créé un document de configuration dans lequel il y a un RT où j'ai enregistré le fichier.
Au postopen de mon formulaire j'exécute ce code :
Code : Tout sélectionner
   Dim s As NotesSession
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Dim docProfile As NotesDocument
   Dim vueConnex As NotesView
   Dim docConfProfile As NotesDocument
   Dim ItemConfig As NotesRichTextItem
   Dim ItemForm As NotesRichTextItem
   
   Set s = New Notessession
   Set db = s.CurrentDatabase
   Set vueConnex = db.GetView("vLkpConfig")
   Set doc = Source.Document
   Set docConfProfile = vueConnex.getfirstdocument
   
   Set ItemConfig = docConfProfile .GetFirstItem( "ModeleFiche" )
   Set ItemForm = New NotesRichTextItem(doc, "FicheGoNoGo" )
   Call ItemForm.AppendRTItem(ItemConfig)


Voilà si quelqu'un a une idée car il y a une solution qui consiste à "détacher/rattacher" mais je la trouve lourde et j'ai l'impression qu'elle supprimera mon fichier de mon doc profile!

Merci

MessagePublié: 11 Fév 2011 à 12:37
par Michael DELIQUE
fait un save avant pour voir !

sinon un uidoc.refresh(true)

MessagePublié: 11 Fév 2011 à 13:27
par Cyril Niang
Je ne peux pas faire un save car il y a un contrôleur de champs obligatoires.
Sinon pour le Source.Refresh(True), il ne se passe rien !!

MessagePublié: 11 Fév 2011 à 14:02
par Cyril Niang
J'ai mis ce code pour tester :
Code : Tout sélectionner
If Isarray(ItemA.EmbeddedObjects) Then
   Forall o In ItemA.EmbeddedObjects
      If (o.Type = EMBED_ATTACHMENT) Then
         Msgbox o.Name
      End If
   End Forall
End If


Et il m'affiche bien le nom du fichier en question qui se trouve dans mon champ.

MessagePublié: 11 Fév 2011 à 17:29
par Cyril Niang
Bon j'ai trouvé une solution :
Code : Tout sélectionner
   Dim s As NotesSession
   Dim w As New NotesUIWorkspace
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Dim docProfile As NotesDocument
   Dim vueConnex As NotesView
   Dim docExportProfile As NotesDocument
   Dim ItemA As NotesRichTextItem
   Dim ItemB As NotesRichTextItem
   
   Set s = New Notessession
   Set db = s.CurrentDatabase
   Set vueConnex = db.GetView("vLkpConfig")
   Set doc = Source.Document
   Set docExportProfile = vueConnex.getfirstdocument
   
   Set ItemA = docExportProfile.GetFirstItem( "ModeleFiche" )
   Set ItemB = New NotesRichTextItem(doc, "FicheGoNoGo" )
   
   Call ItemB.AppendRTItem(ItemA)   
   Call ItemB.Update
   Call doc.Save(False, True)
   Call w.EditDocument(True, doc,,,, False)


Je sauve et je réouvre le document en mode édition. Seulement voilà il me créé un autre nouveau document sur un nouvel onglet!
Je sais pas pourquoi?

MessagePublié: 11 Fév 2011 à 17:38
par Cyril Niang
Voici l'illustration; L'onglet du milieu est celui qui contient bien mon fichier joint dans mon formulaire.
Le troisième onglet (à droite) et une nouvelle fenêtre qui s'ouvre, je ne sais pas pourquoi ?[/img]

MessagePublié: 14 Fév 2011 à 08:23
par abertisch
Salut.

Ferme ton document avec "close()" du notesuidocument avant de le réouvrir :wink:

MessagePublié: 14 Fév 2011 à 09:30
par Cyril Niang
Salut,

Merci de ta réponse, elle résout mon problème mais cela m'affiche la boite de dialogue (voir PJ).

Le code que j'ai mis est le suivant :
Code : Tout sélectionner
   Dim s As New Notessession
   Dim w As New NotesUIWorkspace
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Dim vueConnex As NotesView
   Dim docProfile As NotesDocument
   Dim ItemA As NotesRichTextItem
   Dim ItemB As NotesRichTextItem
   Dim uidoc As NotesUIDocument
   
   Set db = s.CurrentDatabase
   Set vueConnex = db.GetView("vLkpConfig")
   Set doc = Source.Document
   Set uidoc = Source
   Set docProfile = vueConnex.getfirstdocument
   
   Set ItemA = docProfile.GetFirstItem( "ModeleFiche" )
   Set ItemB = New NotesRichTextItem(doc, "FicheGoNoGo" )
   
   Call ItemB.AppendRTItem(ItemA)   
   
   Call doc.Save(True, False)
   
   doc.saveoptions = "0"
   Call uidoc.Close
   'Call Source.Close
   
   Set doc = Source.document
   
   Set uidoc = w.EditDocument(True, doc,,,, False)
   
   Set doc = uidoc.Document
   doc.saveoptions = "1"

MessagePublié: 14 Fév 2011 à 10:05
par abertisch
Re,

Déplace ton doc.saveoptions = "0" avant la sauvegarde de ton document (call doc.save())

MessagePublié: 14 Fév 2011 à 10:24
par Cyril Niang
Re,

Non ça ne change rien, je ne comprends pas pourquoi ça le fait!

MessagePublié: 14 Fév 2011 à 10:35
par abertisch
J'ai fait 1-2 modifications sur ton code :

Code : Tout sélectionner
Dim s As New Notessession
   Dim w As New NotesUIWorkspace
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Dim vueConnex As NotesView
   Dim docProfile As NotesDocument
   Dim ItemA As NotesRichTextItem
   Dim ItemB As NotesRichTextItem
   Dim uidoc As NotesUIDocument
   
   Set db = s.CurrentDatabase
   Set vueConnex = db.GetView("vLkpConfig")
   Set doc = Source.Document
   Set uidoc = Source
   Set docProfile = vueConnex.getfirstdocument

Call uidoc.Save()
uidoc.EditMode=False
   
   Set ItemA = docProfile.GetFirstItem( "ModeleFiche" )
   Set ItemB = New NotesRichTextItem(doc, "FicheGoNoGo" )
   
   Call ItemB.AppendRTItem(ItemA)   
   
   doc.saveoptions = "0"
   Call doc.Save(True, False)
   
   Call uidoc.Close

   'Call Source.Close   
   'Set doc = Source.document
   
   Set uidoc = w.EditDocument(True, doc,,,, False)
   
   Set doc = uidoc.Document
   doc.saveoptions = "1"

MessagePublié: 14 Fév 2011 à 10:52
par Cyril Niang
Je viens de tester ton code et le document est enregistré mais ne s'ouvre pas !!
Je vais essayer de chercher autre chose, même si je sais que je ne suis pas loin de la solution!
Merci pour ton aide en tout cas!

MessagePublié: 15 Fév 2011 à 01:07
par Cyril Niang
Roooooo!!! Après une bonne bouteille de pinard (St Val oblige), j'ai trouvé ce qui clochait....
J'ai encadré tout mon code par if Source.IsNewdoc
Pourquoi ? Car j'ai mis le code dans le PostOpen donc quand je fais un EditDocument (du même doc) bah il "repasse" en quelque sorte et ça faisait un peu comme une boucle infinie..
Voili voilou :
Code : Tout sélectionner
Dim s As New Notessession
   Dim w As New NotesUIWorkspace
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Dim docUNID As NotesDocument
   Dim vueConnex As NotesView
   Dim docProfile As NotesDocument
   Dim ItemA As NotesRichTextItem
   Dim ItemB As NotesRichTextItem
   
   Set db = s.CurrentDatabase
   Set vueConnex = db.GetView("vLkpConfig")
   Set docProfile = vueConnex.getfirstdocument
   Set ItemA = docProfile.GetFirstItem( "ModeleFiche" )
   
   If Source.IsNewDoc Then
   '1
      Set doc = Source.Document
      Call Source.Save
      
   '2
      Set ItemB = New NotesRichTextItem(doc, "FicheGoNoGo" )
      Call ItemB.AppendRTItem(ItemA)   
      
   '3
      doc.SaveOptions = "0"
      Call doc.Save(True , False)
      Call Source.Close
      
   '4
      Set docUNID = db.GetDocumentByUNID(   doc.UniversalID)
      Call w.EditDocument(True, docUNID,,,, False)
   End If


Merci à tous et qu'est ce qu'ils sont casse-c****** ces RT ..
Bonne nuit!