Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Alperen15 am 17.08.10 - 11:41:51
-
Hallo alle zusammen. Ich bräuchte wieder mal Tipps von euch. Ich habe einen Reminder erstellt und laut Debugger springt der an einer Stelle raus wo ich nicht weiss was das Problem ist
An der fett markierten Stelle flieg ich raus..... Ich wäre dankbar, wenn Ihr mir weiter helfen könntet. Danke
Hier der Quellcode
Sub Initialize
'Agent wird automatisch gestartet Leasing ende vor 6 Monaten
Dim oSession As New NotesSession
Dim db As NotesDataBase
Dim oHeute As NotesDateTime
Dim oCreated As NotesDateTime
Dim oDoc As NotesDocument
Dim oSearchDoc As NotesDocument
Dim oProfilDoc As NotesDocument
Dim oNeuDoc As NotesDocument
Dim oRTItem As NotesRichTextItem
Dim cDate As String, kWeek As String, cText As String, nAnz As Long
Dim oView As NotesView
Dim Empmanager As String
Dim Empresponsible As String
Set db = oSession.CurrentDataBase
Set oHeute = New NotesDateTime(Now)
Set oProfilDoc = db.GetProfileDocument("PDAllgemein") ' *** Adressat der Wiedervorlage
Set oView = db.GetView("vwRem") ' *** Ansicht Reminder 1 (7 Tage nach Eingangsdatum)
Set oNeudoc = db.CreateDocument ' *** neues Mail-Dokument kreieren
oNeudoc.Form = "Memo" ' *** die Maske für e-Mail Aufrufen
nAnz = 0
Empmanager = oProfilDoc.fdNameRequestManager(0) ' *** Reminder1 aus Profildoc sind Empfänger
Empresponsible = oProfilDoc.fdNameRequestClarification(0)
On Error Goto ErrorPrint
REM Tracerinitialisierungsparameter
Dim aTracerPara(1) As Variant
cgTracerVorzugRem1 = "aaReminder2 test"
aTracerPara(0) = "Request DB"
aTracerPara(1) = "PDAllgemein"
If Not(xQAnfangID(aTracerPara)) Then
Print "Agent: Request DB Test: Konnte Tracer/Logger/Protokoll nicht initialisieren. Abbruch der Funktion."
Exit Sub
End If ' If Not(xQAnfangID(aTracerPara)) Then
Set oRTItem = New NotesRichTextItem(oNeuDoc, "Body") ' *** in Body des Memos reinschreiben
Call oRTItem.AppendText("Bei folgenden Dokumenten blabla test.")
Call oRtitem.AddNewLine(1)
Call oRTItem.AppendText("Link zur Datenbank ---> ")
Call oRTItem.AppendDoclink(oView, oView.Name)
Call oRtitem.AddNewLine(2)
cDate = oHeute.DateOnly
Set oSearchDoc = oView.GetFirstDocument
While Not (oSearchDoc Is Nothing)
Set oCreated = New NotesDateTime(oSearchDoc.Created)
cDate = oCreated.DateOnly
Call oRtitem.AddNewLine(1)
'Call oRTItem.AppendText(Cstr(oSearchDoc.ENDE(0)) + " --- " + Cstr(oSearchDoc.OBJEKT_KFZ_KENNZ(0)) + " --- " + Cstr(oSearchDoc.HERSTELLER(0)) + " " + Cstr(oSearchDoc.TYP(0)) + " ---> ")
Call oRTItem.AppendDoclink(oSearchDoc, " Verbindung zum Wiedervorlagedokument. Bitte klicken.")
nAnz = nAnz + 1
Set oSearchDoc = oView.GetNextDocument(oSearchDoc)
Wend
cText = "aaReminder2: " + Cstr(nAnz) + " Dokumente zur Prüfung gefunden"
Call XQSchreiben("0", "1", cgTracerVorzugRem1, cText, 632637&)
' *** Mail fertigstellen
oNeuDoc.Subject = "Leasing in 6 Monaten zu Ende: Folgende Dokumente sind heute zur Vorlage fällig."
If nAnz <> "0" Then
If oProfilDoc.fdNameRequestClarification(0) <> "" Then
oNeuDoc.SendTo = Empresponsible
Call oNeuDoc.Send(False)
Call XQSchreiben("0", "1", cgTracerVorzugRem1, "aaReminder2 Leasing: Mail an Personenkreis Reminder 1 verschickt", 632637&)
Else
oNeuDoc.SendTo = Empmanager
Call oNeuDoc.Send(False)
Call XQSchreiben("0", "1", cgTracerVorzugRem1, "aaReminder2 Leasing: Mail an Personenkreis Reminder 1 verschickt", 632637&)
End If
End If
Goto EndeAlles
ErrorPrint:
Call XQSchreiben("0", "1", cgTracerVorzugRem1, "aaReminder2 Leasing: Fehler bei der Verarbeitung", 632637&)
Resume Next
EndeAlles:
Call xQEnde ' *** Schreiben und schließen LogFile
End Sub
-
Was heißt denn "er springt raus" ?
Und was ist "xQAnfangID" ?
-
der Debugger springt an der Stelle raus.... Der Agent ist kopiert, den habe ich umgeändert die Felder, Ansichtname usw....
-
xQAnfangID dürfte wohl eine Funktion sein, die da aufgerufen werden soll. Vermutlich findet er die Funktion nicht. Vielleicht steckt die in einer Scriptbibliothek, die nicht mitkopiert wurde oder nicht eingebunden ist ?
Man sollte niemals Code einfach kopieren und anpassen, den man nicht kennt bzw. versteht. Das führt gerade bei Code, der aus mehr als einer Handvoll Zeilen besteht fast garantiert zu Problemen.
Im übrigen wäre es evtl. gerade zu Übungszwecken besser, so einen Agenten selber zu schreiben.
Und noch ein Tipp. Diese Zeile hier
Set oView = db.GetView("vwRem") ' *** Ansicht Reminder 1 (7 Tage nach Eingangsdatum)
sieht ganz verdächtig nach Verwendung von @Today in der Selektionsformel der Ansicht aus. Das sollte man sich aus Performancegesichtspunkten gut überlegen. Dazu gibt es hier im Forum diverse Beiträge.
Edit :
Wenn ich meine Antwort lese, kommt sie mir ein bißchen schroff vor. Das ist nicht so gemeint, ich habe nur keine Zeit, an den Formulierungen zu schleifen ;)
-
Kein Problem Ingo ich schau mir den Agenten mal genauer an und die bibliothek dann melde ich mich ncoh mal. Der Reminder soll ja produktiv werden sollte heute noch fertig werden ^-^
-
Hallo,
In Deinem Agenten kein "Option Declare" verwendet?
Das Erspart genau solche Fragen.
Andreas
-
Hallo Andreas, doch in Option Declar stimmts auch....ich habe nochmal neu angefangen lasse erst mal den Tracer mal weg. Jetzt bekomm ich ne Meldung "Object variable not set" wie kann ich es denn ncoh mal "deklarieren" dass ich meine Felder von der Maske ansprechen möchte?
Sub Initialize
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim names As NotesDatabase
Dim uid As String
Dim doc As NotesDocument
Dim heute As New NotesDateTime("Today")
Dim username As New NotesName(session.CommonUserName)
Dim RTItemProfileDoc As Variant
Dim oRTItem As NotesRichTextItem
Dim cText As String
Dim oView As NotesView
Dim oSearchDoc As NotesDocument
Dim oNeuDoc As NotesDocument
Dim ProfilDoc As NotesDocument
Dim EmpManager As String
Dim EmpResponsible As String
Set db = session.CurrentDatabase
Set ProfilDoc = db.GetProfileDocument("PDAllgemein")
Set oView = db.GetView("vwRem")
EmpManager = oSearchDoc.fdNameRequestManager ' *** Reminder1 aus Profildoc sind Empfänger
EmpResponsible = oSearchDoc.fdNameRequestClarification
-
so das hätte ich jetzt auch gelöst =) bei der fett markierten zeile kommt ne Meldung Type mismatch ... wieso soll der Typ nicht zulässig sein?
-
denn in den Feldern fdNameRequestManager und fdNameRequestClarification stehen email adressen von nur einem Mitarbeiter.
EmpManager sollte doch richtig sein, dass ich es mit String deklariert habe?1 :-\
-
EmpManager = oSearchDoc.fdNameRequestManager (0) ' *** Reminder1 aus Profildoc sind Empfänger
EmpResponsible = oSearchDoc.fdNameRequestClarification(0)
Die zurückgelieferten Werte sind String-Arrays!!
Axel
-
Und nach dieser Korrektur gibt es gleichen den nächsten Laufzeitfehler ;D
-
Wieso laufzeitfehler? Also der Reminder funktioniert...ich weiss Eigenlob stinkt aber ich werde immer besser ;D ;D ;D ;D langsam aber sicher