Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mwue am 05.05.05 - 20:56:55
-
Hallo,
ich habe in meiner Mailbox einen Agenten geschrieben, der auch für meine Kollegen interessant ist.
Diese Agenten habe ich in eine ansonsten leere Datenbank "Tools" kopiert.
Damit nun nicht jeder Kollege den Agenten selber aus der Datenbank in seine Mailbox kopieren muss, folgende Frage:
Gibt es die Möglichkeit, eine Mail mit einem Button zu versenden, der automatisch den Agenten von einer Datenbank "Tools" in die Mailbox des Users kopiert ?
Soweit bin ich mit der Programmierung des Knopfes schon gekommen:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim agentname, noteID As String
Dim db As NotesDatabase
Dim agentdoc As NotesDocument
Dim notesAgent As NotesAgent
Dim dbtools As NotesDatabase
Set db = session.CurrentDatabase
Set dbtools = New NotesDatabase( "Server", "tools.nsf" )
Forall agent In dbtools.Agents
agentname = agent.Name
Msgbox agentname
Select Case agentname
Case "Mein Agentname"
Call AgentCopy
End Select
End Forall
End Sub
Allerdings fehlt mir noch der Inhalt der Routine AgentCopy. Ich habe noch keine Möglichkeit gefunden einen Agenten zu kopieren.
Hat jemand eine Idee oder gibt es einen anderen Weg ?
Vielen Dank und viele Grüße
Marion
-
Siehe z.B.
http://www.atnotes.de/index.php?topic=16370.0
Ab ND6 kann man ansonsten auch Designelemente quasi als Dokumente behandeln.
Stichwort: NotesNoteCollection
-
Vielen Dank ! Das hört sich wirklich gut an. Ich probiere es gleich aus.
Der Abend ist gerettet.
Viele Grüße
Marion
-
Hallo ,
ich bin immer wieder begeistert, was man alles mit Lotus Script machen kann. Nun habe ich doch noch ein Problem.
Wie kann man in einer Datenbank Agenten per Script löschen, die man selber nicht signiert hat ?
Das müßte der Anwender nämlich mit dem Knopf auch machen können, um zu verhindern, dass die Agenten doppelt in der Datenbank vorhanden sind (ältere und neuere Versionen).
Wenn ich in meinem Knopf folgendes schreibe
Set Agent = db.GetAgent (AGENT1_NAME)
If Not Agent Is Nothing Then
Call Agent.Remove
End If
... dann installiere ihn neu
bekommt der User (der ja nicht Owner des Agenten ist) folgende Fehlermeldung:
"Can't remove agent belonging to another user"
Manuell kann der User mit Managerrechten aber Agenten, dessen Owner er nicht ist aus der Datenbank löschen.
Gibt es eine Möglichkeit die Owner Eigenschaft per Script zu verändern ?
Vielen Dank und viele Grüße
Marion
-
Das geht mit Script nicht, da die Property "Owner" Read-only ist.
Was aber evtl. geht ist folgendes:
Call notesDatabase.Sign( [ documentType% ] [ , existingSigsOnly ] [ , nameStr$] [ , nameStrIsNoteID ] )
Du kannst also den Agenten signieren. Wie das geht steht in der Hilfe. Das müsste dann ungefähr so aussehen:
Call db.Sign( DBSIGN_DOC_AGENT, false, AGENT1_NAME, false )
und anschließend dann das
call Agent.Remove
Andreas
-
Hallo Andreas,
Dein Tipp war super. Ich konnte den Befehl genauso übernehmen.
Nach dem Signieren klappt dann auch das Löschen.
Vielen vielen Dank ! :) :) :)
Marion