Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Don Pasquale am 02.10.03 - 12:21:46

Titel: Agent im WebQueryOpen
Beitrag von: Don Pasquale am 02.10.03 - 12:21:46
Im WebQueryOpen rufe ich einen Agenten auf,
der folgende Fehler erzeugt:
Error creating product object

Jetzt sagt mir aber nicht, ich dürfte im WebQueryOpen
keine FrontEnd Befehle nutzen ?

Ciao
Don Pasquale

Sub Initialize
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim session As New NotesSession
   Dim doc As NotesDocument
   Set uidoc = uiws.CurrentDocument
   Set doc = uidoc.Document
   Dim obj As NotesEmbeddedObject
   Dim rti As NotesRichTextItem
   
   OCXREG$ = "C:\TEMP\DATA\00001.txt"
   
   If uidoc.IsNewDoc Then
      If DoesFileExists ( OCXREG$ ) > 0 Then
         doc.subject = " Attachment"
         Set rti = New NotesRichTextItem( doc, "Body" )
         Set obj = rti.EmbedObject(EMBED_ATTACHMENT, "", OCXREG$)
         Call doc.save (True,True)
      End If
   End If
End Sub
Titel: Re:Agent im WebQueryOpen
Beitrag von: Glombi am 02.10.03 - 13:31:22
Hi,
ich fürchte, ich muss Dir die grausame Wahrheit sagen: Du kannst keine UI Klassen verwenden.

In Web Agenten musst Du das so machen:

   Dim session As New NotesSession
   Dim doc As NotesDocument
  Set doc = session.DocumentContext
   Dim obj As NotesEmbeddedObject
   Dim rti As NotesRichTextItem
   
   OCXREG$ = "C:\TEMP\DATA\00001.txt"
   
   If doc.NewDoc(0)="" Then
      If DoesFileExists ( OCXREG$ ) > 0 Then
         doc.subject = " Attachment"
         Set rti = New NotesRichTextItem( doc, "Body" )
         Set obj = rti.EmbedObject(EMBED_ATTACHMENT, "", OCXREG$)
         doc.NewDoc = "0"
         Call doc.save (True,True)
      End If
   End If

Ob das aber mit dem RTF Feld funkioniert, musst Du mal testen.
Das Feld NewDoc ist der Trigger - das solltest Du in die Maske als berechnetes Feld einbauen:
Vorgabewert = ""
Eingabeumsetzung = "0"

Andreas
Titel: Re:Agent im WebQueryOpen
Beitrag von: Don Pasquale am 02.10.03 - 14:11:37
@Glombi


Ich habe mal mit folgendem Code angefangen,
aber selbst der funktioniert nicht :

   Dim session As New NotesSession
   Dim doc As NotesDocument
   Set doc = session.DocumentContext
   Dim obj As NotesEmbeddedObject
   Dim rti As NotesRichTextItem
   
    doc.subject = " Attachment"
    Call doc.save (True,True)
 

Was will ich überhaupt:

Im Lotus-Webmail wird eine neue Memo erstellt.
Handelt es sich um ein neues Dokument,
wird ein Agent aufgerufen.

Der Agent wird auch tatsächlich aufgerufen,
er will mir aber nicht gelingen, die aktuelle
geöffnete Mail irgendwie zu verändern,
denn eigentlich will ich prüfen ob eine
Datei existiert und diese als Attachment
übergeben.

Ciao
Don Pasquale

Titel: Re:Agent im WebQueryOpen
Beitrag von: wflamme am 02.10.03 - 18:00:53
Don,
da ist Schicht mit WQO, das wird getriggert, bevor das InMemory-Dokument ausgeliefert wird, also viel zu spät, um noch was am Backend-Doc zu machen. Deshalb kommst Du da auch nicht mehr dran.

Der richtige Zeitpunkt zur Prüfung etc wäre das WQS, was spricht dagegen?
Titel: Re:Agent im WebQueryOpen
Beitrag von: Axel_Janssen am 03.10.03 - 10:58:19
Eine Alternative zu wflammes Vorschlag ist das folgende:

Der ich glaube klassische workaround besteht darin, die Werte der Felder beim öffnen des Dokuments als CGI Variablen zu übergeben:

Zitat
...?Open&Field=Value

and have the webQueryOpen agent (or a simple field @formula) get that value from the QUERY_STRING_DECODED CGI field.


See designer help for assistance on how to use CGI fields, or search this forum for QUERY_STRING_DECODED


Die Feldvariante ist besser als der sehr inperformante WQO-Agent.
Versuchs einfach mal aus und mach dir ein Feld mit der entsprechenden CGI-Formel. Zu faul jetzt den loNo Designer aufzumachen. Versuchs mit der Hilfe.

Gruß Axel