Domino 9 und frühere Versionen > ND6: Entwicklung
Verschieben von Mails je nach Ende des Betreffs
mullers:
Hallo zusammen,
möchte einen Agenten erstellen, der je nach Ende der letzten 2 Zeichen des Betreffs (Endnummer einer Kundennummer), das entsprechende Mail in einen bestimmten Ordner verschiebt.
Habe folgendes Script erstellt:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim Betreff As Variant
Dim Endnummer As Interger
Set db = s.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Betreff = doc.GetItemValue("Subject")
Endnummer = Right("Betreff",2)
If Endnummer <= 10 Then
Call doc.PutInFolder("SB1",True)
Call doc.RemoveFromFolder("($Inbox)")
Else if Endnummer <= 50 Then
Call doc.PutInFolder("SB2",True)
Call doc.RemoveFromFolder("($Inbox)")
Else if Endnummer <= 99 Then
Call doc.PutInFolder("SB3",True)
Call doc.RemoveFromFolder("($Inbox)")
End If
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Leider erscheint mir hier folgender Fehler: Type mismatch
Ich habe mal nach jeder Zeile eine MessageBox erstellt.
Hier scheint er abzubrechen:
Endnummer = Right("Betreff",2)
Weiß aber nicht wieso??
Könnte mir jeman helfen?
Vielen Dank
Andreas
ascabg:
Hallo,
--- Code: ---Betreff = doc.GetItemValue("Subject")(0)
Endnummer = Right(Betreff, 2)
--- Ende Code ---
oder
--- Code: ---Endnummer = Right(doc.GetItemValue("Subject")(0), 2)
--- Ende Code ---
GetItemValue liefert in jeden Fall einen Array zurueck, der dann auch nur ueber die entsprechenden Index-Nummern angesprochen werden kann.
Daher dein Type mismatch
Andreas
koehlerbv:
Hallo Andreas,
willkommen bei AtNotes.
Du machst da aber etliche gravierende Fehler, und das genaue Studium der DesignerHelp sei Dir dringend angeraten. Das nachlesen der korrekten Syntax, von Parametern und Rpckgabewerten ist nicht schwer und tut nicht weh.
Das mit den Messageboxes war vergebliche Liebesmüh - dafür gibt es den Debugger - und ein ordentliches ErrorHandling sei Dir von Anbeginn an geraten.
Zum Anfang die Dinge, wo der Code syntaktisch / logisch etwas ganz anderes machst, als Du bezweckst:
--- Zitat von: mullers am 18.06.09 - 15:33:17 --- Dim Endnummer As Interger
--- Ende Zitat ---
Das hast Du bestimmt nicht eingeben, oder? Oder hast Du "Interger" als Type oder Class woanders definiert?
Hast Du Option Declare gesetzt?
--- Zitat von: mullers am 18.06.09 - 15:33:17 --- Betreff = doc.GetItemValue("Subject")
Endnummer = Right("Betreff",2)
--- Ende Zitat ---
Zwei Zeilen, zwei schwerwiegende Fehler:
NotesDocument.GetItemValue gibt Dir was zurück? Richtig - ein Variant. Das hast Du auch korrekt instantiiert.
Aber was machst Du dann in der Zeile darauf? Du verwendest das gar nicht! EndNummer ist (oder soll sein) Integer - Du willst aber vom String "Betreff" die letzten beiden Zeichen zuweisen. "ff" ist keine Zahl.
Du bräuchtest also Right$ (Betreff (0), 2) - damit greifst Du dann auf das erste Element Deines vorher ausgelesenen Variants zurück und holst Dir dessen letzte beide Zeichen.
HTH,
Bernhard
mullers:
Hallo Andreas,
Hallo Bernhard,
vielen Dank für Eure rasche Antworten.
Nun hat es super geklappt.
@Bernhard
Dir ist aufgefallen, dass mir teilweise gravierende Fehler unterlaufen sind. Dies liegt daran, dass ich kein Lotus Notes Entwickler bin. Ich bin sozusagen Endanwender im Betrieb und arbeite lediglich mit der Client-Version von Lotus 6.5.
Daher dachte ich auch, dass mir ein Debugger mir ohne den Designer nicht zur Verfügung steht (Habe aber nun den Debugger gefunden (Datei-Extras-Debug Lotus Script, Danke für den Hinweis).
Das ich Endnummer auf Interger gesetzt habe, tat ich mit Absicht. Da ich in der Betreffzeile am Ende Ziffern erwarte, sollte hier mit Ganzzahlen gearbeitet werden.
Zum Hintergrund: Eine fremde Abteilung wird meiner Abteilung per Mail diverse Daten zusenden. In der Betreffzeile wird dann am Ende die jeweilige Kundennummer vermerkt. Je nach Kundennummer ist in meinem Bereich ein anderer Sachbearbeiter zuständig.
Ich habe über unsere IT eine gemeinsame Mailin-Datenbank einrichten lassen. Ich werde für die fremde Abteilung ein Winwordvorlage mittels VBA erstellen. Nach Abschluss der Vorlage wird mittels VBA ein Mail inkl. des Worddokumentes automatisch versendet. Hierbei kann ich sicherstellen, dass die Betreffzeile am Ende immer Nummerisch ist. Ich werde aber noch versuchen im Agenten eine Prüfung durchzuführen ob die Betreffzeile wirklich nummerisch endet (Es könnte ja sein, dass Jemand ohne die Vorlage an uns schreibt). Leider bietet der Standard Agent nicht die Möglichkeit "endet mit" für den Subject an. Lediglich enthält. Und dies half mir leider nicht weiter.
Ich denke, da es sich um eine gemeinsame Mailin-Datenbank handelt, muss dieser Agent, zumal er am besten vor Eingang eines Mails erfolgen soll, direkt auf dem Server eingerichtet werden. Richtig? Das bedeutet dann sicher für mich, dass ich Änderungen (z.B. an der Sachbearbeiterzugehörigkeit) an den Agent kurzfristig nicht selber vornehmen kann.
Was ich jetzt noch plane, ist dass der Sachbearbeiter meiner Abteilung einen Agenten starten kann der die befindliche Worddatei und ein auf dem Rechner befindliches Makro startet. Wir rechnen im Jahr mit mind. 10000 Mails. Daher ist es mir wichtig, dass hier so wenig wie möglich manuell getan werden muss.
Schönen Gruß
Andreas
BigWim:
Hallo Andreas,
--- Zitat ---Das ich Endnummer auf Interger gesetzt habe, tat ich mit Absicht
--- Ende Zitat ---
ich denke, dass Bernhard eher darauf abzielte, dass "das Ding" Integer heißt und nicht Interger ;)
Und die Ausführungen bezogen sich darauf, dass mit den genannten Einstellungen viele "Schreibfehler" im voraus vermieden werden, die (zumindest bei mir) zum Alltag gehören ....
--- Zitat ---Ich denke, da es sich um eine gemeinsame Mailin-Datenbank handelt, muss dieser Agent, zumal er am besten vor Eingang eines Mails erfolgen soll, direkt auf dem Server eingerichtet werden. Richtig? Das bedeutet dann sicher für mich, dass ich Änderungen (z.B. an der Sachbearbeiterzugehörigkeit) an den Agent kurzfristig nicht selber vornehmen kann.
--- Ende Zitat ---
Technisch besteht aber auch die Möglichkeit, dass Du auf diese MailInDatenbank Entwicklerrechte bekommst, dort den Agenten einstellst und Dich mit dem Thema Gestaltungsschutz befasst.
Viel Erfolg
Markus
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln