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

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
"Type mismatch" bei Agenten
« am: 07.07.09 - 14:04:01 »
Hallo NG,

wenn ich folgenden Code in einem Agenten manuell ausführe funktioniert alles ganz wunderbar.
Lasse ich den Agenten laufen, dann bricht das Script immer mit oben genannter Fehlermeldung bei der Forall-Anweisung ab.
In der Hilfe konnte ich nichts darüber lesen, daß die Schleife bei einem zeitgesteuerten Agenten anders zu prgrammieren ist als bei einem manuellen Agenten.

Was mache ich denn da falsch?

Gruß
 Jens

Code
' 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
					End If
				End If
			End Forall
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 Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: "Type mismatch" bei Agenten
« Antwort #1 am: 07.07.09 - 14:22:57 »
wie ist dein c definiert?
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #2 am: 07.07.09 - 14:38:20 »
Garnicht!
Wenn ich das vorher als NotesAgent definiere, dann sagt mir der Designer beim speichern "FORALL alias varialbe was previously declared: C".
Da ich nicht sicher bin, ob das definiert werden muss oder nicht habe ich nach der Fehlermeldung diese Variante auch ausprobiert.

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 ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #3 am: 07.07.09 - 14:40:33 »
Hallo,

Ich glaube die Variablen, die bei Forall verwendet werden, duerfen vorher gar nicht definiert werden.

@Jens_1
Wann genau steigt Dein Code denn aus?

Ich habe einen kleinen Testagenten geschrieben, und der functioniert bei mir ohne Probleme.


Andreas

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #4 am: 07.07.09 - 14:53:33 »
Vielleicht gibt es keine Agents in einem Fall
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 Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: "Type mismatch" bei Agenten
« Antwort #5 am: 07.07.09 - 14:55:36 »
Debuggern hilft oft...
Was steht denn in sdbc.agents im Debugger?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

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 #6 am: 07.07.09 - 15:05:50 »
Prüfe doch mal mit
Code
if isArray(sdbs.Agents)
ob es überhaupt ein Array gibt

Denn wenn keine Agenten, dann kein Array, dann kachelt der Code ab

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 #7 am: 07.07.09 - 15:09:51 »
Hallo,

Ich glaube die Variablen, die bei Forall verwendet werden, duerfen vorher gar nicht definiert werden.

@Jens_1
Wann genau steigt Dein Code denn aus?

Ich habe einen kleinen Testagenten geschrieben, und der functioniert bei mir ohne Probleme.


Andreas

So hatte ich das auch verstanden.
Das Script steigt genau bei "Forall c In sdbs.Agents" aus.

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 #8 am: 07.07.09 - 15:12:08 »
Debuggern hilft oft...
Was steht denn in sdbc.agents im Debugger?

Der Debugger sagt mir, daß insegsamt 11 Agenten in diesem Datenbankobjekt stecken.
Wie gesagt - wenn ich den Agenten manuell starte funktioniert das auch reibungslos..

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 #9 am: 07.07.09 - 15:17:29 »
Woher weißt du das er bei der forall Schleife abbricht?
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 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 #10 am: 07.07.09 - 15:28:06 »
Ändere Deinen Code mal folgendermaßen ab (Die Schleifenvariable ist für Notes ein Variant und
kennt die jeweiligen Methoden nicht):

Code
'Namen der Agenten auslesen und im Array "agname" speichern	
Dim c as NotesAgent
Forall ctmp In sdbs.Agents
        Set c = ctmp   
	If c.trigger = 1 Then
		If c.IsEnabled = True Then
			Redim Preserve agname(count)
			agname(count) = c.name
			count = count + 1
		End If
	End If
End Forall
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 jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #11 am: 07.07.09 - 15:35:45 »
@Dirk: Das löst aber nicht das Problem

Das Debuggen war eigentlich Sinnlos, denn lokal geht es ja nur beim Server läuft er gegen die Wand, um ein ordentliches Errorhandling kommst du nicht drum herum.
Hast Du so etwas im Einsatz?
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 ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #12 am: 07.07.09 - 15:38:42 »
@dirk_2909
Zitat
Ändere Deinen Code mal folgendermaßen ab (Die Schleifenvariable ist für Notes ein Variant und
kennt die jeweiligen Methoden nicht)
 ???

Der folgende Code funktioniert bei mir ohne Probleme. Und agt ist nicht definiert und kennt alles aus der Klasse "NotesAgent".
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

@Jens_1
Was sind denn das fuer Agenten?
Wenn Du mit dem Debugger arbeitest, dann hast Du ihn ja manuell gestartet.

Was passiert, wenn Du Deinen Agenten wie gewollt "periodisch" startest und einmal mit einem Print-Befehl "protokollierst".

Andreas

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #13 am: 07.07.09 - 16:43:24 »
Was passiert, wenn Du Deinen Agenten wie gewollt "periodisch" startest und einmal mit einem Print-Befehl "protokollierst".

Print ist aber ein unsauberes und ungenaues Errorhandling, würde ich nicht empfehlen.
Arbeite mit on error und err, erl, error und resume, bei Fragen dazu helfen wir dir gern.
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
Re: "Type mismatch" bei Agenten
« Antwort #14 am: 07.07.09 - 17:54:30 »
Hallo,

den Fehler fange ich ab wie folgt:

Code
On Error Goto ErrHandler

[...]

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.")
Exit Sub

Daher weiss ich, daß das Script genau in der Zeile mit der Schleife abbricht.

Die Agenten in der Datenbank sind diverse Agenten deren Funktion mir nicht im Detail bekannt ist.
Imho ist das aber auch nicht relevant um deren Namen auszulesen?

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 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: "Type mismatch" bei Agenten
« Antwort #15 am: 07.07.09 - 18:37:55 »
Mal eine ganz triviale Frage. Die ID mit dem der Agent signiert ist hat ausreichende Rechte auf die Datenbank?

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

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #16 am: 07.07.09 - 18:40:36 »
Mal eine ganz triviale Frage. Die ID mit dem der Agent signiert ist hat ausreichende Rechte auf die Datenbank?

Axel


Auf jeden Fall! das habe ich bereits gecheckt.
Aber ich denke bei fehlender Berechtigung wäre die Fehlermeldung auch 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 TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: "Type mismatch" bei Agenten
« Antwort #17 am: 07.07.09 - 21:04:10 »
Was liefert denn

TypeName ( sdbs.Agents )

bzw.

DataType ( sdbs.Agents )

zurück?

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: "Type mismatch" bei Agenten
« Antwort #18 am: 08.07.09 - 06:45:40 »
Was liefert denn

TypeName ( sdbs.Agents )

bzw.

DataType ( sdbs.Agents )

zurück?


Hab's gerade mal ausprobiert:

Print Typename (sdbs) = NOTESDATABASE
Print Datatype (sdbs) = 35

Das ist eigentlich auch genau das was ich erwartet habe.

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 #19 am: 08.07.09 - 06:53:15 »
[...]

Der folgende Code funktioniert bei mir ohne Probleme. Und agt ist nicht definiert und kennt alles aus der Klasse "NotesAgent".
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

[...]

Hmm - ich habe den Code gerade mal simpel in einen neuen Agenten der Datenbank gepackt und scheduled.
Null Problem!
Also kann's schon mal nichts mit dem Server oder Berechtigungen oder ähnliches sein.

Was mir aufgefallen ist:
Während hier die aktuelle Datenbank instanziert wird instanziere ich ja eine enhtfernte bzw. andere Datenbank.
Mache ich da was falsch?

Ich habe mal den kompletten Code bis zum betreffenden Teil eingefügt:

Code
	On Error Goto ErrHandler
	
	Dim session As New NotesSession		' aktuelle Sitzung
	Dim db As NotesDatabase		' Datenbank in der das Script läuft
	Dim shosts_array (1 To 2) As String	' Array mit Namen der Server welche die Quelldatenbanken die ausgewertet werden sollen hosten
	Dim sdbs_array (1 To 2) As String	                ' Array mit Namen und Pfaden der Quelldatenbanken die ausgewertet werden sollen
	Dim sdbs As NotesDatabase		' Quelldatenbanken
	Dim currentLog As NotesLog		' Logmechanismus
	Dim count As Integer			' Zähler für die Schleife zum Auslesen der Agenten
	Dim agname () As String		' Array mit den Namen der Agenten
	
	[...]
	
	Set db = session.CurrentDatabase
	Set currentLog = New NotesLog ( db.Title )
	Call currentLog.OpenNotesLog( db.Server, db.FilePath )
	
	'Quellserver
	shosts_array(1) = "server1/ou/o/c"
	shosts_array(2) = "server2/ou/o/c"
	
	' Datenbanken die ausgewertet werden sollen festlegen
	' Die Datenbanken liegen auf beiden Servern im gleichen Pfad
	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
	 If c.trigger = 1 Then
	  If c.IsEnabled = True Then
	   Redim Preserve agname(count)
	   agname(count) = c.name
	   count = count + 1
	  End If
	 End If
	End Forall

	[...]

Gruß
Jens
« Letzte Änderung: 08.07.09 - 07:07:37 von Jens_1 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz