Autor Thema: Agenten aufrufen  (Gelesen 5305 mal)

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Agenten aufrufen
« am: 31.03.08 - 16:48:48 »
Hallo,
über die Database Script möchte ich über LotusScript einen Agenten aufrufen.
Über Formula klappt das wunderbar. Da ich aber mehr Funktionen einfügen möchte, bin ich gezwungen LotusScript zu verwenden.
Allerdings bekomme ich jedes mal, wenn der Interpreter versucht den Agenten auszuführen, folgende Fehlermeldung:

Zitat
Notes error: Unsupported trigger and search in the beackground or embedded agent => QueryDocumentDelete 10

Hier mein Code:

Code
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
	On Error Goto EH
	Dim s As New NotesSession
	Dim db As NotesDatabase
	Dim agent As NotesAgent
	
	Set db = s.CurrentDatabase
	
	Set agent = db.GetAgent("delete_selected")
	Call agent.Run
	
PE: 	Exit Sub
EH:	Call raiseError("", Err, Error$, Erl)	
End Sub

Liebe Grüße
Giordano

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Agenten aufrufen
« Antwort #1 am: 31.03.08 - 16:53:03 »
Dann solltest Du in den Agenteneigenschaften die Aufrufart ändern. ;)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Agenten aufrufen
« Antwort #2 am: 01.04.08 - 09:56:27 »
Hallo m3,
Dann solltest Du in den Agenteneigenschaften die Aufrufart ändern. ;)
danke, für deine Antwort. Dumme Frage: Wie macht man das? Habe schon selbst versucht das einstellen zu können.
Ich sehe in diesem Zusammenhang nur folgende Einstellungsmöglichkeiten: Trigger --> On Event oder On Schedule.

Nachtrag: Bei mir ist On Event eingestellt.

Liebe Grüße
Giordano
« Letzte Änderung: 01.04.08 - 10:08:06 von Dubidu »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agenten aufrufen
« Antwort #3 am: 01.04.08 - 11:05:00 »
Wie sehen denn die Agenten-Eigenschaften aus. Die Startart hast du ja schon geschrieben, aber was ist als Ziel eingetragen (Ausgewählte Dokumente, Alle Dokumente...).

Außerdem kannst du bei der Startart "On Event" noch einstellen, welcher Event gemeint ist (z.B. Nach Eingang neuer Mail, Auswahl im Menü, usw.). Was hast du denn hier eingestellt?


Axel
« Letzte Änderung: 01.04.08 - 11:07:34 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Agenten aufrufen
« Antwort #4 am: 01.04.08 - 11:33:07 »
Hi Axel,
folgendes habe ich noch eingestellt:

On Event -->  Action menu selection --> All selected documents

Liebe Grüße
Giordano

Offline BMWTordi

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
Re: Agenten aufrufen
« Antwort #5 am: 01.04.08 - 11:39:21 »
Probier mal das Ziel von "All Selected Documents" auf "None" (bei mir heißt das "keines") umzustellen und versuch es dann nochmal.
..... ein IT-Noob


Meine Umgebung:
2 Domino Cluster-Server (7.0.1) SLES 9 SP 3
1 Domino Server (7.0.1) SLES 9 SP 3
1 Domino Server (7.0.1) Win2k Server

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agenten aufrufen
« Antwort #6 am: 01.04.08 - 11:39:40 »
Was hast du als Event bei der Startart "On Event" eingestellt?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Agenten aufrufen
« Antwort #7 am: 01.04.08 - 11:52:12 »
Was hast du als Event bei der Startart "On Event" eingestellt?

Action menu selection


@BMWTordi: Bei "None" passiert leider gar nichts. Heisst: Der Agent wird erst gar nicht aufgerufen und die View verhält sich normal.


Wichtig ist zu wissen, dass der Agent durch einen Tastendruck durch die entf-Taste ausgelöst wird.

Liebe Grüße
Giordano

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten aufrufen
« Antwort #8 am: 01.04.08 - 12:00:42 »
1. Bei dieser Art des Agentaufrufs muss der Agent scheduled sein.
2. Warum wird überhaupt ein Agent verwendet? In diesem Zusammenhang kann doch auch eine stino Sub aufgerufen werden ...

Bernhard

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agenten aufrufen
« Antwort #9 am: 01.04.08 - 12:09:34 »
1. Bei dieser Art des Agentaufrufs muss der Agent scheduled sein.

Bist du dir da sicher?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten aufrufen
« Antwort #10 am: 01.04.08 - 12:16:56 »
Ja. Schau Dir auch nochmal die Fehlermeldung aus dem Ursprungspost an.

Bernhard

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Agenten aufrufen
« Antwort #11 am: 01.04.08 - 14:40:29 »
Hallo,
da das Problem für mich nicht ohne weiteres lösbar ist, habe ich mich einer internen Bibliothek unserer Firma bedient, mit der ich sowieso in Zukunft damit arbeiten werde.

Trotzdem danke für die Hilfeleistung und Antworten!

Ein Problem habe ich jedoch noch:
Ist es möglich, ein Dokument, das in einer View zum Löschen markiert wurde, wieder zu demarkieren? Ich meine nicht die Häckchen, sondern die Kreuze, die auftauchen, wenn man die entf-Taste drückt.

@koehlerbv: Was ist stino Sub?

Liebe Grüße
Giordano

klaussal

  • Gast
Re: Agenten aufrufen
« Antwort #12 am: 01.04.08 - 14:43:54 »
Ja (Entf-Taste drücken)

stinknormale Subroutine

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten aufrufen
« Antwort #13 am: 01.04.08 - 14:46:48 »
Zu den Themen "Häckchen" (oder "Hacken") als auch stino: Siehe das Glossar hier im Forum.

Wegen dem Entfernen der Markierungen: Das Reagieren auf Löschungen ist Backend, die Markierungen jedoch Frontend. Das beisst sich also. Und ohne Kenntnis Deiner Intentionen kann man herzlich wenig zu einer möglichen Lösung sagen.

Bernhard

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Agenten aufrufen
« Antwort #14 am: 01.04.08 - 15:53:26 »
Zu den Themen "Häckchen" (oder "Hacken") als auch stino: Siehe das Glossar hier im Forum.

Wegen dem Entfernen der Markierungen: Das Reagieren auf Löschungen ist Backend, die Markierungen jedoch Frontend. Das beisst sich also. Und ohne Kenntnis Deiner Intentionen kann man herzlich wenig zu einer möglichen Lösung sagen.

Wenn der User die entf-Taste drückt, kommt eine Abfrage, ob er sich sicher sei, dass er das Dokument (in der View) tatsächlich unwiederruflich löschen möchte. Wenn er auf "Ja" drückt wird gelöscht (klappt wunderbar), wenn er auf "Nein" drückt, soll jedoch keine Löschmarkierung vorgenommen werden. Wenn ich den Code direkt in Querydocumentdelete schreibe und Continue einfach auf false setze, wenn "Nein" gedrückt wird, klappt das wunderbar. Aber wenn ich den Code in einen Agenten einfüge und diesen Agenten über Querydocumentdelete aufrufe, steht mir die Option Continue über den Agenten nicht mehr zur Verfügung.
Deswegen brauche ich eine Alternative. Eine wäre z. B. die Löschmarkierung wieder explizit rückgängig zu machen.

Liebe Grüße
Giordano

klaussal

  • Gast
Re: Agenten aufrufen
« Antwort #15 am: 01.04.08 - 15:57:17 »
Mal so als Anregung:

Code
This view action deselects all documents in the current view.


Sub Click(Source As Button)
  Dim ws As New NotesUIWorkspace
  Dim uiview As NotesUIView
  Set uiview = ws.CurrentView
  Call uiview.DeselectAll
End Sub

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten aufrufen
« Antwort #16 am: 01.04.08 - 16:09:11 »
Wenn Du jetzt noch eine sinnvolle Begründung liefern würdest, warum Du das in einem Agent haben möchtest ... Bis dahin lohnt es sich unsererseits eher weniger, sich mit dem Problem zu beschäftigen.

Bernhard

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Agenten aufrufen
« Antwort #17 am: 01.04.08 - 17:34:28 »
Mal so als Anregung:

Code
This view action deselects all documents in the current view.


Sub Click(Source As Button)
  Dim ws As New NotesUIWorkspace
  Dim uiview As NotesUIView
  Set uiview = ws.CurrentView
  Call uiview.DeselectAll
End Sub

Hi klauss,
soweit ich weiss gibt es einen Unterschied zwischen dem Deselectieren der Häckchen (was obiges macht) und dem rückgängig machen der zum löschen markierten Dokumenten.

@Bernhard:
Bei einer Funktion komme ich ja um das Continue-Problem auch nicht herum.

Seltsamerweise funktioniert auch nicht der Code, wenn ich ihn in eine Library kopiere:

Code
Function deleteSelected()
	On Error Goto EH
	
	Dim continue As  Variant
	Dim nuiw As New NotesUIWorkspace
	Dim yes_Cancel As Integer
	Dim uiview As NotesUIView
	
	Set uiview = nuiw.CurrentView
	'Msgbox lsf.CurrentDB.AllUnprocessedDataRecords.lSize
	If uiview.ViewName = "Papierkorb" Or uiview.ViewName = "MitarbeiterListe"Then 
		
		yes_Cancel = Messagebox("Achtung! Dies löscht unwiederruflich die Daten!", 3 + 48, "ACHTUNG!")
		
		If yes_Cancel = 6 Then 'Ja
			
			'Dim nuiw As New NotesUIWorkspace
			
			Dim ns As New NotesSession
			Dim db As NotesDatabase
			Set db = ns.CurrentDatabase
			
			Dim dc As NotesDocumentCollection
			
			Dim nextdoc As NotesDocument
			Dim doc As NotesDocument
			
			Set dc = db.UnprocessedDocuments ' Markierte View-Einträge! :-)
			Set doc = dc.GetFirstDocument
			
			Do While Not (doc Is Nothing)
				Set nextdoc = dc.GetNextDocument(doc)
				Call doc.RemovePermanently(True)
				Set doc = nextdoc
			Loop
			
			Call nuiw.ViewRefresh
			
%REM 
Dim itUnprocessed As GISNCIterator
			Dim dr As GISNotesDataRecord
			
			Set itUnprocessed = lsf.CurrentDB.AllUnprocessedDataRecords
			While itUnprocessed.hasNextElement
				Set dr = itUnprocessed.nextElement
				Call dr.nd.Remove(True)
				
			Wend 
%END REM
		Else
			Continue = False
		End If
		Call nuiw.ViewRefresh
	End If
PE: 	Exit Function
EH:	Call raiseError("", Err, Error$, Erl)	
End Function

Die Abfrage wird zwar ausgeführt, aber die Dokumente werden nicht gelöscht, wenn man auf "Ja" klickt. Es tut sich nichts. Es kommt nicht mal eine Fehlermeldung. Die Löschmarkierung wird jedoch vorgenommen (was ja ok ist).

Liebe Grüße
Giordano

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agenten aufrufen
« Antwort #18 am: 01.04.08 - 18:51:26 »
Im Moment stehe ich etwas auf dem Schlauch. Was ist denn aus deinem Agenten geworden?
Oder ist die Funktion der Ersatz für den Agenten?

Wo und wie rufst du denn die Funktion auf? Zeig' mal ein bisschen Code.

Also ganz grob würde ich das so lösen:

Code
Sub QueryDocumentDelete(Source As NotesUIDatabase, Continue As Boolean)

  Dim collection As NotesDocumentCollection
  Dim doc As NotesDocument
  Dim tmpdoc As NotesDocument

  Set collection = Source.Documents   'Alle markierten Dokumente
  If collection.Count = 0 Then Exit Sub

  If Messagebox("Achtung! Dies löscht unwiederruflich die Daten!", 3 + 48, "ACHTUNG!") = 6 Then
    Set doc = dc.GetFirstDocument
	
    While Not (doc Is Nothing)
      Set tmpdoc = collection.GetNextDocument(doc)
      Call doc.Remove(True)
      Set doc = tmpdoc
    Wend

  End If

End Sub

Axel
 
« Letzte Änderung: 01.04.08 - 19:11:43 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz