Autor Thema: Per VB Code ermitteln ob Mail selectiert ist  (Gelesen 3563 mal)

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Per VB Code ermitteln ob Mail selectiert ist
« am: 02.04.05 - 19:37:17 »
Hallo,
ich bau grade an einem  Programm (VB) das aus einer mail.nsf die selektierten Emails herausholt.
Ziel ist der Im- und Export von und nach Lotus von einem VB Programm aus.
Soweit läuft alles ganz gut. Nur an einem Problem beiße ich mir seit zwei Tagen die Zähne aus. Wie bekomme ich herraus ob in Notes in der Inbox zum Beispiel eine Email mit Häckchen ausgewählt ist oder nicht.

Hier das was ich bis  probiert habe. (Ich bin kein Notes Programmierer also bitte ich um Nachsicht  ;))
 
Ich hab mich durch das Objektmodell von Domino Com mittels Objektüberwachung  gewuselt und hab den Eindruck, dass  das ganze irgendwo in  db.views steckt. Im Designer gibt es eine View $Inbox. Ich hab mir darauf hin die Views über die Überwachung von VB angeschaut und in db.Views(27).columns(1) den Eintrag gefunden, der vermutlich zu select margin in der view gehört, die ich mir über den Designer anschauen kann. Weiter bin ich nicht gekommen, und ich weiss auch nicht ob ich komplett auf dem Holzweg bin.

Vielen Dank im Vorraus, Gruß Mattias.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #1 am: 02.04.05 - 20:03:52 »
Also soweit ich das blicke brauchst Du die UnprocessedDocuments Eigenschaft der NotesDatabase - Klasse.

Das hat natürlich einen Haken:
Zitat
When invoked on a NotesDatabase object that was not obtained from the CurrentDatabase property, this method raises an error.

CurrentDatabase hast Du aber nur von Notes aus. Somit sehe ich da keine Möglichkeit.
Aber umgekehrt könntest Du das machen, erscheint mir eh viel sinnvoller: Wenn es was zu exportieren gibt, dann steuere das von Notes aus. Z.B. Button-Klick durch User. Damit hast Du dann auch UnprocessedDocuments zur Verfügung.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #2 am: 02.04.05 - 21:29:39 »
Hallo erst, erst mal danke für die schnelle Antwort.
Aus Notes herraus zu arbeiten ist möglich, solange ich dabei nicht in der Datenbank des Users rumfummeln muss.

Ich hab bereits hinbekommen per Code von außen einen Menübutton zu installieren, von dem aus ich das VB-Tool starten kann. Ich glaube aber nicht dass ich damit noch irgendwelche Aufrufe in Notes absetzen kann.  ???

Wichtig ist: Das ganze muss per Setup zu installieren sein (also kein Eingiff in die DB) und die Daten der User dürfen nicht verändert werden. 

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #3 am: 02.04.05 - 21:44:12 »
Damit auch ich das verstehe  ;)

Du hast:
a) Lotus Notes
b) irgend ein externes Programm, das wohl VB kann

Du willst Dokumente von Notes in das externe Programm exportieren. Dabei sollen aber nur Dokumente behandelt werden, die der User markiert hat?

Geht meines Erachtens nur via NotesDatabase.UnprocessedDocuments.

D.h. Du brauchst Lotus Script. Du baust da ein, dass NotesDatabase.UnprocessedDocuments in eine NotesDocumentCollection geschrieben wird.
Diese DocCollection arbeitest Du über eine Schleife ab.
Forall doc_loop in NotesDocColl z.B.

Mit doc_loop hast Du dann das aktuelle Dokument. Mit diesem NotesDocument-Object kannst Du dann weiterarbeiten.

Zitat
Wichtig ist: Das ganze muss per Setup zu installieren sein (also kein Eingiff in die DB) und die Daten der User dürfen nicht verändert werden.
Was meinst Du damit? Darfst Du in der Notes-DB nix machen oder in der Ziel-App nix machen?

Wenn Du die selektierten Docs brauchst, dann muss der Auslöser m.E. aus der entsprechenden Notes-DB kommen. Siehe oben.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #4 am: 02.04.05 - 22:04:02 »
Ich erzähl noch mal was ich vorhabe.
Ich bin Azubi (Fachinformatik) und soll für ein Programm das Informationen organisieren kann ein Addin für Lotus bauen.
Für Outlock gibt es diese Funktion bereits.

Der Vorgang:
User selektiert eine oder mehrere Mails, drückt einen Button, ein Export-Assisten erscheint der den Nutzer fragt an welcher Stelle in unserer DB die Mails gespeichert werden sollen.

Das ganze soll natürlich nicht die Notesdatenbank beeinflussen oder verändern.

Unser Programm ist in VB
Dass Addin das ich nutze ist in C++ geschrieben und ruft den VB Assistenten auf .

Ich hoffe das ganze ist jetzt etwas klarer.
Gruß Mattias.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #5 am: 03.04.05 - 00:29:22 »
Matthias, ich befürchte, dass das nicht funktionieren wird. Alle Methoden, die Bezug nehmen auf im Notes-Frondend markierte Dokumente, sind nicht für COM und damit externe Programme greifbar.

Wenn die Aufgabenstellung "nur" heisst, dass die Mailfiles Design-mässig nicht angefasst werden dürfen: Du kannst aus beliebigen Notes-DBs auf beliebige andere Notes-DBs zugreifen und dort Dokumente markieren und diese dann weiter verarbeiten. Das ganze muss aber innerhalb von Notes passieren.

Kannst Du diesen Weg auch gehen ?

Bernhard

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #6 am: 03.04.05 - 07:45:07 »
Guten Morgen Bernhard ,

Zitat
Alle Methoden, die Bezug nehmen auf im Notes-Frondend markierte Dokumente, sind nicht für COM und damit externe Programme greifbar.
 


Ist so etwas denn wenigstens mit Hilfe der C API möglich ?

Eine Alternative wäre , wenn ich mir einen Assistenten baue, der die Orddnerstruktur von Notes nachstellt und der User kann dort auswählen welche mails er exportieren will. Dazu müsste ich aber ermitteln in welchem Folder sich die Emails gerade befinden, und welche Folder es überhaupt gibt. - Ist das möglich ?   

Gruß & Dank
Mattias

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #7 am: 03.04.05 - 08:04:34 »
Du kannst mit OLE aufs Frontend zugreifen. Ob das Dein Problem wirklich löst, weiss ich allerdings "aus dem Handgelenk heraus" nicht und ob das eine vernünftige Lösung ist, da OLE leider nicht immer ganz stabil ist, musst Du allerdings abklären.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #8 am: 03.04.05 - 08:47:18 »
@Semeaphoros
Zitat
Du kannst mit OLE aufs Frontend zugreifen

Hast du irgenwelche Quellen parat, wo ich mehr darüber erfahre was OLE kann und wie man es einsetzt ?

Danke im Vorraus
Mattias

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #9 am: 03.04.05 - 08:48:11 »
Die Designer-Hilfe
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #10 am: 03.04.05 - 09:00:22 »
@Semeaphoros
Zitat
Die Designer-Hilfe

Hab ich mir gerade angeschaut.
Bringt mich leider im Augenblick nicht weiter.
Das ist ja der Weg, den ich ohnehin schon gehe. Ich erstelle ein Session objekt , initialisiere ....
Ich wusste nur nicht, dass ich dabei OLE verwende. Ich bin noch ein ziemlicher Neuling auf dem Gebiet.
Im Augenblick greife ich über VB  (Domino Com) auf die Datenbank zu.
Nutze ich dabei bereits OLE oder ist OLE nocheinmal ein anderer Zugriffsweg auf Notes ?

Gruß und Dank
Mattias

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #11 am: 03.04.05 - 09:30:21 »
Wenn Du Domino Com verwendest, gehst Du über COM und nicht OLE, das sind zwei verschiedene Paar Schuhe, COM, eigentlich der Nachfolger von OLE, kann bei Notes eben kein Frontend.

Suche in der Designer-Hilfe das Dokument mit dem Titel "Using OLE".

Und ein UI-Objekt beginnt mit einer Zeile so ähnlich wie diese:

Zitat
Set workspace = CreateObject("Notes.NotesUIWorkspace")

(stammt aus obigem Dokument)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #12 am: 03.04.05 - 10:05:06 »
@Semeaphoros
Hallo,
Erst einmal Vielen Dank für deine Hilfe.

Zitat
Suche in der Designer-Hilfe das Dokument mit dem Titel "Using OLE".

Ich hab mir den Artikel angeschaut. Leider ist alles sehr spärlich beschrieben.
Als ich
dim workspace as object
Set workspace = CreateObject("Notes.NotesUIWorkspace")
verwendet habe, hat mir VB auch leider keine Hinweise auf die dahinterliegenden Objekte gegeben.
Habe ich da irgendetwas falsch gemacht ?

Gibt es irgendwo eine Referenz in der man nachschauen kann was OLE kann ?

Gruß Mattias

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #13 am: 03.04.05 - 11:23:20 »
Da fragst Du mich was, was ich auch nicht entgültig beantworten kann. Aber über Ole kannst Du eigentlich alles machen, was LotusScript eben auch bietet. Schau Dir die beiden Objekte NotesUIWorkspace und NotesSession an, und schau Dir auch die Beispiele zu oben genanntem Ole-Dokument an und bring das zusammen.

Gruss, Jens
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #14 am: 03.04.05 - 12:22:24 »
@ Jens : Danke nochmal für deine Hilfe

Um noch einmal kurz zu umreißen um was es geht:

Ich suche entweder eine Methode um mit Hächchen selektierte mails zu ermitteln oder eine Methode um zu ermitteln welches Dokument sich in welchem Folder befindet (Inbox , Sent etc).

Wichtig ist nur dass dies von aussen geschieht.
Gibt es einen Zugriff auf das Genannte über Com ,C-API , oder OLE oder vielleicht noch eine andere Schnittstelle, die ich noch nicht
kenne ?

Für Hilfe bei diesem Problem wäre ich echt dankbar.
So langsam gehen mir die Ideen aus  :'( .

Gruß Mattias

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #15 am: 03.04.05 - 12:33:39 »
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.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #16 am: 03.04.05 - 14:26:09 »
@TMC
Zitat
Also soweit ich das blicke brauchst Du die UnprocessedDocuments Eigenschaft der NotesDatabase - Klasse.

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


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #17 am: 03.04.05 - 17:51:33 »
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)

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #18 am: 03.04.05 - 18:14:41 »
@Matze:

Set collection = db.UnprocessedDocuments
wurde vom VB6 Compiler anstandslos verarbeitet.
Doc war nothing

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.

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.
@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.
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
« Letzte Änderung: 03.04.05 - 18:20:27 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline matze72

  • Frischling
  • *
  • Beiträge: 17
Re: Per VB Code ermitteln ob Mail selectiert ist
« Antwort #19 am: 03.04.05 - 19:12:49 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz