Autor Thema: Fehlermeldung "AMgr: Agent (....) Error creating product object  (Gelesen 2695 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
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
Gruß Gerry (Lancelot)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
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...
« Letzte Änderung: 28.01.13 - 11:28:42 von pram »
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
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?
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
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 ;)
Andy

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz