Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mwue am 05.05.05 - 20:56:55

Titel: Agenten per Schaltfläche von einer DB in die andere kopieren.
Beitrag 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
Titel: Re: Agenten per Schaltfläche von einer DB in die andere kopieren.
Beitrag von: TMC am 05.05.05 - 21:15:22
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
Titel: Re: Agenten per Schaltfläche von einer DB in die andere kopieren.
Beitrag von: mwue am 05.05.05 - 22:24:09
Vielen Dank ! Das hört sich wirklich gut an. Ich probiere es gleich aus.

Der Abend ist gerettet.

Viele Grüße

Marion
Titel: Re: Agenten per Schaltfläche von einer DB in die andere kopieren.
Beitrag von: mwue am 06.05.05 - 09:26:09
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

Titel: Re: Agenten per Schaltfläche von einer DB in die andere kopieren.
Beitrag von: Glombi am 06.05.05 - 09:35:12
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
Titel: Re: Agenten per Schaltfläche von einer DB in die andere kopieren.
Beitrag von: mwue am 06.05.05 - 13:33:55
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