Ist es möglich, Skriptbibliotheken aus einer anderen Datenbank aufzurufen?Skriptbibliothek aus einer anderen Datenbank verwenden
Antwort
Nicht direkt. Das Einzige, was Sie tun können, ist, eine Datenbank von der anderen zu übernehmen und nur die zu vererbenden Lotusscript-Bibliotheken zu setzen. Dann könnten Sie Änderungen an dem übergeordneten Element vornehmen und diese auf die untergeordneten (oder untergeordneten) Datenbanken übertragen.
Sie können jedoch Agenten in einer anderen Datenbank ausführen. Agenten wiederum können Skriptsammlungen in ihren eigenen Datenbanken aufrufen. Abhängig von Ihren Zielen können Sie möglicherweise das bekommen, was Sie benötigen.
Aus Ihren Kommentaren scheint es, dass Sie einen Agenten in einem Agenten anrufen. Nicht wirklich der beste Weg, um es zu tun.
Sie können das gewünschte Ergebnis erhalten, wenn Sie den "TextExternalUse" -Agenten direkt über die Schaltfläche aufrufen. Dies bedeutet, dass Sie eine normale Aktionsschaltfläche anstelle einer freigegebenen Aktion erstellen und den Agenten direkt aufrufen müssen.
UPDATE: Ich denke, ich weiß, was Ihr Problem ist. Wenn Sie eine Formel zum Aufrufen des Agenten in der anderen Datenbank verwenden, funktioniert sie nicht, da die Formel nur Agenten in der aktuellen Datenbank aufrufen kann. Wenn Sie also "ToolsRunMacro" verwenden, hat es keinen Parameter zum Angeben einer anderen Datenbank.
Versuchen Sie, den Agenten mit LotusScript aufzurufen. Hier ist ein Beispiel.
Ich habe 2 Datenbanken ein mit einem Agenten „ClickMe“ genannt, die einfach zeigt ein „notesUIWorkspace.prompt“, und eine andere Datenbank mit einer Ansicht, die eine Aktionsschaltfläche mit dem folgenden Code hat, den die Agenten von db1 ruft
Sub Click(Source As Button)
Dim agnt As notesAgent
Dim db2 As notesDatabase
Set db2 = New notesDatabase("","test2.nsf")
Set agnt = db2.GetAgent("clickme")
Call agnt.Run
End Sub
Können Sie etwas wie oben testen?
Ich habe versucht, den Agenten von einer freigegebenen Aktion und von einer Schaltfläche aus aufzurufen, aber der Agent wird nicht ausgeführt. Es sollte ein Meldungsfeld anzeigen. Vielleicht gibt es ein Sicherheitsproblem. – Seitaridis
Erhalten Sie eine Fehlermeldung? Nur nichts zu tun ist ungewöhnlich. Solange (Sie) der Benutzer Zugriff auf die andere Datenbank hat. Es sollte funktionieren. Ich habe meine Antwort oben mit einem kurzen Code geändert. – giulio
Betrachten wir diesen Code: Dim-Agent als NotesAgent Set-Agent = destdb.Getagent ("TestExternalUse") Wenn nicht (Agent ist nichts) dann Call Agent.Run Else MsgBox "Agent nicht gefunden ..." Ende Wenn – Seitaridis
Ich versuche, einen Agenten aus LotusScript auszuführen, aber nichts passiert. Dies ist mein Code: Dim Agent Als Notesagent \t \t Set agent = destdb.Getagent ("TestExternalUse") \t \t \t \t If Not (Bevollmächtigter Nichts ist) Dann \t \t \t Anruf Agent.Run \t \t \t \t \t Else \t \t \t MsgBox "Agent nicht gefunden ..." \t \t End If – Seitaridis
Dieser Code sieht gut aus. Angenommen, es kann den Agenten finden, wird es versuchen, es auszuführen. Welchen Fehler siehst du? Denken Sie daran, dass einige Agenten nicht ordnungsgemäß ausgeführt werden, wenn sie so ausgelöst werden, weil der Kontext nicht richtig ist (z. B. Agenten mit Front-End-Interaktionen wie die NotesUI * -Klassen oder solche, die für ausgewählte Dokumente ausgeführt werden) – Ben
Ich habe eine Ansicht, die eine freigegebene Aktion enthält, die mit Formelcode geschrieben wurde. In dieser freigegebenen Aktion wird ein LotusScript-Agent aufgerufen. Und von diesem LotusScript-Agenten möchte ich einen anderen Agenten in einer anderen Datenbank (destdb) starten. Der Name des Agenten lautet "TestExternalUse". Es wird bei einem Ereignis ausgelöst, sein Ziel ist None und es wird geteilt. – Seitaridis