Autor Thema: %Include "xyz" in der Script-Bibliothek  (Gelesen 15538 mal)

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
%Include "xyz" in der Script-Bibliothek
« am: 07.10.04 - 09:08:21 »
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!
« Letzte Änderung: 17.10.04 - 14:37:29 von adminnaddel »

Glombi

  • Gast
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #1 am: 07.10.04 - 09:20:39 »
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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #2 am: 07.10.04 - 09:47:44 »
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)
...

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

Axel

      


Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #3 am: 07.10.04 - 19:19:32 »
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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #4 am: 07.10.04 - 19:38:44 »
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

 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #5 am: 07.10.04 - 20:23:14 »
Hi,

ich habe übrigens festgestellt, dass man bei verschlüsselten Mails aufpassen muss, da ansonsten nicht jeder Zugriff hat, dies ist auch bei RenderToRTItem der Fall.

Bei RenderToRTItem habe ich mal folgenden Code getestet, der auch funktioniert (in ND6):

Script-Auszug (DocThis ist aktuelles Dokument, in das ein Mail, also docMail, reingerendert werden soll)

   Call docThis.RemoveItem(strRTName)
   Set rtitem = New NotesRichTextItem( docThis, strRTName )
   Call docMail.RenderToRTItem(rtitem)
   Call docThis.Save(False,False)   
   If docMail.IsEncrypted Then
      Forall itm In docThis.Items
         If itm.Name = "PublicEncryptionKeys" Then
            Call itm.Remove
         End If
      End Forall
   End If


Michael

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #6 am: 08.10.04 - 08:42:48 »
Hi,

danke für den Hinweis. Ich werde das bei der weiteren entwickluing berücksichtigen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #7 am: 15.10.04 - 15:44:27 »
Hallo liebe Gemeinde,
vielleicht mal in der ruhigen Minute, komme nicht weiter! Das u.a. Script macht an der roten Stelle im debugger ein Meldefenster auf und haut mir auf die Finger!
Danke

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim rtitem As NotesRichtextItem
   Dim currdoc As NotesDocument   
   Dim doc As NotesDocument
   Dim docNew As NotesDocument
   Dim db As NotesDatabase
   Dim col As NotesDocumentCollection
   
   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 col = ws.PickListCollection(1, False, dbMail.Server, dbMail.FilePath, "($Inbox)","Eingangsbox", "Markieren Sie die gewünschten Mails.")
   If col.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) ----> Meldung = Variant does not contain an object
   
   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)
   
End Sub

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #8 am: 15.10.04 - 15:54:11 »
Hi,

hier dir fehlt die Initialisierung der Variable docMail. Füge mal die beider fettgedruckten Zeilen an den jeweiligen Stellen ein. Dann sollte das funktionieren.


Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim rtitem As NotesRichtextItem
   Dim currdoc As NotesDocument   
   Dim doc As NotesDocument
   Dim docNew As NotesDocument
   Dim docMail As NotesDocument
   Dim db As NotesDatabase
   Dim col As NotesDocumentCollection
   
   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 col = ws.PickListCollection(1, False, dbMail.Server, dbMail.FilePath, "($Inbox)","Eingangsbox", "Markieren Sie die gewünschten Mails.")
   If col.Count = 0 Then Exit Sub
   
   Set docMail = col.GetFirstDocument  'Maildokument

'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) ----> Meldung = Variant does not contain an object
   
   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)
   
End Sub

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

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: %Include "xyz" in der Script-Bibliothek
« Antwort #9 am: 15.10.04 - 15:55:47 »
Tipp: Option Declare einschalten
Thomas

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

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #10 am: 15.10.04 - 16:13:10 »
Danke @Axel,

mir ist das natürlich hinterher auch aufgefallen :-)  .... aber leider funzt es noch immer net! Nun meckert er über diverse weitere gedimmse und variablen .... naja ... wird wohl ne lange Nacht!

Grüße

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #11 am: 15.10.04 - 16:16:10 »
Zwei weitere Tipps:

1. Man soll keinen Code verwenden, den man nicht versteht.
2. Die NotesDocumentCollection sollte schon durchlaufen werden, nur das erste NotesDocument zu instantiieren, wird nicht das bringen, was der User nach "Anhakeln" mehrerer Docs erwartet.

HTH,
Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #12 am: 15.10.04 - 16:20:31 »
2. Die NotesDocumentCollection sollte schon durchlaufen werden, nur das erste NotesDocument zu instantiieren, wird nicht das bringen, was der User nach "Anhakeln" mehrerer Docs erwartet.


Hi,

die Collection kann immer nur ein Dokument enthalten, denn in der Picklist ist keine Mehrfachauswahl zugelassen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #13 am: 15.10.04 - 16:36:22 »
Jo, hast recht, Axel. Aber das macht es nur noch schlimmer ("Markieren Sie die gewünschten Mails.").

Ansonsten: Thomas Völk's Hinweis (eigentlich sollte das eine Forderung sein: Option Declare !!!) fördert das Nicht-Deklarieren der NotesDatabase-Objekte zutage. Das sollte dann ja nicht gerade eine lange Nacht bereiten  ;)

Bernhard

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #14 am: 15.10.04 - 22:19:53 »
Okay, nun läuft es glatt durch den debugger .....

nur  ::)

erhalten ich in meiner Picklist keine Auswahlmöglichkeit! keine Mails zusehen:

'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

Im debugger ist zu erkennen, daß er meine MailDb nicht findet!!

Puh .. noch ein kleiner Tipp .. bidddde :-)

Grüße

Glombi

  • Gast
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #15 am: 15.10.04 - 22:36:00 »
Die Einstellungen zum Öffnen der Maildb nimmt Notes aus der Arbeitsumgebung. Kontrolliere mal. ob Mail-Server und Pfad stimmen.
Du kannst das im Client testen, indem Du in der Statuszeile unten rechts auf das Mail-Symbol klickst und dann Memo erstellen wählst.

Andreas

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #16 am: 16.10.04 - 07:20:19 »
Warum auch immer ... hatte nichts geändert! ... aber jepp ... nun klappt es!
Habe noch die Lib übernommen und zusätzlich

docNew.Form = "Memo"

eingefügt!

Fertig ist die ProjektmanagementDb

Vielen Dank für die Zahlreichen Hilfen
 :-*

Grüße

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #17 am: 16.10.04 - 12:22:54 »
... nun bin ich doch schon wieder am verzweifeln!

Versuche aus der ProjektmanagementDb vom selektiertem doc ein Feldwert auszulesen:

...
 Set uiview = ws.Currentview
 Set col = dbCurrent.AllDocuments
 Set doc = col.GetFirstDocument
 Call uiview.SelectDocument(doc)
 Call doc.FieldGetText( "test" )
...

aber der Wert bleibt NULL .. im debugger!
Jemand vielleicht einen kleinen Ansatz für mich?

Grüße

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #18 am: 16.10.04 - 15:08:59 »
Deine Variable Doc ist ein NotesDocument und die Methode FieldGetText ist eine Methode des NotesUIdocumentes, und da kommt logischerweise nichts zurück (weil LS das dann als Feldnamen interpretiert). Was Du suchst ist

doc.GetItemValue("test"), aber schau das doch bitte mal in der Hilfe nach.
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 adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re: %Include "xyz" in der Script-Bibliothek
« Antwort #19 am: 16.10.04 - 15:27:55 »
Vielen .. vielen .. Dank ;D
Yepp .. das war es was ich sucht ....!!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz