Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Automatischer EMail Versand bei erreichen von Datum.

Begonnen von TeleTobi, Februar 07, 2006, 15:42:00

⏪ vorheriges - nächstes ⏩

TeleTobi

Hallo Zusammen,

ich habe eine Access Tabelle wo ich ein Feld [EMail] und ein Feld [End Datum] habe. Wie realisiere ich mein Problem, wenn das End Datum erreicht ist, dass an die EMail Adresse automatisch eine Nachricht verschickt wird.

Bitte keine Antworten wie: Mit Docmd.SendObject. Das weiß ich mittlerweile auch. Ich weiß nur nicht ob ich ein Makro oder Modul brauche, wie sowas automatisch geprüft wird.

Ich hoffe Ihr könnt mir bei meinem Problem helfen.


Vielen Dank schonmal!


Gruß
TeleTobi


TeleTobi

Guten Morgen DF6GL,

sagen wir einmal am Tag, entweder wenn die DB geöffnet wird oder, ich weiß nicht ob das möglich ist, automatisch im Hintergrund von Access einmal am Tag.

Gruß
TeleTobi



DF6GL

Hallo,

Beim Öffnen der DB:

Im Makro "Autoexec" rufst Du eine Funktion auf (fktSendEMails), die in einem Standardmodul als Public deklariert ist:


Public Function fktSendEMails ()

Dim rs as Dao.Recordset
Set rs=Currentdb.Openrecordset("select EMail , EmailStatus from tblTabelle where EndDatum <=Date() and EMailStatus <> 'Sent'",dbopendynaset)

Do until rs.Eof
docmd.Sendobject ........,rs!EMail,...
rs.Edit
rs!EMailStatus="Sent"
rs.Update
rs.Movenext
Loop

rs.Close
set rs=Nothing

End Funktion

TeleTobi

#4
Hallo DF6GL,

danke für Deine Hilfe. Mein Modul schaut im Moment wie folgt aus. Rufe ich jetzt unter "Autoexec" RunCode meine Funktion fktSendEMails auf, schließe Access und starte es neu kommt: The expression your entered has a function name that MS Access can´t find.

Weißt du rat?

Außerdem, kommt beim Debuggen:

strSubject = " Notice for QTS ID: " & rs![QTS ID]
strEMailMsg = " Please have a look at the Job " & rs![QTS ID]

dort ein Fehler.



Public Function fktSendEMails()

Dim rs As DAO.Recordset
Dim strSubject As String
Dim strEMailMsg As String

Set rs = CurrentDb.Openrecordset("SELECT [QTS ID], Email FROM [Corrective Activity] WHERE Ready <=Date() and Status <> 'Complete'", dbopendynaset)

strSubject = " Notice for QTS ID: " & rs![QTS ID]
strEMailMsg = " Please have a look at the Job " & rs![QTS ID]
Do Until rs.EOF

'EMAIL USER DETAILS & ATT REPORT
DoCmd.SendObject , , acFormatRTF, rs!EMail, , , strSubject, strEMailMsg, False, False
rs.Edit
rs!Status = "Complete"
rs.Update
rs.MoveNext
Loop

rs.Close
Set rs = Nothing

End Function



Vielen Dank für Deine Hilfe!


Gruß
TeleTobi

DF6GL

Hallo,

stimmen denn die Namen der Tabelle und der Felder?
Weiterhin, Ist der Verweis auf die DAO3.6 Library gesetzt?



Außerdem solltest Du bei Referenz außerhalb der Schleife auf einen DS erst testen, ob überhaupt welche vorhanden sind und auch mal im VBA-Editor unter Debuggen/Kompilieren die DB durch checken.

.
.
Set rs = CurrentDb.Openrecordset("SELECT [QTS ID], Email FROM [Corrective Activity] WHERE Ready <=Date() and Status <> 'Complete'", dbopendynaset)

if not rs.eof then
strSubject = " Notice for QTS ID: " & rs![QTS ID]
strEMailMsg = " Please have a look at the Job " & rs![QTS ID]
end if

Do Until rs.EOF
.
.

TeleTobi

#6
Guten Morgen DF6GL,


vielen vielen Dank für Deine Hilfe! Das Programm läuft soweit.

Nur eine kleine Frage habe ich noch. Es tritt ein Problem auf, wenn ich mein Status Feld nach Versand der E-Mail mit einem Wert überschreiben will:

Item Not found in this Collection:


rs.Edit
rs!Status = "Complete"
rs.Update


Kannst du mir bitte noch die korrekte Syntax dafür sagen? Ich habe schon gegoogelt aber die anderen Möglichkeiten funktionieren auch nicht.

Aber aufjedenfall danke für deine super hilfe!! Echt Klasse von Dir!

* Kaffee ausgeb *


Gruß
TeleTobi


DF6GL

Hallo,

das Feld muß in der Select-Liste bei Openrecordset mit aufgeführt werden, sonst ist es ja im Recordset nicht enthalten.



PS: Ja danke! Soll ich Dir meine Kontonummer geben?


TeleTobi

Mensch! es liegt immer an den einfachen Dingen :)

Danke! für Deine Hilfe. Lass dich nicht unterkriegen! Das mit dem Geld ist so ne Sache *g* Reicht der Kaffee :D Bussi könnte ich auch noch geben  ;)



Gruß
TeleTobi

DF6GL

Hallo,

und wo bekomm ich den Kaffee her? Du kannst ja vorbeikommen, dann klappt das auch mit dem Bussi ,=)
  :-*

RayBan

Bevor ich ein neues Thema erstelle, greif ich erstmal auf den alten Schinken hier zurück :)

Wie schaut es denn aus, wenn meine Datenbank durchgehend geöffnet ist?
Kann man automatisch permanent überprüfen lassen, ob ein EndDatum erreicht wird?

database

#11
Hallo,

das wäre m.E. möglich, wenn ein bestimmtes Formular immer wieder geöffnet wird.
Dort könnte dann im Ereignis 'Beim Anzeigen' der entsprechende Code untergebracht werden.

Ähnlich wäre es möglich beim Klicken auf eine bestimmte Schaltfläche, die immer wieder betätigt werden muss um eine Aktion in der DB auszuführen.

Man müsste es versuchen, wie es sich mit einem Timer auf einem versteckt geöffneten Formular verhält - das Formular wird beim Starten der DB automatisch geöffnet und verborgen.  
Ist nur so eine Idee - wie gesagt könnte man mal versuchen ob das funktioniert.

p.s. wäre es trotz allem besser immer ein neues Thema zu eröffnen, da es sich ja nicht um die gleiche Problematik handelt  ;)