PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Lotus et windev (bis)
Lotus et windev (bis)
Débuté par nicolas, 27 mai 2005 19:25 - 3 réponses
Posté le 27 mai 2005 - 19:25
Premier message:
Bonjour,

J'ai essayé le code suivant trouvé dans un forum:

MailDoc est un objet OLE dynamique // Le message
champ est un objet OLE dynamique
Piece est un tableau de 100 caractères // Tableau contenant le nom=de la piece jointe
item est un objet OLE dynamique // item du document

// test si piece jointe
TANTQUE item = MailDoc>>GetFirstItem("$FILE")
// recupere le nom
Piece = item>>values
Info(Piece[1])
// selectionne la piece jointe
champ = MailDoc>>getattachment(Piece[1])
// detache le piece jointe
champ>>extractfile("d:\'"+Piece[1])
// supprime la piece jointe sinon impossible de recuperer les suivantes( si pas de sauvegarde ne modifie pas definitivement le message)
champ>>Remove
FIN

Mais j'ai le msg d'erreur suivant:
Erreur à la ligne 7 du traitement Déclaration de Procedures globales de Mon_Projet2.
L'objet sur lequel on appelle la méthode GetFirstItem n'est pas un objet Automation.





Apres qq reponse de Fred, j'ai essayer les modifs suivantes mais meme pb

J'ai mis le code suivant dans procedure globale
MailDoc est un objet OLE dynamique // Le message
champ est un objet OLE dynamique
Piece est un tableau de 100 caractères // Tableau contenant le nom de la piece jointe
item est un objet OLE dynamique // item du document
MailDoc = ObjetActif("Lotus.application")

// test si piece jointe
TANTQUE MailDoc>>hasitem("$FILE")
// recherche la premiere
item = MailDoc>>GetFirstItem("$FILE")
// recupere le nom
Piece = item>>values
Info(Piece[1])
// selectionne la piece jointe
champ = MailDoc>>getattachment(Piece[1])
// detache le piece jointe
champ>>extractfile("d:\"+Piece[1])
// supprime la piece jointe sinon impossible de recuperer les suivantes (si pas de sauvegarde ne modifie pas definitivement le message)
champ>>Remove
FIN

Et j'obtiens tj la meme erreur.
Posté le 30 mai 2005 - 11:18
Bonjour Nicolas,

Je ne peux malheureusement pas t'aider beaucoup plus car la documentation OLE avec notus est plutot rare et je n'ai jamais fais des dialogues OLE autres qu'excel et word.

Je me demande d'abiord si le "lotus.application" est correcte pour le getobject. Peut-être devrais tu t'orienter vers des "notesapplication" ou autres.

En fouillant un peu, j'ai trouvé des morceau de code OLE sur le net mais plutot basée sur le VBA....mais cela revient au même, il suffit de remplacer la plupart du temps les "." par ">>"...

Il y a moyen de trouver pas mal de classe et méthodes autorisée dans le VBA de word ou par exemple sur un site tel que
http://notes.guilford.edu/help/help4.nsf/0/b8092dc6a9360273852564d20018bb9e…

Mais je dois avouer qu'il y a encore pas mal à creuser...

Bonne chance je continue à fouiller et te tiens au courant

Fred
Posté le 30 mai 2005 - 19:03
Voici un exemple qui marche.. en espèrant que celà vous convienne

PROCEDURE xEnvoiDOMINO()

CcOperation::xcObj():vccNomModule="cp_Gestmails"
CcOperation::xcObj():vccDescription="Gestion des mails"
CcOperation::xcObj():vccNomOperation="Envoi d'un mail via un serveur DOMINO"
CcOperation::xcObj():vcdCréation="20050405"
CcOperation::xcObj():vcdModification="20050405"
CcOperation::xcObj():vccInfCréateur="JPRD"
CcOperation::xcObj():vccInfModifieur="JPRD"

QUAND EXCEPTION
CcOperation::xcObj():vccNomOperation="Erreur d'exception"
CcOperation::xcObj():vccMessageErreur+=ExceptionInfo(errComplet)
CcOperation::xcObj():xGenereErreur()
RENVOYER Faux
FIN

:vcbErreur=Faux
vleIndice est un entier
vlcStructEnvoi est une chaîne


// Activation de l'objet OLE
:ocdDomino=ObjetActif("Notes.NotesSession")
SI :ocdDomino=Null ALORS
:ocdDomino= allouer un objet OLE "Notes.NotesSession"
FIN
SI :ocdDomino<>Null ALORS

// Connexion à la base de données par défaut
:ocdMail=:ocdDomino>>GETDATABASE("" , "")




SINON
:vcbErreur=Vrai
:vccValide="L'accès à Lotus Notes via OLE a échoué, veuillez vérifier l'installation de Lotus Notes"
FIN

SI PAS :vcbErreur
// On contrôle tout d'abord si on a pu ouvrir une session sur notes
SI :xControleDOMINO() ALORS
:ocdVisualisation= allouer un objet OLE "Notes.NotesUIWorkspace"

// Création du document
:ocdDocument=:ocdMail>>CreateDocument

// Format du document : Memo
:ocdDocument>>form="Memo"

// Destinataires du message
vlcStructEnvoi=""
POUR vleIndice=1 A :vceNbDestinataires
SI vleIndice>1 ALORS vlcStructEnvoi+=", "
vlcStructEnvoi+=:tcdDestinataires[vleIndice]:vscMail
FIN
:ocdDocument>>SendTo = vlcStructEnvoi

// Destinataires en CC
// En copie
vlcStructEnvoi=""
POUR vleIndice=1 A :vceNbEnCopie
SI vleIndice>1 ALORS vlcStructEnvoi+=", "
vlcStructEnvoi+=:tcdEnCopie[vleIndice]:vscMail
FIN
SI :vceNbEnCopie>0 ALORS
:ocdDocument>>CopyTo = vlcStructEnvoi
FIN

// Sujet
:ocdDocument>>Subject = :vccSujet

// Expéditeur par défaut
:ocdDocument>>From = :ocdDomino>>COMMONUSERNAME

SI PAS :vcbFormatHTML ALORS
// Envoi d'un texte normal
SI :xNotesRTF() ALORS
:vcbErreur=Faux
SINON
:vcbErreur=Vrai
FIN
SINON
// Envoi d'un texte au format HTML
SI :xNotesHTML() ALORS
:vcbErreur=Faux
SINON
:vcbErreur=Vrai
FIN
FIN
FIN
FIN

SI PAS :vcbErreur ALORS
:vccValide="Message transmis à LOTUS Notes"
FIN



SELON :vcbErreur
CAS Vrai
RENVOYER Faux
CAS Faux
RENVOYER Vrai
AUTRES CAS
RENVOYER Vrai

FIN



// Description des paramètres d'entrée/sortie de 'xControleDOMINO' :
//
// Syntaxe :
//[ <Résultat> = ] xControleDOMINO () Contrôle si l'on est bien connecté à domino
//
// Paramètres :
// Aucun
// Valeur de retour :
// booléen : // Faux si la connexion a échouée ou si elle a été annuleé par l'opérateur
PROCEDURE xControleDOMINO()

QUAND EXCEPTION
SI Confirmer("La connexion à Lotus Notes n'a pas pu être établie","Vous devez certainement saisir votre mot de passe","Voulez vous retenter une connexion ?") ALORS

SI :ocdDomino<>Null ALORS
libérer :ocdDomino
FIN
:ocdDomino=allouer un objet OLE "Notes.NotesSession"

:ocdMail=:ocdDomino>>GETDATABASE("" , "")
:xControleDOMINO()

SINON
// nous n'avons pas confirmé donc j'annule l'opération
:vccValide="La connexion à Lotus Notes n'a pu être établie : Abandon par l'utilisateur"
RENVOYER Faux
FIN

FIN

// Ouvre la session de mail au sein de LOTUS
:ocdMail>>OpenMail
TANTQUE PAS :ocdMail>>Isopen
Multitâche(1000)
:ocdMail>>OpenMail
FIN

RENVOYER Vrai

// Envoi d'un texte au format "NORMAL" ou RTF

PROCEDURE xNotesRTF()


QUAND EXCEPTION
CcOperation::xcObj():vccNomOperation="Erreur d'exception"
CcOperation::xcObj():vccMessageErreur+=ExceptionInfo(errComplet)
CcOperation::xcObj():xGenereErreur()
RENVOYER Faux
FIN

vleIndice est un entier


:ocdCorps = :ocdDocument>>CreateRichTextItem("Body")

// Insertion du corps du message
:ocdCorps>>AppendText(:vccCorps)

// Liaison avec les fichiers attachés
SI :vceNbFichiers <>0 ALORS
:ocdLiens=:ocdDocument>>CreateRichTextItem("Attachment")
POUR vleIndice=1 A :vceNbFichiers
:ocdFichier = :ocdLiens>>EmBedObject(1454 , "" , :tcdFichiersAttaches[vleIndice]:vscCheminEtNom , "Attachment")
FIN
FIN

// Enregistrement du document dans LOTUS
:ocdDocument>>Save(True, False, False)

SI :vcbVisu ALORS
:ocdVisualisation>>EditDocument(True, :ocdDocument)
FIN

SI :vcbEnvoiDirect ALORS
:ocdDocument>>Send(True)
FIN

RENVOYER Vrai

// Description des paramètres d'entrée/sortie de 'xNotesHTML' :
//
// Syntaxe :
//[ <Résultat> = ] xNotesHTML () envoi d'un mail sous NOTES au format HTML
//
// Paramètres :
// Aucun
// Valeur de retour :
// booléen : // Faux si problème

PROCEDURE xNotesHTML()

QUAND EXCEPTION
CcOperation::xcObj():vccNomOperation="Erreur d'exception"
CcOperation::xcObj():vccMessageErreur+=ExceptionInfo(errComplet)
CcOperation::xcObj():xGenereErreur()
RENVOYER Faux
FIN

:ocdVisualisation = allouer un objet OLE "Notes.NotesUIWorkspace"

:ocdVisualisation>>EditDocument(True, :ocdDocument)

// envoi du corps du document HTML dans le presse papiers
SI ccPressePapiers::xCopieHTML(:vccCorps) ALORS

// Colle les infos HTML du presse papiers dans NOTES
SI :xNOTESColleHTML() ALORS
:ocdVisualisation>>CURRENTDOCUMENT>>Save(True, False, False)

SI :vcbEnvoiDirect ALORS
:ocdVisualisation>>CURRENTDOCUMENT>>Send(True)

FIN
RENVOYER Vrai

FIN
FIN

RENVOYER Faux

// Description des paramètres d'entrée/sortie de 'xNOTESColleHTML' :
//
// Syntaxe :
//[ <Résultat> = ] xNOTESColleHTML () Colle le texte HTML dans le document notes
//

PROCEDURE xNOTESColleHTML()


QUAND EXCEPTION
SI Confirmer("Je n'ai pas réussi à coller le texte HTML, voulez vous réssayer ") ALORS
RENVOYER :xNOTESColleHTML()
SINON
:vccValide="Impossible de coller le texte HTML : Abandon par l'utilisateur"
RENVOYER Faux
FIN
FIN

// On cole ensuite le code HTML dans NOTES
:ocdVisualisation>>CURRENTDOCUMENT>>GOTOFIELD("Body")
:ocdVisualisation>>CURRENTDOCUMENT>>Paste

RENVOYER Vrai
Posté le 09 février 2006 - 15:38
Bonjour JeanPhi

pouvez me communiquez vos classes et procédures ?

Yannick
yannic.rusch@2ioConseil.fr