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

C# Discussion :

Création d'un appointment Lotus Notes en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut Création d'un appointment Lotus Notes en C#
    Bonjour, je développe une application .Net (C#) qui doit créer des rendez-vous (appointments) dans une base Lotus Notes.

    J'y suis presque sauf que les rendez-vous créés par mon application ne sont pas visibles dans les vues "jours" et "semaines" (je ne peux les voir dans Lotus Notes que si je clique sur l'onglet "Réunions").

    Je pense que c'est parce que je ne définie aucune vue au niveau de la création de ces rendez-vous. En effet je ne sais pas du tout comment faire cela en .Net. Il y a des exemples en VB6 mais aucun pour .Net et ils ne semblent pas du tout compatibles.

    Quelqu'un aurait-il un exemple de code permettant de créer un rendez-vous dans Lotus Notes en l'incluant dans ces vues ?

    Il y a très peu d'informations sur le net sur ce thème, je suis preneur de toute aide concernant la création de rendez-vous dans notes, à partir de .Net.

    Pour information voici mon code actuel qui permet donc de créer le rdv mais ne l'affiche pas dans ces vues de Lotus Notes.

    Merci par avance pour votre aide.

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
     
    namespace TestIntegrationDominoDotNet
    {
        public partial class Form1 : Form
        {
            private Domino.NotesSession _oNotesSession = null;
            private Domino.NotesDatabase _oNotesDatabase = null;
            private string _sPassword = "monpassword";
            private string _sServerName = "nomdemonserveurnotes";
            private string _sDataBaseLotusNotes = @"mail\\mabase.nsf";
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                //§/Déclaration propriétés de connexion
                this.OuvrirSessionNotes();
     
     
            }
     
            private bool OuvrirSessionNotes()
            {
                //§/Permet de mémoriser qu'une erreur s'est produite
                bool bLocal_Erreur = false;
     
                try
                {
                    //§/Création de l'objet session Notes
                    this._oNotesSession = new Domino.NotesSession();
                    //§/Initialiser cet objet session
                    this._oNotesSession.Initialize(this._sPassword);
                    //§/Définition de l'objet Database Lotus Notes qui va permettre de pointer sur
                    //§/la base utilisateur
                    //§/Remarque : le dernier paramètre est à false afin d'indiquer que si cette base utilisateur
                    //§/           n'existe pas il ne faut pas la créer mais provoquer une erreur
                    //§/           En effet cette base doit exister dans Lotus Notes
                    this._oNotesDatabase = this._oNotesSession.GetDatabase(this._sServerName, this._sDataBaseLotusNotes, false);
     
                    //§/Ouverture de cette base de données
                    if (!this._oNotesDatabase.IsOpen)
                    {
                        this._oNotesDatabase.Open();
                    }
                }
                catch (Exception oLocal_Exception)
                {
                    bLocal_Erreur = true;
                    MessageBox.Show("Erreur" + oLocal_Exception.Message);
                    //§/On appelle systématiquement ici la méthode de fermeture
                    //§/de la session notes
                    this.FermerSessionNotes();
                }
     
                //DEBUG
                if (!bLocal_Erreur)
                {
                    MessageBox.Show("Connexion réussie");
                }
     
                //§/Retouner true si aucune erreur ne s'est produite
                return !bLocal_Erreur;
            }
     
            private void FermerSessionNotes()
            {
                this._oNotesSession =  null;
                this._oNotesDatabase = null;
                GC.Collect(); 
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                //§/Objet Notes Document
                Domino.NotesDocument oNotesDocument = null;
                Domino.NotesView oNotesView = null;
     
                //§/Si la session Notes peut être ouverte        
                if (OuvrirSessionNotes())
                {
     
                    //§/Créer en mémoire le document dans la base de données serveur Notes
                    oNotesView = this._oNotesDatabase.GetView("Agenda");
                    oNotesDocument = this._oNotesDatabase.CreateDocument();
     
     
     
     
                    //§/Définir dans des dates times les dates de début et de fin du rdv
                    System.DateTime oDateTime_StartDate = new DateTime(2008, 11, 26);
                    System.DateTime oDateTime_EndDate = new DateTime(2008, 11, 26);
     
                    //§/Mise à jour des champs du document Notes
                    oNotesDocument.ReplaceItemValue("Form", "Appointment");
                    oNotesDocument.ReplaceItemValue("AppointmentType", "0");
                    oNotesDocument.ReplaceItemValue("Subjet", "Ceci est le sujet de mon rendez-vous");
                    oNotesDocument.ReplaceItemValue("StartDateTime", oDateTime_StartDate);
                    oNotesDocument.ReplaceItemValue("EndDateTime", oDateTime_EndDate);
                    oNotesDocument.ReplaceItemValue("StartDate", oDateTime_StartDate);
                    oNotesDocument.ReplaceItemValue("MeetingType", "1");
                    oNotesDocument.ReplaceItemValue("Body", "Ceci est le contenu du rendez-vous");
     
                    oNotesDocument.ReplaceItemValue("Chair", this._oNotesSession.CommonUserName);
                    oNotesDocument.ReplaceItemValue("AltChair", this._oNotesSession.CommonUserName);
                    oNotesDocument.ReplaceItemValue("From", this._oNotesSession.CommonUserName);
                    oNotesDocument.ReplaceItemValue("Principal", this._oNotesSession.CommonUserName);
     
                    //§/Sauvegarde du rendez-vous
                    //§/Valide le document
                    //§/Dans l'aide Lotus Notes le rôle de cet appel - nécessaire - est :
                    //§/"Validates a document by executing the default value, translation, and validation formulas, if any are defined in the document form"
                    //§/Voir la page "http://www.wissel.net/blog/d6plinks/SHWL-6V65MG"
                    //§/pour plus d'informations à ce sujet
                    //§/Si cette validation s'est bien passée
                    if (oNotesDocument.ComputeWithForm(true, false))
                    {
                        //§/Sauvegarde le rendez-vous dans la base Notes
                        oNotesDocument.Save(true, false, false);
     
                        //§/DEBUG
                        MessageBox.Show("Normalement le rdv devrait être créé");
     
                    }
                    else //§/La validation du document à ajouter ne s'est pas bien passée
                    {
                        //§/L'indiquer à l'utilisateur
                        MessageBox.Show("Le document ne peut être validé par le serveur Lotus Notes; sauvegarde impossible");
                    }
                    //§/FIN DEBUG
                }
                else //§/La session Notes ne peut être ouverte
                {
                    //§/On affiche un message à l'utilisateur
                    MessageBox.Show("Impossible d'ouvrir la session Notes; création du rdv impossible");
                }
     
                //§/Systématiquement nous supprimons ici tous les éléments Notes et fermons la session
                //§/Cela permet d'économiser la mémoire
                //§/Il est à noter qu'il est plus optimisé de supprimer tous les éléments locaux Notes
                //§/avant d'effectuer le this.FermerSessionNotes() car FermerSessionNotes() force le passage
                //§/du Garbage collector
     
                //§/Supprimer le document Notes désormais inutile
                oNotesDocument = null;
                //§/Et fermer la session Notes
                this.FermerSessionNotes();
            }
     
            private void button3_Click(object sender, EventArgs e)
            {
                //§/Si la session Notes peut être ouverte        
                if (OuvrirSessionNotes())
                {
     
                }
                else //§/La session Notes ne peut être ouverte
                {
                    //§/On affiche un message à l'utilisateur
                    MessageBox.Show("Impossible d'ouvrir la session Notes; affichage des rdv impossible");
                }
     
                //§/Systématiquement nous supprimons ici tous les éléments Notes et fermons la session
                //§/Cela permet d'économiser la mémoire
                //§/Il est à noter qu'il est plus optimisé de supprimer tous les éléments locaux Notes
                //§/avant d'effectuer le this.FermerSessionNotes() car FermerSessionNotes() force le passage
                //§/du Garbage collector
     
                //§/Fermer la session Notes
                this.FermerSessionNotes();
     
     
            }
        }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    J'ai trouvé la réponse à ma question.

    Pour info je poste mon code ici au cas ou cela pourrait dépanner quelqu'un.
    C'est un peu "brut de pomme" mais cela a le mérite de bien fonctionner.


    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
     
     
            private bool OuvrirSessionNotes()
            {
                //§/Permet de mémoriser qu'une erreur s'est produite
                bool bLocal_Erreur = false;
     
                try
                {
                    //§/Création de l'objet session Notes
                    this._oNotesSession = new Domino.NotesSession();
                    //§/Initialiser cet objet session
                    this._oNotesSession.Initialize(this._sPassword);
     
                    //§/Définition de l'objet Database Lotus Notes qui va permettre de pointer sur
                    //§/la base utilisateur
                    //§/Remarque : le dernier paramètre est à false afin d'indiquer que si cette base utilisateur
                    //§/           n'existe pas il ne faut pas la créer mais provoquer une erreur
                    //§/           En effet cette base doit exister dans Lotus Notes
                    this._oNotesDatabase = this._oNotesSession.GetDatabase(this._sServerName, this._sDataBaseLotusNotes, false);
     
                    //§/Ouverture de cette base de données
                    if (!this._oNotesDatabase.IsOpen)
                    {
                        this._oNotesDatabase.Open();
                    }
                }
                catch (Exception oLocal_Exception)
                {
                    bLocal_Erreur = true;
                    MessageBox.Show("Erreur" + oLocal_Exception.Message);
                    //§/On appelle systématiquement ici la méthode de fermeture
                    //§/de la session notes
                    this.FermerSessionNotes();
                }
     
                //DEBUG
                if (!bLocal_Erreur)
                {
                    MessageBox.Show("Connexion réussie");
                }
     
                //§/Retouner true si aucune erreur ne s'est produite
                return !bLocal_Erreur;
            }
     
            private void FermerSessionNotes()
            {
                this._oNotesSession =  null;
                this._oNotesDatabase = null;
                GC.Collect(); 
            }
     
            private void cmdCreerUnRDV_Click(object sender, EventArgs e)
            {
                Domino.NotesDateTime oLocal_DominoNotesDateTime_Start;
                Domino.NotesDateTime oLocal_DominoNotesDateTime_End;
     
                //§/Objet Notes Document
                Domino.NotesDocument oNotesDocument = null;
     
                //§/Si la session Notes peut être ouverte        
                if (OuvrirSessionNotes())
                {
     
                    //§/Créer en mémoire le document dans la base de données serveur Notes
                    oNotesDocument = this._oNotesDatabase.CreateDocument();
     
                    //§/Définir dans des dates times les dates de début et de fin du rdv
                    oLocal_DominoNotesDateTime_Start = this._oNotesSession.CreateDateTime("11/27/2008 15:30:00");
                    oLocal_DominoNotesDateTime_End = this._oNotesSession.CreateDateTime("11/27/2008 17:30:00");
     
                    if ((!(oLocal_DominoNotesDateTime_Start.IsValidDate)) || (!(oLocal_DominoNotesDateTime_End.IsValidDate)))
                    {
                         MessageBox.Show("Dates incorrectes");
                         //§/DEBUG
                         //§/Prendre ici les mesures qui s'imposent
                    }
     
                    //§/Mise à jour des champs du document Notes
                    oNotesDocument.ReplaceItemValue("Form", "Appointment");
                    oNotesDocument.ReplaceItemValue("AppointmentType", "0");
                    /*AppointmentType
                    Appointment = 0
                    Anniversary =1
                    All Day Event = 2
                    Meeting = 3
                    Reminder = 4
                    */
                    oNotesDocument.ReplaceItemValue("Subject", "Ceci est le sujet de mon rendez-vous");
                    oNotesDocument.ReplaceItemValue("Body", "Ceci est le contenu du rendez-vous");
                    oNotesDocument.ReplaceItemValue("StartDateTime", oLocal_DominoNotesDateTime_Start);
                    oNotesDocument.ReplaceItemValue("StartDate", oLocal_DominoNotesDateTime_Start);
                    oNotesDocument.ReplaceItemValue("EndDateTime", oLocal_DominoNotesDateTime_End);
                    oNotesDocument.ReplaceItemValue("EndDate", oLocal_DominoNotesDateTime_End);
                    oNotesDocument.ReplaceItemValue("MeetingType", "1");
                    oNotesDocument.ReplaceItemValue("CalendarDateTime", oLocal_DominoNotesDateTime_Start);
                    oNotesDocument.ReplaceItemValue("Chair", this._oNotesSession.UserNameObject.Common);
                    oNotesDocument.ReplaceItemValue("AltChair", this._oNotesSession.EffectiveUserName);
                    oNotesDocument.ReplaceItemValue("$BusyPriority", "1");
                    oNotesDocument.ReplaceItemValue("$BusyName", this._oNotesSession.EffectiveUserName);
                    oNotesDocument.ReplaceItemValue("From", this._oNotesSession.UserName);
                    oNotesDocument.ReplaceItemValue("Principal", this._oNotesSession.EffectiveUserName);
                    oNotesDocument.ReplaceItemValue("$AltPrincipal", this._oNotesSession.EffectiveUserName);
                    oNotesDocument.ReplaceItemValue("_ViewIcon", 160);
     
     
                    //§/DEBUG
                    //§/Sauvegarde du rendez-vous
                    //§/Valider le document
                    //§/Si cette validation s'est bien passée
                    if (oNotesDocument.ComputeWithForm(true, false))
                    {
                        //§/Sauvegarde le rendez-vous dans la base Notes
                        oNotesDocument.Save(true, false, false);
     
                        MessageBox.Show("Normalement le rdv devrait être créé");
     
                    }
                    else //§/La validation du document à ajouter ne s'est pas bien passée
                    {
                        //§/L'indiquer à l'utilisateur
                        MessageBox.Show("Le document ne peut être validé par le serveur Lotus Notes; sauvegarde impossible");
                    }
     
                    }
     
                else //§/La session Notes ne peut être ouverte
                {
                    //§/On affiche un message à l'utilisateur
                    MessageBox.Show("Impossible d'ouvrir la session Notes; création du rdv impossible");
                }
     
                //§/Systématiquement nous supprimons ici tous les éléments Notes et fermons la session
                //§/Cela permet d'économiser la mémoire
                //§/Il est à noter qu'il est plus optimisé de supprimer tous les éléments locaux Notes
                //§/avant d'effectuer le this.FermerSessionNotes() car FermerSessionNotes() force le passage
                //§/du Garbage collector
     
                //§/Supprimer le document Notes désormais inutile
                oNotesDocument = null;
                //§/Et fermer la session Notes
                this.FermerSessionNotes();
            }

  3. #3
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Il faut faire attention avec l'appel de la méthode GC.Collect, Si tu es sur que les objets que tu souhaite libérer sont en génération 0, alors utilise la surcharge de la méthode Collect qui contient en paramètre un entier.

    L'appel de la méthode CG.Collect sans argument correspond à GC.Collect(2)...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 30
    Par défaut
    Salut sandre,

    Je vois que tu développes pour Lotus Notes ... je suis actuellement en train de commencer à le faire moi aussi.

    Je cherche sans trouver une liste des méthodes, objets, ... disponibles... Aurais-tu ça sous la main ?

    Par exemple, tu fais des ReplaceItemValue, mais comment avoir la liste des tous les "item" que l'on peut assigner ?

    Je deviens fou

    Merci d'avance

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Par défaut
    Citation Envoyé par Sebastos Voir le message
    Salut sandre,

    Je vois que tu développes pour Lotus Notes ... je suis actuellement en train de commencer à le faire moi aussi.

    Je cherche sans trouver une liste des méthodes, objets, ... disponibles... Aurais-tu ça sous la main ?

    Par exemple, tu fais des ReplaceItemValue, mais comment avoir la liste des tous les "item" que l'on peut assigner ?

    Je deviens fou

    Merci d'avance


    eheh ! je cherche untruc en c# (où je débute et qui me rends fou) et je tombe sur ce sujet

    ReplaceItemValue est une fonction de NotesItem.
    ( donc d'un document, créé à l'aide d'un formulaire ..ou masque )


    Pour avoir l'intégralité des items d'un doc :

    Forall theitem In doc.Items
    --- action sur l'item ---
    End Forall


    pour obtenir un objet particulier.
    Set item = doc.GetFirstItem( "Nom" )


    essaye là
    http://elearning5.unibg.it/help/help...7?OpenDocument


    tu trouveras la liste aussi dans Designer. Si tu crées un agent ou une bibliothèque de script, dans l'onglet Références , Domino:Classes

    (c'est une base notes )


    Bon courage

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Utiliser CreateNavigator dans création mail Lotus Notes
    Par pastis.vi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/02/2015, 08h41
  2. [XL-2003] Création de documents XL à partir de Lotus Notes
    Par smar6ty4 dans le forum Excel
    Réponses: 0
    Dernier message: 25/10/2011, 17h25
  3. Création de mail par excel vers Lotus Notes
    Par volle dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/10/2009, 15h55
  4. Création Pages de travail Lotus Notes depuis ACCESS
    Par multimania dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/09/2007, 11h11
  5. Modification auto du corps d'un mail envoyé via Lotus Note
    Par DeepXtaZy dans le forum VBA Access
    Réponses: 5
    Dernier message: 20/06/2003, 11h33

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