Domino 9 und frühere Versionen > ND6: Entwicklung

Verschieben von Mails je nach Ende des Betreffs

(1/4) > >>

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