Domino 9 und frühere Versionen > ND6: Entwicklung

Wo befinde ich mich

<< < (3/3)

pram:
ja hört sich sehr ähnlich nach meinem Problem an  ;D (und auch die Hürden die du umschiffen musst, hatte ich)

ich hab nochmal im Code nachgesehen, wie ich das gemacht habe:

Im Smarticon steht bei mir:
@Command([Compose];"server!!pfad\zur\db.nsf";"smarticon.form")
(diese Maske ist NICHT in der MailDB)

in der "smarticon.form" steht dann:

Public currDB       As NotesDatabase
Public currView    As NotesUIView
Public currDoc    As NotesUIDocument

Sub Initialize
   On Error Resume Next
   Dim currWS   As New NotesUIWorkspace
   Set currDB   =  currWS.CurrentDatabase.Database   
   Set currView   =  currWS.CurrentView
   Set currDoc   =  currWS.CurrentDocument   
   On Error Goto 0
   Call run(currDB, currView, currDoc)
End Sub

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   continue=False
End Sub

Ist ein Doc geöffnet so ist currDB und currDoc gesetzt. Bist du hingegen in einer Ansicht ist zusätzlich noch currView gesetzt. (Am Workspace ist nur currDB gesetz)
Wichtig ist dabei, dass man sich currentXXX bereits im Initialize holt.

MartinN:
Danke für den Tipp, werde mal sehen ob ich das so hinbekommen.
Dennoch bleiben Fragen?


--- Zitat von: pram am 26.05.09 - 15:29:31 ---
Im Smarticon steht bei mir:
@Command([Compose];"server!!pfad\zur\db.nsf";"smarticon.form")
(diese Maske ist NICHT in der MailDB)


--- Ende Zitat ---

Wo denn dann? In der DB wo der Agent liegt? Wieso benötige ich eine Maske?

pram:
Also, um einen Agent aus dem Smarticon heraus zu starten ist mir (nur) folgender Weg bekannt.


--- Code: ---@SetEnvironment( "currentDocumentRef"; @Implode(@DbName;"!!")+"#"+@Text(@DocumentUniqueID) );
@Command([FileOpenDatabase];"server":"roland\\sandbox.nsf");
@Command([FileCloseWindow]);
@Command([RunAgent];"MyAgent")
--- Ende Code ---

Das Problem ist hier
a) dass ich in die notes.ini rein schreiben muss
b) die Datenbank öffnen muss (ein Parameter für RunAgent a la "server!!database\MyAgent" gibt es meines Wissens nicht
-> im Agent kann ich über LS nicht mehr auf die gerade geöffnete DB zugreifen, es muss vorher alles in der Ini abgespeichert werden

Mache ich hingegen ein

--- Code: ---@Command([Compose];"server!!roland\\sandbox.nsf";"MyForm")
--- Ende Code ---
so kann ich
a) direkt den Verweis zur DB angeben (ich muss die DB nicht Öffnen/schließen wie oben)
b) im Initialize der Form über LS auf die gerade geöffnete DB (welches in deinem Fall die MailDB ist) zugreifen

Du benötigst eine Maske (in der DB in der der Agent liegt) da du diese direkt per Compose öffnen kannst. In das initialze der Maske packst du deinen Agentcode (die Maske ersetzt praktisch den Agent)

Ich geb zu, dass dies ggf. eine etwas "unorthodoxe" Methode ist, aber ich hab leider keine andere Möglichkeit gefunden, um dieses Problem zu lösen.

Gruß
Roland

MartinN:
Danke für die Antworten!
Werde ich mal testen.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln