-nin 11 Geschrieben 3. Mai 2006 Melden Teilen Geschrieben 3. Mai 2006 Morgen zusammen, ich hoffe, mir kann jemand helfen. Ich habe mir ein kleines Script geschrieben, dass in eine Datenbank schaut, ob ein Tätigkeit schon mehr als zwei Wochen brach liegt. Das Script funktioniert mit jMail schon sehr gut, bis auf einen Stolperstein. Wenn ich das Script ausführe sendet es beim letzten Datensatz statt einer mehrere E-Mails des gleichen Inhalts. Für den ersten Datensatz geht, wie ich es möchte nur eine E-Mail raus. Kurz zur Erklärung: Ich habe das Script etwas gekürzt, also DB-Verbindung etc. weggelassen, denn das funzt ja. In einer Schleife frage ich solange, die Differenz der Erstellungsdaten zum heutigen Datum ab, wie Datensätze vorhanden sind. Ist ein Datum älter als 14 Tage, wird eine E-Mail gesendet. Hier ist der Code: heuteDatum = now() Do While not RS1.EOF eintrDatum = RS1.Fields("Datum").Value if (DateDiff("d", heuteDatum, eintrDatum) * - 1) > 14 then alter = round((dateDiff("d",date(),RS1.Fields("Datum").Value) * -1) / 7,0) anzahl = anzahl + 1 emailSubject = "Der Vorgang mit der ID: " & RS1.Fields("ID").Value & " ist " & alter & " Wochen alt." emailBody = _ "<html><head>" & _ "</head><body> " & vbcrlf & _ "<p style=""font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px"">" & vbcrlf & _ "Der Vorgang mit der ID: <span style=""font-weight: bold; color:red;"">" & RS1.Fields("ID").Value & "</span>" & _ " ist " & alter & " Wochen alt.<br>" & vbcrlf & _ "Der Status ist: <span style=""font-weight: bold; color:red;"">" & RS1.Fields("Erledigt").Value & "</span>" & vbcrlf & _ "Bitte prüfen Sie ""Meine Vorgänge"" im Management System.</p>" & _ "<p style=""font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px"">" & _ "Jetzt zum <a href=""http://intranet/ManagementSystem/asp/index.asp"">Management System</a>" & _ " wechseln.</p>" & _ "</body>" emailAdress = RS1.Fields("Email").Value msg.AddRecipient emailAdress msg.Subject = emailSubject msg.htmlBody = emailBody msg.Send("192.168.254.3") end if RS1.Movenext Loop 'Testtext = Testtext & "Anzahl: " & anzahl 'Eingabe = MsgBox(Testtext,64,"So viele") Ich hab zuerst gedacht, der RS1.Movenext stünde an der falschen Stelle, aber das kann nicht sein. Die SQL-Abfrage liefert zwei Datensätze, was korrekt ist. Setze ich die letzten zwei Zeilen aktiv, poppt die MsgBox auch exakt zweimal auf. Also warum werden dann beim letzten Datensatz so viele E-Mail rausgesendet? Ich hoffe, ihr könnt mir helfen. LG -nin Zitieren Link zu diesem Kommentar
Schluml 10 Geschrieben 3. Mai 2006 Melden Teilen Geschrieben 3. Mai 2006 Hast du mal probiert anstelle der Do While Schleife explizit anzugeben wie oft er denn die Schleife durchlaufen soll, also mit ner for-Schleife z.B. Wenn du dir vorher in ner Variablen festhälst wieviel Datensätze vorhanden sind sollte das ja genauso gut gehen. mich wundert auch dass bei dem Quelltext da, wenn du die MessageBox nicht auskommentierst diese 2mal erscheint, die ist doch sogar außerhalb der Do While Schleife :suspect: oder ist das ganze nochmal in einer Schleife die du hier nicht mit hingeschrieben hast Zitieren Link zu diesem Kommentar
-nin 11 Geschrieben 3. Mai 2006 Autor Melden Teilen Geschrieben 3. Mai 2006 Hi, ich habe das Problem in den Griff bekommen. Der addRecipients-Befehl fügte mit jedem Durchlauf die Adressen neu in die Empfängerliste. Daher die mehrfache Zustellung, was sich mit jedem Datensatz mehr verschlimmert hätte. Die Liste muss also vor der Ausführung von addRecipients gelceared werden, was in meinem Falle mit: msg.Clear() funktioniert. Danke trotzdem, -nin PS: msgBox. Ich habe den Coder vor dem Posten aus der Schleife genommen ;) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.