Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: webchild am 09.11.04 - 17:03:01

Titel: Befehl db.open wird nicht ausgeführt
Beitrag von: webchild am 09.11.04 - 17:03:01
Hallo liebe Forumsmitglieder,
ich bin bei meinem Versuch, aus der Bookmark heraus einen Agenten in einer Datenbank auf dem Server zu starten, auf eine Problem gestoßen.

Er startet nur, wenn die Datenbank vorher mal geöffnet wurde.
Jetzt habe ich mir gedacht ich schreibe ein Script das die Datenbank erst öffnet und dann den Agenten startet.

Das ist mein Versuch und über die Hilfe komme ich jetzt nicht weiter:  ???

Dim s As New NotesSession
Dim agent As NotesAgent
Dim db As NotesDatabase
   
Set db = New NotesDatabase( "AC1", "abwesenheit.nsf" )
If Not db.isopen Then
   Call db.open(db.server, db.filepath)
End If
   
Set agent = db.GetAgent("CurrentUserIn")
If agent.Run = 0 Then
   Exit Sub
Else
   Messagebox "Agent did not run",, "Failure"
End If

Er meldet beim Durchlauf mit dem Debugger das die Datenbank nicht geöffnet wäre und die Eigenschaft "IsOpen" der Db steht auch nach dem Aufruf von "db.open" noch auf "False".
Was stimmt nicht oder geht so etwas von der Bookmark.nsf aus nicht?

Grüße, Krista  :D
Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: Semeaphoros am 09.11.04 - 17:10:08
Wo in der Bookmark.nsf startest Du das? Da die Bookmark vom System sehr früh geöffnet wird, ist es schon möglich, dass da noch keine Netzverbindungen möglich sind.
Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: webchild am 09.11.04 - 17:52:38
Also ich war blöd hatte nicht darauf geachtet das die Datenbank im Verzeichnis Test auf dem Server liegt! >:(

Also nachdem ich meine Dummheit korrigiert hatte taucht das Problem jetzt anders herum auf! Ich kann die Agenten genau einmal ausführen dann kommt die Meldung Agent nicht gefunden.
Ich rate mal weil ich die Datenbank nicht wieder geschlossen habe. >:(
Genau so jetzt habe ich den Code so geändert:

Dim s As New NotesSession
Dim agent As NotesAgent
Dim db As NotesDatabase
   
Set db = New NotesDatabase( "AC1", "Test\abwesenheit.nsf" )
If Not db.isopen Then
   Call db.open(db.server, db.filepath)
End If
   
Set agent = db.GetAgent("CurrentUserIn")
If agent.Run = 0 Then
   db.Close
   Exit Sub
Else
   Messagebox "Agent did not run",, "Failure"
End If

Jetzt läuft das Script ohne Probleme durch nur führt es die Agenten nicht aus! :'(

Aber zu Agenten starten habe ich in der Hilfe keine andere Anweisung gefunden!

Ich suche!
Danke bis jetzt, Krista


Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: webchild am 09.11.04 - 19:02:29
So jetzt habe ich es mit @Formeln versucht!
Aber wenn ich versuche  diesen Code ein zweites mal aufzurufen kommt die Fehlermeldung:
"Der angegebene Agent ist nicht vorhanden!"  ???

@Command( [FileOpenDatabase]; "AC1":"Test/abwesenheit.nsf" );
@Command([ToolsRunMacro]; "(CurrentUserIn)");
@Command([FileCloseWindow])

Hat dazu jemand eine Idee!

Ich habe es jetzt damit versucht, weil ich diesen Fehler ja mit LS auch hatte aber ihn durch das Schließen der DB weg bekommen hatte nur schienen die Agenten nicht sichtbar aufgerufen zu werden.

Code
	Dim s As New NotesSession
	Dim agent As NotesAgent
	Dim db As NotesDatabase
	
	Set db = New NotesDatabase( "AC1", "Test\abwesenheit.nsf" )
	If Not db.isopen Then
		Call db.open(db.server, db.filepath)
	End If
	
	Set agent = db.GetAgent("CurrentUserIn")
	Call agent.Run
	If agent.Run = 0 Then
		db.Close
	Else
		Messagebox "Agent did not run",, "Failure"
	End If

Danke, Krista  :)
Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: koehlerbv am 09.11.04 - 19:08:35
Die BOOKMARK.NSF ist (mehr oder weniger) eine System-DB. Da kommt es schon sehr darauf, an welcher Stelle Du da schraubst. Beantworte bitte mal die Frage von Semeaphoros ...

Bernhard
Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: webchild am 09.11.04 - 19:12:07
@koehlerbv
'Tschuldigung! Ich habe die Frage glatt überlesen!  :-[
Ich habe in einer Rahmengruppe eine Seite mit eingebetter Gliederung und in den Gliederungseinträgen sind die Formeln hinterlegt!

Grüße, Krista
Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: Semeaphoros am 09.11.04 - 19:27:56
Ok, da würde ich eigentlich nicht mit nennenswerten Problemen mehr rechnen. Aber eine Idee hab ich im Moment auch nicht.
Titel: Re: Befehl db.open wird nicht ausgeführt
Beitrag von: webchild am 10.11.04 - 10:53:01
Ich weiß zwar nicht wieso, aber das Problem tauchte auf weil ich die Formeln nicht direkt in den Gliederungseintrag geschrieben hatte, sondern im Gliederungseintrag den Aufruf des Agenten der wiederrum den Agenten in der anderen Datenbank aufrief... :P
Ich hatte diesen Weg belassen , weil ich es ja zuerst mit LS versucht hatte zu lösen und man LS nicht direkt in einem Gliederungeintrag eintragen kann.

So mit dieser Formal kann man einen Agenten in einer anderen Datenbank ausführen:
@Command( [FileOpenDatabase]; "Servername":"Datenbank" );
@Command([ToolsRunMacro]; "(CurrentUserIn)");
@Command([FileCloseWindow])

Grüße, Krista  :)

P.S. Und natürlich Danke an alle! Diese Forum ist wirklich toll!
Ich habe bis jetzt mit eurer Hilfe jedes Problem gelöst bekommen!