Autor Thema: "Type mismatch" bei Agenten  (Gelesen 15056 mal)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #20 am: 08.07.09 - 08:40:35 »
Da dieses nun doch nicht ganz unwichtige Detail erst jetzt zur Sprache kommt, mal eine ganz andere Frage.

Serveruebergreifende Agenten sind schon zulaessig?


Andreas

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #21 am: 08.07.09 - 09:03:37 »
Ja.
Da bin ich zunächst auch drüber gestolpert - die beiden Server sind im jeweiligen Serverdokument als vertrauenswürdige Server eingetrage.
Anderenfalls erhält man eine Fehlermeldung bezüglich fehlender Rechte.

Guxt Du hier:
"Set sdbs = New NotesDatabase (a, b)" funktioniert nicht wenn Agent scheduled

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: "Type mismatch" bei Agenten
« Antwort #22 am: 09.07.09 - 09:53:00 »
Zitat
@dirk_2909
Zitat
Zitat
Ändere Deinen Code mal folgendermaßen ab (Die Schleifenvariable ist für Notes ein Variant und
kennt die jeweiligen Methoden nicht)
 Huh

Der folgende Code funktioniert bei mir ohne Probleme. Und agt ist nicht definiert und kennt alles aus der Klasse "NotesAgent".
Code:

   
Code
Dim ses As New NotesSession
	Dim db As NotesDatabase
	
	Set db = ses.CurrentDatabase
	Forall agt In db.Agents
		'Msgbox agt.Name
		Print agt.Name
	End Forall

sorry.. gilt nur bei selbstgeschriebenen Klassen. Mein Fehler
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #23 am: 16.07.09 - 08:17:07 »
Guten Morgen!

Ich habe mal wieder etwas an meinem Agenten gearbeitet und mir ist folgendes aufgefallen:
Wenn das Datenbankobjekt, welches die Forall-Schleife durchläuft, auf die den Agenten beinhaltende Datenbank gesetzt wird (also: Set sdbs = session.CurrentDatabase), dann läuft das Script auch via Scheduler einwandfrei durch.
Setze ich das Datenbankobjekt wieder auf eine "entfernte" Datenbank (also: Set sdbs = New NotesDatabase (a, b)), dann gibt's wieder den Fehler.

Via

Code
ErrHandler:
	' Eintrag in's Log machen
	Call currentLog.LogError(0, "Der Fehler mit der Nummer" & Str(Err) & " und der Meldung " & Chr$(34) & Error$ & Chr$(34) & " ist bei Zeile " & Str(Erl) & " aufgetreten.")
	Call currentLog.LogError(0, "Inhalte: " & sdbs.Title)
	Exit Sub

habe ich überprüft ob das Datenbankobjekt sdbs überhaupt gesetzt ist. Davon gehe ich aus da in der Fehlermeldung der Titel der jeweiligen Datenbank (bzw. ersten Datenbank in der Schleife) angezeigt wird.

Also muss mein Ansatz die Liste der Agenten aus einer anderen Datenbank auszulesen wohl falsch sein. Ich bin mir aber sicher, daß das möglich ist.
Wie macht Ihr denn das?

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #24 am: 16.07.09 - 09:07:40 »
Mach mal ein:
Code
dim db as new notesdatabase("","")
db.open(server, db)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Ich krieg ne' Macke!
« Antwort #25 am: 21.07.09 - 11:22:46 »
Ich krieg's einfach nicht hin!  >:(

Setze ich da ein
Code
Call sdbs.open (a, b)
ein, kriege ich die Fehlermeldung, daß die Datenbank bereits geöffnet ist.
Lasse ich den Absatz weg, kriege ich den Type mismatch.

Ich habe die Quellserver und -Datenbanken jetzt mal als Liste und nicht als Array definiert. Hat aber leider nix geändert.

Hier noch mal mein aktueller Code:

Code
Sub Initialize
	On Error Goto ErrHandler
	
	Dim session As New NotesSession		' aktuelle Sitzung
	Dim db As NotesDatabase						' Datenbank in der das Script läuft
	Dim shosts_list List As String					' Liste mit Namen der Server welche die Quelldatenbanken die ausgewertet werden sollen hosten
	Dim sdbs_list  List As String					' Liste mit Namen und Pfaden der Quelldatenbanken die ausgewertet werden sollen
	Dim sdbs As New NotesDatabase	("", "")' Quelldatenbanken
	
	Set db = session.CurrentDatabase
	Set currentLog = New NotesLog ( db.Title )
	Call currentLog.OpenNotesLog( db.Server, db.FilePath )
	
	'Quellserver
	shosts_list(1) = "server"
	shosts_list(2) = "server"
	
	' Datenbanken die ausgewertet werden sollen festlegen
	' Die Datenbanken liegen auf beiden Servern im gleichen Pfad
	sdbs_list(1) = "pfad\filename.nsf"
	sdbs_list(2) = "pfad\filename.nsf"
	
	Forall a In shosts_list
		Forall b In sdbs_list			
			Call sdbs.open (a, b)
			
' Namen der Agenten auslesen und im Array "agname" speichern	
			Forall c In sdbs.Agents
				If c.trigger = 1 Then
					If c.IsEnabled = True Then
						Redim Preserve agname(count)
						agname(count) = c.name
						count = count + 1
						Print sdbs.Title & " " & c.name
					End If
				End If
			End Forall
		End Forall
	End Forall
	
	Exit Sub
	
	
	
ErrHandler:
	' Eintrag in's Log machen
	Call currentLog.LogError(0, "Der Fehler mit der Nummer" & Str(Err) & " und der Meldung " & Chr$(34) & Error$ & Chr$(34) & " ist bei Zeile " & Str(Erl) & " aufgetreten.")
	Call currentLog.LogError(0, "Inhalte: " & sdbs.Title)
	Exit Sub
End Sub

Wo mache ich da Mist???????
So langsam weiß ich nicht mehr weiter.....  ???

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: "Type mismatch" bei Agenten
« Antwort #26 am: 21.07.09 - 11:42:30 »
if not db.open then
 call db.open
end if

ist die DB im Debugger denn geöffnet = kannst du (sinnvolle) Eigenschhaften lesen?
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #27 am: 21.07.09 - 11:57:27 »
Werde ich gleich noch mal ausprobieren.
Aber müsste ein entfernen des
Code
Call sdbs.open (a, b)
nicht den gleichen Effekt haben wie die Abfrage?

Wenn ich den Agenten manuell starte funktioniert er einwandfrei und die Datenbanken werden im Debugger auch mit allen Eigenschaften angezeigt.

Starte ich scheduled sehe ich an der Fehlerroutine, daß die Variable sdbs.Title gesetzt ist...

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #28 am: 21.07.09 - 12:04:40 »
if not db.open then
 call db.open
end if

ist die DB im Debugger denn geöffnet = kannst du (sinnvolle) Eigenschhaften lesen?

Bringt nüscht  :'(
Leider kommt dabei auch nur wieder ein Type mismatch raus....

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: "Type mismatch" bei Agenten
« Antwort #29 am: 21.07.09 - 12:48:58 »
Was sagt denn das Serverlog auf dem Zielserver wo du die db öffnen willst?

Kann der Server auf dem der Agent läuft überhaupt auf diesen Server zugreifen (Stichwort Trusted Server und Verbindungsdokument)?

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #30 am: 21.07.09 - 13:18:28 »
Was sagt denn das Serverlog auf dem Zielserver wo du die db öffnen willst?

Kann der Server auf dem der Agent läuft überhaupt auf diesen Server zugreifen (Stichwort Trusted Server und Verbindungsdokument)?

Grüße David

Ja, das hatte ich alles schon gecheckt da diese Hinweise schon kamen.
Ich denke, wenn es ein Berechtigungsproblem wäre dann wär die Fehlermeldung eine andere...

Gruß
 Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #31 am: 22.07.09 - 08:16:09 »
Verzweifelter Crosspost nach:
IBM Notes/Domino 6 and 7 Forum

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: "Type mismatch" bei Agenten
« Antwort #32 am: 22.07.09 - 15:38:59 »
Darf der Server auf die Datenbanken (ACL) zugreifen? Zugriff auf den Server ist ja nur eine Ebene.
Wenn manuell, dann arbeitet der Agent mit Deinen Rechten.

mfg

Kjeld

Edit: Check das mal mit 'Effektiver Zugriff' und nicht nur für die ID mit der der Agent unterzeichnet ist, sondern auch ür den Server der zugreifen will.
Wenn es nicht der Quellcode ist, dann sind es die Rechte.
« Letzte Änderung: 22.07.09 - 15:43:54 von gossifu »
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #33 am: 23.07.09 - 06:54:10 »
Darf der Server auf die Datenbanken (ACL) zugreifen? Zugriff auf den Server ist ja nur eine Ebene.
Wenn manuell, dann arbeitet der Agent mit Deinen Rechten.

mfg

Kjeld

Edit: Check das mal mit 'Effektiver Zugriff' und nicht nur für die ID mit der der Agent unterzeichnet ist, sondern auch ür den Server der zugreifen will.
Wenn es nicht der Quellcode ist, dann sind es die Rechte.

Nach wie vor glaube ich nicht an ein Berechtigungsproblem.
Die Zeile "Call currentLog.LogError(0, "Inhalte: " & sdbs.Title)" schreibt mir ja den Titel der gerade verarbeiteten Datenbank in's Fehlerlog.
Würde die Berechtigung nicht stimmen dürfte das Script imho ja gar nicht auf die Eigenschaften des Objektes zugreifen.
Ich bin überrascht, daß diese Aufgabe so ein schwieriger Hammer ist...  ???

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: "Type mismatch" bei Agenten
« Antwort #34 am: 23.07.09 - 07:52:24 »
Nach wie vor glaube ich nicht an ein Berechtigungsproblem.
Die Zeile "Call currentLog.LogError(0, "Inhalte: " & sdbs.Title)" schreibt mir ja den Titel der gerade verarbeiteten Datenbank in's Fehlerlog.
Würde die Berechtigung nicht stimmen dürfte das Script imho ja gar nicht auf die Eigenschaften des Objektes zugreifen.
Ich bin überrascht, daß diese Aufgabe so ein schwieriger Hammer ist...  ???

Gruß
Jens
Es wird aber doch ein Rechteproblem sein. Die Eigenschaft "Title" des Datenbank-Objektes kann nämlich auch ausgelesen werden, wenn das Datenbankobjekt NICHT geöffnet werden kann. Siehe Designerhilfe zu db.isOpen


Thomas

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: "Type mismatch" bei Agenten
« Antwort #35 am: 26.07.09 - 14:25:18 »

Code
		
	Forall a In shosts_array
	 Forall b In sdbs_array			
	  Set sdbs = New NotesDatabase (a, b)
	count = 0

Ist das so richtig? sdbs enthält so doch nur die DB des letzten shosts_array und des letzten sdbs_array. Der folgende Code, der sich auf das Objekt sdbs bezieht, behandelt demnach nur die letzte DB auf dem letzten Server.

Gruß,
Gregor
         

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #36 am: 29.07.09 - 15:10:54 »

Ist das so richtig? sdbs enthält so doch nur die DB des letzten shosts_array und des letzten sdbs_array. Der folgende Code, der sich auf das Objekt sdbs bezieht, behandelt demnach nur die letzte DB auf dem letzten Server.

Gruß,
Gregor
         

Ich denke schon. Ich glaube, man nennt das eine iterative Schleife. Zuerst wird die innere Schleife durchlaufen und dann die äussere. In den Test's hat's funktioniert.
Ich bastele gerade an einer anderen Baustelle des Agenten.
Sobald ich das im Griff habe gebe ich Dir mal Rückmeldung ob das nu klappt oder nicht...

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: "Type mismatch" bei Agenten
« Antwort #37 am: 31.07.09 - 17:50:49 »

Ist das so richtig? sdbs enthält so doch nur die DB des letzten shosts_array und des letzten sdbs_array. Der folgende Code, der sich auf das Objekt sdbs bezieht, behandelt demnach nur die letzte DB auf dem letzten Server.
      

Ich denke schon. Ich glaube, man nennt das eine iterative Schleife. Zuerst wird die innere Schleife durchlaufen und dann die äussere. In den Test's hat's funktioniert.

Ich hatte beim überfliegen durch den falsch eingerückten Code übersehen, dass count = 0 und der Rest sich ja noch innerhalb der Schleife befinden. Dann passt's ja.

Code
	sdbs_array(1) = "pfad\datenbank1.nsf"
	sdbs_array(2) = "pfad\datenbank2.nsf"
		
	Forall a In shosts_array
	 Forall b In sdbs_array			
	  Set sdbs = New NotesDatabase (a, b)
	
	count = 0
			
' Namen der Agenten auslesen und im Array "agname" speichern	
			
	Forall c In sdbs.Agents

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz