Domino 9 und frühere Versionen > ND8: Entwicklung
Fehlermeldung "AMgr: Agent (....) Error creating product object
(1/1)
Lancelot:
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
Tode:
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...
pram:
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")
--- Ende Code ---
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...
umi:
--- 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)
...
--- Ende Code ---
Warum setzt Du hier die db immer neu im loop?
Andrew Harder:
--- 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
--- Ende Code ---
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 ;)
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln