IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lotus Notes Discussion :

Imprimer un document Lotus Notes avec C # DLL


Sujet :

Lotus Notes

  1. #1
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut Imprimer un document Lotus Notes avec C # DLL
    J'ai créé une DLL en C # qui prend en paramètre le nom du serveur Lotus Domino, le nom des notes de lotus de base de données et l'UNID d'un document de cet base.
    Le but de cette dll est d'ouvrir en mode lecture le document ayant la UNID passé en paramètre, puis l'imprimer via l'imprimante installée sur la machine.
    le problème est que, parfois, la DLL au lieu d'ouvrir le documents notes , elle ouvre la pièce jointe rattacher dans le présent document et
    génère l'exception suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    COMException.Message = L'objet invoqué s'est déconnecté de ses clients. (Exception de HRESULT : 0x80010108 (RPC_E_DISCONNECTED))
    COMException.ErrorCode = -2147417848
    COMException.ToString = System.Runtime.InteropServices.COMException (0x80010108): L'objet invoqu‚ s'est d‚connect‚ de ses clients. (Exception de HRESULT : 0x80010108 (RPC_E_DISCONNECTED))
       … System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
       … System.Dynamic.ComRuntimeHelpers.GetITypeInfoFromIDispatch(IDispatch dispatch, Boolean throwIfMissingExpectedTypeInfo)
       … System.Dynamic.IDispatchComObject.EnsureScanDefinedMethods()
       … CallSite.Target(Closure , CallSite , ComObject , Int32 , Int32 , Int32 , Boolean )
       … CallSite.Target(Closure , CallSite , Object , Int32 , Int32 , Int32 , Boolean )
       … PrintNotesUIDocumentCOM_version_14_12_2015.PrintNotesDocument_version_14_12_2015.PrintFaxDocument_version_14_12_2015(String serverName, String baseName, String UNID)
    COMException.Data = System.Collections.ListDictionaryInternal
    vous trouverez ci-dessous le code du dll c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
                /* Creat the notes session's object */ 
                  System.Type typeNotes = System.Type.GetTypeFromProgID("Notes.NotesSession", "localhost", true); 
                 dynamic oleSession = System.Activator.CreateInstance(typeNotes);
    
                /* Creat the notes dataBase's object */
                dynamic oleDb = oleSession.GetDatabase(serverName, baseName);
    
                /*Creat the notes NotesUIWorkspace's object */
                System.Type typeNotesUI = System.Type.GetTypeFromProgID("Notes.NotesUIWorkspace", "localhost", true);
                dynamic oleWK = System.Activator.CreateInstance(typeNotesUI);
    
                /* Open the notes dataBase's  */
                dynamic objDbUi = oleWK.OpenDatabase(serverName, baseName);
    
                dynamic oleDoc = oleDb.GetDocumentByUNID(UNID);
    
                Thread.Sleep(500);
                /*  opens the document having universal ID given as an argument  in the view in Edit mode.
                 EDITDOCUMENT Return a notesUIDocument :oleUIDoc */
                dynamic oleUIDoc = null;
    
                if (oleDoc != null)
                {
                    Console.WriteLine("/C#\\ befor editdocument ");
                     oleUIDoc = oleWK.EDITDOCUMENT(false, oleDoc, false,"",true,false);
    
                    Console.WriteLine("/C#\\ after editdocument  ");
                }
                else
                {
                    Console.WriteLine("/C#\\ oledoc = null  ");
                }
    
                /* Print the curent Notes Document previously set */
                dynamic x = oleUIDoc.Print(0, 0, 0, false);
    
                oleUIDoc.close();
    
                /* Close the previously open notes dataBase */
                dynamic oleUIDB = oleWK.CurrentDatabase();
    
                oleUIDB.close();
    
                oleDoc = null;
                oleUIDoc = null;
                oleWK = null;
                oleDb = null;
                oleUIDB = null;
                oleSession = null;

  2. #2
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut D'abord vérifier
    Le document concerne avec un client notes
    Est-ce une base mail est ce une application notes
    Des documents peuvent ouvrir directement une pièce jointe etc.... En fonction du masque (champ "form" du document)

  3. #3
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut Vérification
    Bonjour M.Jérôme Deniau,

    le document concerne un client notes 9.0.1
    la base mail est une application notes (Memo)
    l'option du masque qui lui permet d'ouvrir directement une pièce jointe n'est pas coché ..
    j'ai vérifié tous ces points.

  4. #4
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut OK
    Je suppose qu'en plus cela ne concerne pas TOUS les documents avec PJ?

    Donc tester avec
    ca
    oleUIDoc = oleWK.EDITDOCUMENT(false, oleDoc, true,"",false,false);

    plutôt que ca


    oleUIDoc = oleWK.EDITDOCUMENT(false, oleDoc, false,"",true,false);

    cf aide de Designer:
    Set notesUIDocument = notesUIWorkspace .EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )

  5. #5
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut Re-OK
    OUI ?cela ne concerne pas TOUS les documents avec PJ. il y a plusieurs fois ou ce problème ne se génère pas : il est se déclenche aléatoirement!!

    pour la commande de :oleUIDoc = oleWK.EDITDOCUMENT(false, oleDoc, true,"",false,false);
    il ne serait pas contradictoire de spécifier édit mode comme false et puis mettre notesDocumentReadOnly comme false ??

  6. #6
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut ?
    Je n'ai pas dit ça

    Premier paramètre: à false (je reste en lecture)
    Deuxième paramètre le document
    Troisième paramètre: true (mode readonly)

    donc 1/ je suis en lecture (je force)
    2/ je reste en lecture

  7. #7
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut Re-OK
    ah ok j'ai compris .
    merci .je vais l'essayé

  8. #8
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut
    Bon j'ai essayé votre suggestion..mais c'est pas marché.
    il y a-t-il d'autre suggestion?
    merci .

  9. #9
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Oui
    Isoler le ou les documents Notes qui posent "problème", vérifier dans les propriétés du document Lotus (liste des champs) voir ce qui pourrait poser problème dans le document, présence de $OLExxxx ce qui indiquerait qu'il y a des objets OLE dans le document.
    Vérifier le contenu du champ Form, si le champ form n'existe pas mais que $windowtitle existe c'est que le masque est enregistré dans le document et que dans ce cas du code peut bypasser le masque

    Une fois la cause du pb trouvé, le codage devrait être simple.

  10. #10
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut
    j'ai bien vérifier les propriétés des documents 'ai pas trouvé ces champs : $windowtitle
    même j'ai vérifier le design du masque et la case à coché d’enregistrement du maque dans le document n'est pas coché!
    Nom : Capture.PNG
Affichages : 279
Taille : 25,2 Ko

  11. #11
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Répétition
    Le masque importe peu, si le document dans une base mail est reçu de l'extérieur, le masque peut être inclus, donc extraire les documents qui posent problème et les analyser.....

  12. #12
    Membre à l'essai

    Femme Profil pro
    Ingénieur Informatique( Génie Logicielle)
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique( Génie Logicielle)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 12
    Points
    12
    Billets dans le blog
    1
    Par défaut RE:
    le problème que ces documents sont supprimés de la base Notes dés que l'erreur est généré !!

  13. #13
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Methode
    Sur l'environnement de développement: base y.nsf
    Ouvrir la base contenant les documents à traiter (prod?)
    Copier/coller un par un les docs de prod dans y.nsf lancer la fonction jusqu'au crash
    Une fois le document qui crash l'appli déterminé l'analyser dans la base de prod avec scanez ou notespeek

    Ensuite pour les tests unitaires générer tous les types de documents possibles et rejouer les tests en validation

Discussions similaires

  1. [XL-2007] Lancer Lotus Notes avec fichier à partir d'excel
    Par vbfoxter dans le forum Excel
    Réponses: 2
    Dernier message: 18/03/2012, 14h02
  2. [Toutes versions] Envoi Mail automatique Via LOTUS NOTES (avec PDF en pièce jointe)
    Par jeep6259 dans le forum IHM
    Réponses: 1
    Dernier message: 02/10/2009, 16h40
  3. Lier des documents Lotus Notes
    Par titelaurette dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/08/2007, 16h41
  4. Mail Lotus Notes avec piece jointe
    Par benjisan dans le forum Access
    Réponses: 1
    Dernier message: 09/07/2007, 17h03
  5. Lien base Lotus Notes avec VBA Word 2003
    Par ISA53 dans le forum VBA Word
    Réponses: 3
    Dernier message: 17/11/2006, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo