Domino 9 und frühere Versionen > ND6: Entwicklung
Per VB Code ermitteln ob Mail selectiert ist
Semeaphoros:
Die Eigenschaft "UnprocessedDocuments" der Datenbank, dazu musst Du aber eine Ansicht entsprechend öffnen, wo Du die Auswahl machen kannst. Ich nehme mal an, dass das über OLE machbar ist, da ich es aber selber noch nicht gemacht habe, kann ich das nicht mit Sicherheit sagen. Alle anderen Zugriffsverfahren kommen definitiv nicht in Frage.
matze72:
@TMC
--- Zitat ---Also soweit ich das blicke brauchst Du die UnprocessedDocuments Eigenschaft der NotesDatabase - Klasse.
--- Ende Zitat ---
Hallo, ich bins mal wieder.
Ich hab gerade mal probiert das ganze über OLE zu realisieren.
Habe folgendes probiert:
Dim session As Object 'New NotesSession
Dim db As Object 'NotesDatabase
Dim collection As Object 'NotesDocumentCollection
Dim doc As Object 'NotesDocument
Set session = CreateObject("Notes.NotesSession")
Set db = session.CurrentDatabase 'GetDatabase("zx81/ontaris", "mail\admin.nsf")
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
Set collection = db.UnprocessedDocuments
wurde vom VB6 Compiler anstandslos verarbeitet.
Doc war nothing
@TMC
Du hattest geschrieben , dass man mit UnprocessedDocuments an die selektieren Mails heran kommt. Kannst Du mir bitte erklären wie ich da vorgehen muss.
;) wenn ich mich jetzt total verrannt habe bitte ich um Nachsicht, ich merke das ich noch viel zu lernen habe :)
Gruß Mattias
animate:
UnprocessedDocuments liefert je nach Kontext verschiedene Ergebnisse. Scheinbar in diesem eines, das nicht für dich geeignet ist.
eine Alternative wäre, die Dokumente, d.h. ihre Subjects, einfach in deinem VB Programm anzuzeigen und dort auswählen zu lassen. (fände ich persönlich auch angenehmer, Auswahl und Aktion an einer Stelle zu haben, aber was ich finde ist hier egal)
TMC:
@Matze:
--- Zitat von: matze72 am 03.04.05 - 14:26:09 ---Set collection = db.UnprocessedDocuments
wurde vom VB6 Compiler anstandslos verarbeitet.
Doc war nothing
--- Ende Zitat ---
Ich habe jetzt die Diskussion zw. Jens und Dir nicht komplett verfolgt.
Die Designerhilfe sagt:
--- Zitat ---Note This property is not implemented in COM.
(...)
In scripts that are not a part of an agent or view action, this method returns a NotesDocumentCollection with zero documents.
--- Ende Zitat ---
Ich sehe hier eigentlich 2 Alternativen:
[*]a) Die Aktion vom Notes-Client aus zu steuern als View-Button, dadurch hast Du db.UnprocessedDocuments zur Verfügung (hatte ich oben schon mal vorgeschlagen)
[*]b) Wie von Thomas vorgeschlagen, die Dokumente im VB-Programm anzeigen und auswählen lassen.[/list]
--- Zitat von: matze72 am 03.04.05 - 14:26:09 ---@TMC
Du hattest geschrieben , dass man mit UnprocessedDocuments an die selektieren Mails heran kommt. Kannst Du mir bitte erklären wie ich da vorgehen muss.
--- Ende Zitat ---
Das geht m.E. (und auch lt. Help) wie schon mehrfach erwähnt nur von der aktuellen DB aus, also z.B. Button-Aktion in entsprechender Notes-View.
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
While Not(doc Is Nothing)
'===== Hier Dein Code um das doc-Objekt zu bearbeten ======
Set doc = collection.GetNextDocument(doc)
Wend
db wird hier wie folgt deklariert:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
matze72:
Hallo,
ich hab es endlich hingekriegt ;D.
Ziel war ja dass ich irgendwie an die Mails aus VB herraus rankommen musste die per Häckchen selectiert sind.
Das ganze hat den Sinn das der Notes User in Notes über die Häckchen die Emails auswählen kann die in unsere DB exportiert werden sollen.
Über einen Button im Aktionsmenü (der mit Hilfe einer C++ dll die über einen Notes.ini Eintrag aufgerufen wird eingebunden wird)
Kann unser Programm gestartet werden.
Das Programm holt sich nun alle selektierten Mails mit samt NotesURL über die Routine unten aus der view herraus und kann sie danach in unsere DB importieren.
Dim currView As Object
Dim collection As Object 'NotesDocumentCollection
Dim doc As Object 'NotesDocument
Dim workspace As Object
Set workspace = CreateObject("Notes.NotesUIWorkspace")
Set currView = workspace.CURRENTVIEW
'Jetzt wird die aktuelle View angezeigt
'Die View ist der aktuelle Mailordner
'Den in unserer DB können wir dann ein entsprechendes Buch mit dem Titel des Mailordners
'anlegen und die Mails dort ablegen
Call MsgBox(currView.VIEWNAME) 'der String wird später unserem Programm übergeben
'Die collection enthält alle ausgewählten (Haekchen)
Set collection = currView.DOCUMENTS
Set doc = collection.GetFirstDocument
' Wenn Notes geöffnet ist werden alle Dokumente bei denen
' das Haeckchen gesetzt ist ausgelesen.
' In dem Beispiel ist es die Betreffzeile und die NotesURL
' Die NotesURL können wir dann nutzen um die Mails in unsere DB zu holen
While Not (doc Is Nothing)
Call MsgBox(doc.GetFirstItem("Subject").Text)
Call MsgBox(doc.NotesURL)
Set doc = collection.GetNextDocument(doc)
Wend
Den Quellcode für den Eintrag in das Actionsmenü hab ich übrigens von "the codeproject " ein Programierer mit dem Nickname "TiNgZ aBrAhAm" hat dort eine C++ .dll veröffentlicht die das kann.
http://www.thecodeproject.com/dll/notesmenuaddin.asp
An dieser stelle noch einmal herzlichen Dank an alle, die ich hab nerven dürfen.
Gruß Mattias
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln