Domino 9 und frühere Versionen > Entwicklung

%Include "xyz" in der Script-Bibliothek

(1/6) > >>

adminnaddel:
Hallo liebe Gemeinde,

ich habe eine tolle Funktion im Gateway von Pavone entdeckt! Nicht das ich dieses abkupfern möchte, um dem Pavone Team zu schädigen, aber die Funktionalität interessiert mich sehr!

Über eine Installationsroutine wird eine Aktion und ein Agent in die vorhande eigene MailDb gepackt, welche bei Bedarf das ausgewählte MailDoc sich greift und in eine andere vorhandene Datenbank schießt!
Das Design der Datenbank ist offen, doch leider leider finde ich nichts anderes als:

%INCLUDE "PAVONE"

Das hilft mir nicht wirklich weiter!!!

In der OpenOffice Datenbank ist das Ganze anderesrum, hier habe ich die Möglichkeit aus der bestehende ProjektDb ein Dialogfenster zu öffnen, welches mir meine MailDb und somit meine Mails anzeigt und ich in der Lage bin, ein Doc auszuwählen und als NEWDOC in die Db einzupflegen!

Fragen:
1) %INCLUDE "PAVONE" 'das bedeutet doch, das der Code ausgelagert ist! Ist dieser mit Mitteln zu greifen?
2) Die Funktionalität wie in der OpenOffice hat diese schon einer nachgebaut? Wenn ja, welchen Ansatz ist hier empfehlenswert?

Grüße

PS: Es geht hier nicht um hacken und nacken ... sondern lediglich um Verständis und dem Bedarf an einer eigenen ProjektDb mit Mutter und TochterDoc welches mir das einfache Anhängen einer Mail zb als Bericht erlaubt!

Glombi:
Das ist das übliche Vorgehen, seinen mühsam erarbeiteten Code zu verbergen, obwohl das Design der Datenbank offen ist.
Durch %Include bindet man eine ASCII Datei (lss) ein, in der der Script Code ist. Das wird dann sofort kompiliert und anschließend kann man die Datei löschen (was man natürlich nicht tun sollte  ;D)

Andreas

Axel:
Hi,

zu 2. Ich hab das versucht nachzubauen. So ganz bin ich noch nicht glücklich damit. Es ist noch ein bisschen Feinarbeit notwendig.


Hier mal ein Denkansatz

--- Code: ---...
Set dbCurrent = session.CurrentDatabase

'Zugriff auf Mail-DB des Users
Set dbMail = New NotesDatabase("","")
dbMail.OpenMail
If Not dbMail.IsOpen Then
Messagebox "Die Mail-Datenbank kann nicht geöffnet werden." + Chr$(10) + "Es können keine Mails importiert werden.", 16, "Vorgänge - Fehler"
Exit Sub
End If  'If Not dbMail.IsOpen Then

'Dialog zur Auswahl
Set collection = workspace.PickListCollection(1, False, dbMail.Server, dbMail.FilePath, "($Inbox)","Eingangsbox", "Markieren Sie die gewünschten Mails.")
If collection.Count = 0 Then Exit Sub

'Abfrage ob Anhänge mit übernommen werden sollen
If Messagebox("Sollen eventuell vorhandene Dateianhänge mit übernommen werden?", 36, "Vorgänge") = 6 Then
intAttachment = 1  'Anhänge werden übernommen
Else
intAttachment = 0 'Anhäge werden nicht übernommen
End If  'If Messagebox("Sollen eventuell vorhandene Dateianhänge...

'Einfügen in Datenbank
Set docNew = docMail.CopyToDatabase(dbCurrent)

Call docNew.ComputeWithForm(False, False)
...
If intAttachment = 0 Then  'Wenn Dateianhänge nicht übernommen werden sollen, werden sie hier gelöscht
If docNew.HasEmbedded Then
Set rtitem = docNew.GetFirstItem("Body")   
If rtitem.Type = RICHTEXT Then
Forall objects In rtitem.EmbeddedObjects
If objects.Type = EMBED_ATTACHMENT Then
Call objects.Remove
End If  'If objects.Type = EMBED_ATTACHMENT
End Forall  'Forall objects In rtitem.EmbeddedObjects
End If  'If rtitem.Type = RICHTEXT
End If   'If refdoc.HasEmbedded
End If  'If intAttachment = 0 Then

Call docNew.Save(True,False)
...

--- Ende Code ---

Wie gesagt es ist ein Denkansatz. Was hier noch fehlt ist die Verbandelung mit einem Adress- oder Projektdokument.

Axel

      


koehlerbv:
Axel, Du brauchst doch nur noch das ausgewählte Dokument (aus einer Ansicht oder das geöffnete Dokument selber) zu instantiieren und dann mit NotesDocument.MakeResponse mit dem docNew zu "verbandeln". Da fehlt ja nicht mehr viel  ;)

Ich würde allerdings davon abgehen, das ganze Mail-Dokument in die Zieldatenbank zu schiessen: Das setzt ja immer voraus, dass es dort auch eine Maske "Memo" gibt. Wenn Du den form name für das neue Dokument angibst und dann ein RenderToRTItem aus dem Mail-Dokument machst in das RTI Deines newDoc, bist Du viel unabhängiger.

Bernhard

Axel:
Hi,

das Ganze hab ich aus einem Agent rauskopiert. Ich hab mich auf das wesentliche beschränkt damit es klar wird wie man so was angehen kann.

In meinem Agent instanziere ich ein Dokument und "hänge" das Mail dann dran. In der Datenbank gibt es eine Maske, die die wichtigsten Felder des Mails enthält, also Body, Subject etc. Die weise ich dem Dokument auch zu. Ich hatte einiges getestet und bin im Moment bei dieser Methode hängengeblieben, weil alles andere hat nicht sauber funktioniert hat. Ich hatte die tollsten Ergebnisse. Ziel ist es, dass auch die HTML-Mails so in der DB dargestellt werden, wie sie in der Mail-DB vorhanden sind. D.h. mit Grafiken, Links und allem was danoch so dazu gehört.

Es gibt sogar einen Thread dazu, bei dem hast auch du mitgewirkt.

Ob ich mit RenderToItem weiterkomme weiss ich nicht. Ich glaube ich hatte das mal probiert. Ich werde das Ganze aber noch mal angehen. Ich will damit auch mal unter 6.5 mein Glück versuchen.

Axel

 

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln