Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Lancelot am 28.01.13 - 10:20:57

Titel: Fehlermeldung "AMgr: Agent (....) Error creating product object
Beitrag von: Lancelot am 28.01.13 - 10:20:57
Hallo Leute,

ich bin am verzweifeln, denn ich finde meinen Fehler nicht.
Ich muss mehrer Datenbanken von einem Windows 2008 Server auf eine AS 400 umziehen.
Das habe ich mal mit einer DB versucht und seit dem lauft der zeitgesteuerte Agent nicht mehr durch.
Ich bekommen immer den o.g. Fehler im Log.
Ich Forum und auch auf der IBM Seite steht, dass liegt daran, dass man eine UI Klasse im Backend verwendet, das mache ich aber in dem Agenten nicht.

Hoffe einer von Euch Profis kann mir meinen Fehler aufzeigen.

Danke schon mal für die Antworten.


Option Public
Sub Initialize
   Dim s As New NotesSession
   Dim kondb As NotesDatabase
   Dim adrdb As NotesDatabase
   Dim konview As NotesView
   Dim adrview As NotesView
   Dim kondoc As NotesDocument
   Dim adrdoc As NotesDocument
   Dim name_komplett As String
   Dim name_zuschnitt As String
   Dim key As String
   Dim i As Integer
   Dim y As Integer
   
   Set kondb = s.Getdatabase("segds001", "SegAdr.nsf", True)
   Set adrdb = s.Getdatabase("segds001", "names.nsf", True)
   Set konview = kondb.GetView("($konfig_vkl)")
   Set adrview = adrdb.GetView("($VIMGroups)")   
   Set adrdoc = adrview.Getdocumentbykey("Alle VKL")
      
   'Aufbau der Liste für das Feld SendTo
   y = UBound(adrdoc.members)
   ReDim Adressen(y)
   i = 0
   For x = 0 To UBound(adrdoc.members)
      name_komplett = adrdoc.members(x)
      name_zuschnitt = StrLeft(name_komplett,"/")
      Adressen(i) = StrRight(name_zuschnitt,"=")
      i = i + 1
   Next

   'Schleife über die Ansicht mit enthaltener VKL's im Konfig-Adressbuch
   key = Adressen(0)
   Set kondoc = konview.Getdocumentbykey(key, True)
   i = 0
      For x = 0 To UBound(adrdoc.members)
         
         If  kondoc Is Nothing Then
         
            'Infomail nach einlesen an den Zuständigen
            Dim db As NotesDatabase
            Dim memo As NotesDocument
            
            Set db = s.currentDatabase
            Set memo = New NotesDocument(db)
            Set rtitem = New NotesRichTextItem(memo, "Body")
            
            memo.SaveMessageOnSend = False
            memo.Subject = "Fehlendes VKL-Steuerdokument nach Vergleich im Konfig-Adressbuch" 
            sendervar = Adressen(i)
            memo.form ="Memo"
            memo.SendTo = "Gerald Dietze"
            Call rtitem.appendText("Für folgenden VKL gibt es noch kein Steuerdokument im Konfig-Adressbuch  ->  " & sendervar)
            Call memo.Send(True)
            
         Else
            
         End If
         i = i + 1
         If i > UBound(Adrdoc.members) Then
            Dim memo2 As NotesDocument
            
            Set memo2 = New NotesDocument(db)
            Set rtitem2 = New NotesRichTextItem(memo2, "Body")
            
            memo2.SaveMessageOnSend = False
            memo2.Subject = "Vergleich der VKL-Steuerdokumente wurde ohne Fehler abgeschlossen" 
            sendervar2 = ""
            memo2.form ="Memo"
            memo2.SendTo = "Gerald Dietze"
            Call rtitem2.appendText(sendervar2)
            Call memo2.Send(True)
            
            Exit Sub
         Else
            
            key = Adressen(i)
            Set kondoc = konview.Getdocumentbykey(key, True)
         End If
      
      Next
         
End Sub
Titel: Re: Fehlermeldung "AMgr: Agent (....) Error creating product object
Beitrag von: Tode am 28.01.13 - 10:43:12
1. Code bitte immer in Code- Tags schreiben... ist besser lesbar
2. Vermutlich wird sich keiner die Arbeit machen, Deinen Code Zeile für Zeile durchzulesen, wenn Du Dir nicht mindestens die Arbeit machst, ein Error- Handling einzubauen.
Denn damit wird sich der Fehler vermutlich von selbst zeigen...
Titel: Re: Fehlermeldung "AMgr: Agent (....) Error creating product object
Beitrag von: pram am 28.01.13 - 11:26:27
Ja eine genauere Angabe einer Fehlerzeile wäre sehr hilfreich. Beim darüber fliegen hab ich keine "bösen Sachen" entdeckt bis auf:
Code
Set rtitem = New NotesRichTextItem(memo, "Body")
Ich hab die Funktion des Agenten nicht analysiert, aber man darf nicht blind davon ausgehen, dass der Body einer Mail ein Richtextitem ist (Stichwort MIME)

Gruß
Roland

/edit: vergiss obige Bemerkung... das Dokument ist ja neu, da passt das schon...
Titel: Re: Fehlermeldung "AMgr: Agent (....) Error creating product object
Beitrag von: umi am 28.01.13 - 16:53:51
Code
   For x = 0 To UBound(adrdoc.members)
         
         If  kondoc Is Nothing Then
         
            'Infomail nach einlesen an den Zuständigen
            Dim db As NotesDatabase
            Dim memo As NotesDocument
            
            Set db = s.currentDatabase
            Set memo = New NotesDocument(db)
...

Warum setzt Du hier die db immer neu im loop?
Titel: Re: Fehlermeldung "AMgr: Agent (....) Error creating product object
Beitrag von: Andrew Harder am 30.01.13 - 09:28:28
Code
  'Aufbau der Liste für das Feld SendTo
   y = UBound(adrdoc.members)
   ReDim Adressen(y)
   i = 0
   For x = 0 To UBound(adrdoc.members)
      name_komplett = adrdoc.members(x)
      name_zuschnitt = StrLeft(name_komplett,"/")
      Adressen(i) = StrRight(name_zuschnitt,"=")
      i = i + 1
   Next

Ein kleiner Schöhheitsfehler:
Du holst Dir in der (hier) 2. Zeile die rechte Grenze, benutzt Sie aber nicht in der (hier) 5. Zeile
Damit muss Notes immer wieder die Grenze holen, obwohl sie schon in einer Variable steht.

Zum adrdoc:
Wo wird das denn gesetzt?
Ist sichergestellt das dieses auch gesetzt ist?
Wie wird sichergestellt, das Feld "members" gesetzt ist und nicht leer ist?

Eine Fehlerbehandlung würde anzeigen, in welcher Zeile der Fehler auftritt, dann wäre das Object gefunden, das den Fehler aufwirft ;)