Datumswerte mit aktuellem Datum vergleichen Access 2010

Hallo,
ich steh mal wieder auf dem schlauch und würde mich sehr über eure hilfe freuen.
Mein Problem: Ich habe in einer Tabelle tbl_zwischenspeicher_email, eine Spalte enthält Datumswerte, nun möchte ich das bei jedem Start der Datenbank bzw. besser noch nur einmal täglich (wenn möglich) überprüft ob das aktuelle Datum mit einem Datum in meiner Tabelle übereinstimmt, wenn ja muss ein Ereignis ausgelöst werden, in form vom versandt einer Email.

Was habe ich schon getan : ich habe eine Abfrage (qry_datum_vergleich) erstellt welches den Spalteninhalt mit dem Aktuellen Datum vergleicht, wenn die Überprüfung übereinstimmt beinhaltet diese Abfrage auch gleichzeitg alle relevanten Daten die ich benötige um die mail zu senden.

Was muss ich nun tun damit die Überprüfung im hintergrund läuft ? und wo muss ich den Quellcode für den mail-versandt hineinschreiben?

Bin etwas überfrage bei der angelegenheit und hoffe auf eure Unterstützung.
Wenn noch etwas unklar sein sollte einfach fragen ich füttere euch gern mit weiteren infos :smiley:

Vielen Dank im voraus und viel Spaß euch noch bis dann

Fizzo361

Hi Fizzo361

Am einfachsten Du machst bei der Abfrage einen Ausdruck. Beispiel: ich möchte eine Geburtstagsmail an alle, die heute Geburtstag haben. Dann erstelle ich einen Ausdruck in einer separaten Spalte der Abfrage, welche Tag und Monat des Geburtsdatums zusammenstellt:

Geburtstag: Tag([K_GebDatum]) & „.“ & Monat([K_GebDatum])

Anschliessend erstellst Du ein Kriterium für dasselbe Feld, bezogen auf das heutige Datum:

Geburtstag: Tag([K_GebDatum]) & „.“ & Monat([K_GebDatum])

Nun werden nur noch alle Datensätze angezeigt, bei welchen das Datum ohne Jahr übereinstimmt.

Hoffe, so geholfen zu haben.

Liebe Grüsse aus der Schweiz. Henri.

Hi Henri,
Vielen Dank für deine schnelle antwort,
Dein Codebeispiel ist echt Hilfreich, werde ich mir gleich mal zwsichenspeichern, aber leider benötige ich dies momentan nicht, da ich ja die Abfrage zur Überprüfung des Datum bereits erfolgreich gemeistert habe :

SELECT tbl_zwischenspeicher_email.[neues datum für mail], tbl_zwischenspeicher_email.ID, tbl_zwischenspeicher_email.[1], tbl_zwischenspeicher_email.[2], tbl_zwischenspeicher_email.[3], tbl_zwischenspeicher_email.[4], tbl_zwischenspeicher_email.[5], tbl_zwischenspeicher_email.[6], tbl_zwischenspeicher_email.[7], tbl_zwischenspeicher_email.[8], tbl_zwischenspeicher_email.[9], tbl_zwischenspeicher_email.[10], tbl_zwischenspeicher_email.team, [tbl_team+TL].[E-mail]
FROM tbl_zwischenspeicher_email INNER JOIN [tbl_team+TL] ON tbl_zwischenspeicher_email.team = [tbl_team+TL].team
WHERE (((tbl_zwischenspeicher_email.[neues datum für mail])
Die Abfrage funktioniert super, prüft ob Daten mit dem heutigen bzw dem vergangenen Datum in der tabelle auftauchen, wenn ja, erhalte ich alle relevaten daten zum verschicken der mail mit dieser Abfrage.

Mein problem ist das ich die Abfrage automatisch starten möchte, im besten fall sogar so das die Abfrage nur beim ersten Start der DB ausgeführt wird, dies ist aber momentan noch kein muss, wäre auch sehr zufrieden wenn die Abfrage bei jedem DB-Start ausgeführt wird.

Und das dadrauf aufbauende problem ist das ich nicht weiß wo ich den Quellcode für den mailversandt hineinschreiben soll, aktuell sieht er noch so, muss aber noch angepasst werden, damit die daten aus der Abfrage auch zu dem Code von der Mail passen.

Dim olApp As Outlook.Application
Dim olNamespace As NameSpace
Dim objMailItem As MailItem
Dim objFolder As MAPIFolder

Set olApp = CreateObject(„Outlook.Application“)
Set olNamespace = olApp.GetNamespace(„MAPI“)
Set objFolder = olNamespace.GetDefaultFolder(olFolderInbox)
Set objMailItem = objFolder.Items.Add(olMailItem)
With objMailItem
.To = „[email protected]
.Subject = „Testmail“
.Body = „Hallo Hallo Hallo“
.Display
End With
olApp.ActiveWindow
SendKeys „%s“

hoffe ich konnte dir jetzt mein problem besser schildern, vielen dank für deine teilnahme an meinem Projekt (Y)

Gruß aus dem kalten berlin

Fizzo361

hallo, ich nochmal :smiley:

Also das mit dem Automatischen Start der Abfrage hab ich nun geschafft, habe es mittels
Autoexec-makro gelöst, dadruch bin ich aber nur einen kleinen schritt weiter gekommen :wink:

Jetzt ist das so wenn ich die Datenbank starte, startet er die auch die Abfrage und zeigt mir diese nun in der Datenbalttansicht an (darf aber in zukunft nicht mehr angezigt werden!), + Das eigentliche Startformular „frm_menu“ aber jetzt steht ich vor dem Problem das ich nicht weiß wie ich den Code für die Mail einbinden soll, hoffe ihr könnt mir weiterhelfen.

Vorstellen tue ich es mir so wenn nach dem Start der DB die Abfrage keine datensätze enthält, passiert auch nichts, stehen dort aber Datensätzte drin, starte Mail-Funktion oder so in der art. Umsetztung? kA

schöne grüße aus dem immernoch kalten aber sonnigen berlin

Fizzo361

Hallo,

nur als Prinzip:

Mittels Autoexec-Makro eine Public-Funktion, die in einem Standard-Modul stehen muss, mit Makrobefehl „Ausführen Code“ aufrufen.

Die Public-Funktion muss enthalten:

Einen Recordset, der seine Daten über die besagte Abfrage erhält und mittels Schleife durchfahren wird. Bei jedem Schleifendurchlauf wird eine weitere Public-Function („fktSendMail“) aufgerufen, die den Code für den Mail-Versand enthält. (Übergabe der Parameter nicht vergessen!)

(Luftcode:smile:

Public Function fktSendGebMails()
Dim rs as Dao.Recordset
Set rs = Currrentdb.Openrecordset(„select * from qry_DeineAbfrage“, dbOpenSnapShot)

If Not ( rs.BOF and rs.EOF) Then

DO until rs.EOF

fktSendMail rs!Madr,rs!Betreff,rs!Body

Loop

End if
rs.Close
Set rs = Nothing
End Function

Hallo, schau’ doch mal in diesen Beitrg:http://www.office-loesung.de/ftopic93701_0_0_asc.php

Mir scheint, dass dort dein Problem (mit) abgehandelt ist. Der Code ist zwar aufwändig, aber da er fertig vorformuliert ist in den Zip-Datei, musst du ‚nur‘ deine Daten und Werte einsetzen.

Überlegen musst du noch, ob der Mailversand per Hand (Button) ausgelöst werden oder ganz automatisch ablaufen soll.

Viel Erfolg und Gruß
tronicrot

noch eine kleine Ergänzung zur Antwort von Henri:

Du willst  den Mailversand automatisch starten beim Öffnen des Startformulars:smiley:as geht über ein ‚Ereignis‘, das beim Laden des Startformolars ausgelöst wird.
Dazu öffne das Startformular als Entwurf und zeige mit F4 das Eigenschaftsblatt dieses Formulars. Im Tab ‚Ereignisse‘ gehst du in die Zeile ‚beim Laden‘ und wählst mit dem Pfeil rechts ‚Ereignisprozedur‘. Danach klickst du auf die drei Punkte rechts in der Zeile und landest automatisch im Codefenster just dieser Prozedur. Dorthin schreibst du (kopierst du) den Code, der ‚beim Laden‘ ausgeführt werden soll.
Und falls du den Code in einem generellen Modul gespeichert hast, rufst du aus der ‚Beim Laden‘-Prozedur die Funktion(en) im generellen Modul auf.
Einfach mal probieren, klappt prima!!

Gruß, tronicrot

Hey vielen dank für eure Hilfe, echt super von euch daum hoch (Y) :smiley:

@ Tronicrot habe es genau nach deinem Schema ausprobiert und es hat geklappt war dank deiner Hilfe super einfach für mich, vielen dank

Der Mail versandt klappt jetzt ohne probleme :smiley:
Endlich ist dieses Problem aus der Welt :wink:

Ein schönen Tag wünsche ich euch noch und bis zum nächsten mal :wink:

Gruß aus dem grauen Berlin

Fizzo361