Office: (Office 2010) Automatisch Email verschicken (If then?)

Helfe beim Thema Automatisch Email verschicken (If then?) in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich starte ein neues Thema, da das im alten nicht mehr passte thematisch: altes Thema:... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Stephanjap, 9. März 2016.

  1. Automatisch Email verschicken (If then?)


    Hallo zusammen,

    ich starte ein neues Thema, da das im alten nicht mehr passte thematisch:
    altes Thema: http://www.ms-office-forum.net/forum...=330717&page=5

    es handelt sich immer noch um dieselbe BeispielDB: https://www.dropbox.com/s/xlgy6tjo66...DB2.accdb?dl=0

    Ich habe eine Tabelle Betriebsmittel, wo alle Daten zu den Betriebsmittel stehen. Nun will folgendes hinkriegen:

    Die Betriebsmittel sollen in einem bestimmten Wartungszyklus gewartet werden. Einen Tag vor der Wartung soll eine Email an den Meister der Meisterei verschickt werden, in der alle notwendigen Informationen zum Betriebsmittel wie z.B. Foto, Bezeichnung, Einsatzort, Wartungsblatt etc. enthalten sind.

    Ich habe in die Tabelle Betriebsmittel nun folgende Felder hinzugefügt:
    *WartungszyklusInTage (Zahl)
    *letzteWartung (Datum)
    *nächsteWartung (Datum)

    außerdem hab ich noch das Feld "Einführungsdatum (Datum)"

    Am Anfang soll letzteWartung = einführungsdatum, welches man selber einträgt sein. Also letzteWartung.value = einführungsdatum ?

    das Feld nächsteWartung berechnet sich dann aus nächsteWartung = LetzteWartung + Wartungszyklus. Wobei ich mich frage: Ist es möglich Datum und Zahl (hier Datum der letzten Wartung und Wartungszyklus) miteinander zu verrechnen? Falls nein, welche Möglichkeit gibt's da?

    Dann wollte ich mit If, then... arbeiten:
    if nächsteWartung - letzteWartung = Wartungszyklus - 1
    then ... irgendeine Funktion, die dann automatisch eine Email an die entsprechenden Meister (können ja mehrere Meister sein) verschickt werden

    sowie

    if nächsteWartúng - letzteWartung = Wartungszyklus
    then letzteWartung = nächsteWartung
    nächsteWartung = nächsteWartung + Wartungszyklus


    irgendwie sowas... also vom Prinzip her hab ich mir das nur gedacht. Müsste dann gucken, wie man das genau codet. Vor allem die Stelle, wo die Email automatisch verschickt werden soll.

    Und mir fällt gerade ein, dass man für berechnet Felder ja kein Feld in der Tabelle anlegen soll. Also ich kann einfach ein normales Textfeld nehmen und das entsprechend beschriften, ne? Dann fliegen die Felder nächsteWartung und letzteWartung raus oder wie?



    Viele Grüße
    Stephanjap

    :)
     
    Stephanjap, 9. März 2016
    #1
  2. Moin,
    da wirst du eine Tabelle für die Wartungen brauchen:
    IDWartung, BetriebsmittelID_fk, WartungsDatum
    In der Tabelle Betriebsmittel dann ein Feld für den Wartungszyklus (Tage?, Monate? ...)
    Per Abfrage kannst du dann feststellen, welche Wartungen anliegen:
    Max(WartungsDatum) + Zyklus = aktuellesDatum -1
    und die entsprechenden Mails versenden.
    Die Funktion müsste aber schon wissen, welcher Meister welche Mail bekommen soll. Ist das in der DB ermittelbar?

    maike
     
    maikek, 11. März 2016
    #2
  3. Hi,

    ja das sollte ermittelbar sein, es gibt eine Tabelle "Meisterei" wo die Email-Adresse der Meister drin steht.

    zum Verschicken eignen sich ja am besten Berichte nehm ich mal an!

    Ich habe noch keine Berichte gebaut, ich stell mir die aber wie Formulare vor (nur dass man da nix drin ändern kann).

    Also Bericht der Betriebsmittel stell ich mir wie das Formular für Betriebsmittel vor (ein bisschen abgespeckt), also "Bezeichnung", "F-Nummer", "Hersteller-Nr.", "sonstige Nummer", "Wartungsblatt" als Anlage, "Wartungszyklus", "letzteWartung" und "nächsteWartung" sollten als Felder im Bericht vorkommen.

    Ich wollte dann eine Funktion einsetzen, die mir einen Tag vor der nächsten Wartung automatisch (also ohne Öffnen von Access!) eine Email an den richtigen Meister verschickt.

    Also eine Funktion, die bei einem Betriebsmittel einen Tag vor der nächsten Wartung den dazugehörigen Bericht an die entsprechenden Meister per Email verschickt.

    Aber wie kann so eine Funktion aussehen?

    Edit: Meine Idee für den Bericht geht wahrscheinlich in die Richtung von donkarls Access-Seiten FAQ 5.9
    Es soll dann nur der aktuelle (bzw. zu versendende) Datensatz "verberichtet" werden, so dass er an den Meister verschickt werden kann.
     
    Stephanjap, 13. März 2016
    #3
  4. Automatisch Email verschicken (If then?)

    Die Frage war eher, wie kann das Programm feststellen, welche Wartung an welchen Meister geht?
    Das kommt auf deine Aufgabe an. Du kannst auch reinen Text verschicken oder eine Tabelle oder ...
    Ohne Öffnen von Access - das wird wohl nicht gehen. Evtl. ohne manuelles Öffnen ...
    maike
     
    maikek, 13. März 2016
    #4
  5. Ja, hab mir gedacht, dass das Programm dafür schon offen sein muss... naja wenns nicht so viel Kapazität belegt, sollte das auch kein Problem sein, wenns im Hintergrund läuft.

    Also da die Zuordnung von Betriebsmittel und Meister definiert ist über die Verknüpfungstabelle "Einsatzort" sollte das doch möglich sein, oder? In dieser Tabelle ist halt genau festgehalten, welcher Betriebsmittel an welchem Arbeitsplatz eingesetzt wird. Und jeder Arbeitsplatz ist eindeutig einer bestimmten Meisterei zugeordnet. Da müsste man nur noch eine Email verschicken.
     
    Stephanjap, 13. März 2016
    #5
  6. Email verschicken:
    Einfache Variante mit DoCmd.SendObject,
    mehr Möglichkeiten z.B. per Outlook-Automation
    (ich weiß ja nicht, welches Mail-Programm du nutzen willst).
    maike
     
    maikek, 13. März 2016
    #6
  7. Ok, ich bin gerade am herumprobieren, es hapert bei mir noch gewaltig:

    Also ich hab mal im Startformular, welches beim Starten des Programms automatisch geöffnet wird für das Ereignis "Beim Laden" versucht irgendetwas mit VBA zu machen...

    Code:
     
    Stephanjap, 14. März 2016
    #7
  8. Automatisch Email verschicken (If then?)

    Dann müssen diese Formulare aber zu dem Zeitpunkt auch geöffnet sein. Ich dachte, du wolltest möglichst nicht mal Access öffnen *biggrin.gif* .

    Daten findest du immer in Tabellen, wenn davon welche nach Kriterien herausgesucht werden sollen, dann macht man das mit einer Abfrage, möglichst auch schon alle beteiligten Daten aus allen Tabellen dazuholen (Meister und Email).

    Da wirst du den Bericht in einer Schleife über ein Recordset, beruhend auf obiger Abfrage, mit dem Kriterium/WhereCondition öffnen und von da aus direkt versenden müssen.
    Die sind per Tabelle XY verknüpft. Das Zauberwort heißt auch hier wieder: Abfrage.
    maike
     
    maikek, 14. März 2016
    #8
  9. Also mache ich alles mit einer Abfrage und nicht VBA?

    Die Datensatzherkunft meines Berichts soll also eine Abfrage mit alle Betriebsmitteldaten, Meister und Email sein?
     
    Stephanjap, 14. März 2016
    #9
  10. Hallo zusammen,

    also ich habe für den Bericht jetzt eine Abfrage mit Betriebsmitteldaten, Wartungszyklus, und Email des Meisters sowie das berechnete Feld "nächsteWartung".

    Nun muss ich in der Abfrage in der Spalte "nächsteWartung" unter Kriterien sowas wie folgendes schreiben:
     
    Stephanjap, 14. März 2016
    #10
  11. Nein, eine Abfrage kann keine Emails verschicken, dazu wirst du wohl doch VBA brauchen.
    Du hast jetzt die Daten identifiziert (anstehende Wartungen mit entsprechendem Meister), dann geht es so weiter:
    • Recordset öffnen auf Basis der Abfrage
    • Schleife über Recordset:
      Code:
    maike
     
  12. jap genau,hab jetzt für den Bericht ne Abfrage als Datensatzherkunft, wo mir alle Betriebsmittel, die gewartet werden müssen, angezeigt werden.
    Betriebsmittel, die von zwei unterschiedlichen Meistern gewartet werden müssen, stehen quasi doppelt drin (bzw. unterscheiden sich nur in den Feldern Meister und Email).

    Also hoffe soweit hab ich alles richtig gemacht*biggrin.gif*

    heißt das ich soll den Bericht in Datenblattansicht öffnen, oder was heißt das?

    Recordset = Datensatz ne?
    Wo muss ich den Code jetzt schreiben?

    Was ist mit Felder auslesen gemeint?

    also DoCmd.OpenReport "bemiB", acViewPreview, "wartungQ", , ,

    mit der Methode wird ja der Bericht geöffnet mit den wartungsbedürftigen Betriebsmitteln. Warum muss ich die gleiche Abfrage nochmal anwenden? Also der Bericht "bemiB" hat ja die Abfrage "wartungQ" als Datensatzhekunft, somit werden nicht alle Betriebsmittel angezeigt,sondern nur die, die am nächsten Tag gewartet werden müssen.

    mit der WhereCondition kann man doch auswählen, dass nur der aktuelle Datensatz angezeigt wird oder? Wie mache ich das? Mit der BetriebsmittelID müste das doch gehen oder? Also ne Gleichung wo die BetriebsmittelID, die gerade durchlaufen wird mit der BetriebsmittelID im gefilterten Bericht verglichen wird, so dass nur der Bericht zu diesem Betriebsmittel angezeigt wird.

    Für das mailen benutz ich ja diese Methode
    .SendObject(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc, Subject, MessageText, EditMessage, TemplateFile)

    Hier muss ich doch die EmailAdresse des Meisters einfügen. Angenommen ein Betriebmittel wird von zwei Meistern gewartet, dann geht die Mail ja an zwei unterschiedliche Adressen. Geht das?



    Edit: Ok, bei der WhereCondition müsste doch stehen Code:
    oder nicht? Feld des Bericht wird dann mit der bemiID des Betriebsmittel, welches in der Scheife gerade durchlaufen wird, verglichen und die entsprechenden Datensätze (mehrere bei unterschiedlichen Meistern) im Bericht geöffnet.

    Die Filterung der Betriebsmittel, bei denen die Wartung zeitnah ansteht, muss ich nicht doppelt machen ne? Also ich kann bei DoCmd.OpenReport erst ein Bericht nehmen, wo alle Betriebsmittel angezeigt werden würden, dann durch WartungQ filtern und letztendlich durch die WhereCondition genau die Datensätze öffnen, die an ihre jeweilige Email-Adresse nun verschickt werden sollen.

    Edit2:
    Ich hab eben die SendObject Methode ausprobiert. Wie krieg ich es denn hin, dass die Email automatisch verschickt wird, ich also nicht auf "Senden" bei Outlook klicken muss.
    Also ich hätte es gerne so, dass beim Öffnen der Access Datenbank automatisch nach wartungsbedürftigen Betriebsmitteln durchsucht wird und an die entsprechenden Meister automatisch eine Email mit einem Bericht geschickt wird. Außerdem sollte dieselbe Email nur einmal pro Tag rausgehen... alles nicht so einfach*mad.gif*
     
    Stephanjap, 15. März 2016
    #12
  13. Automatisch Email verschicken (If then?)

    Luftcode, nicht getestet:
    Code:
    Da wo als Format in Rot PDF steht, musst du noch mal nachsehen, wie das genau bezeichnet wird.
    Meine Access-Version kann noch keine pdfs, aber 2010 schon.
    maike
     
  14. Hi maikek

    Code:
    da kommt bei mir Laufzeitfehler 3075
    Syntaxfehler (fehlender Operator) in Abfrageausdruck "bemiID=".

    Ich hab den Code im Ereignis beim Klicken einer Schaltfläche untergebracht. Wo wäre es aber sinnvoller, wenn dieser Prozess noch automatischer ablaufen soll? Also z.B. beim Starten des Programms.
    Wie wäre aber gewährleistet, dass die Emails nur 1x pro Tag verschickt werden?

    Viele Grüße
    Stephanjap
     
    Stephanjap, 15. März 2016
    #14
  15. Eins nach dem andern.
    Bei der gezeigten Stelle ist ein i zuviel: lgBemiiID
    maike
     
Thema:

Automatisch Email verschicken (If then?)

Die Seite wird geladen...
  1. Automatisch Email verschicken (If then?) - Similar Threads - Automatisch Email verschicken

  2. Autom. Email verschieben in Ordner anhand einer Nummer im Betreff

    in Microsoft Outlook Hilfe
    Autom. Email verschieben in Ordner anhand einer Nummer im Betreff: Hallo! Ich würde gerne in Outlook Mails aus der Inbox anhand einer Nummer im Betreff in einen entsprechenden Ordner mit der gleichen Nummer verschieben. Aktuell gibt es im Standard bei "Element...
  3. email automatisch verschiken Von einer WENN Unktion

    in Microsoft Excel Hilfe
    email automatisch verschiken Von einer WENN Unktion: Hallo ich kenne mich was VBA angeht nicht aus! Ich habe das Logo Access toll das von einer Logo Steuerung Werte Abgreift! In der Spalte V Wenn Funktionen die mir Bei bestimten werten dan...
  4. Makro für automatische Email

    in Microsoft Excel Hilfe
    Makro für automatische Email: Hallo zusammen, ich bin in Makros schreiben und machen noch nicht so fit. In diesem Forum kann mir bestimmt jemand weiterhelfen. Ich habe ein Excel Dokument mit ca. 50 Arbeitsblättern. Ich...
  5. Bei gmx online gelöschte Emails löschen sich automatisch im Outlook

    in Microsoft Outlook Hilfe
    Bei gmx online gelöschte Emails löschen sich automatisch im Outlook: Ich benötige Hilfe bezüglich des Löschens von Emails bei gmx bzw den direkten Auswirkungen davon im Outlook. Wenn ich eine Email online lösche, verschwindet diese daraufhin auch in meinem...
  6. Excel Zeilen-Felder in eMail automatisch übertragen

    in Microsoft Excel Hilfe
    Excel Zeilen-Felder in eMail automatisch übertragen: Hallo, ich würde gern aus einer Excel-Liste z.B. die Spalte A Zeile 5 aus Spalte B Zeile 6 und Spalte B Zeile 8 automatisch in eine eMail überträgen, wenn ich auf einen bestimmten Punkt klicke....
  7. Outlook 2016: Beim Klick auf Hyperlinks in Emails wird sofort zum Browser gewechselt

    in Microsoft Outlook Hilfe
    Outlook 2016: Beim Klick auf Hyperlinks in Emails wird sofort zum Browser gewechselt: Hallo Leute! Mich nervt etwas, kann es aber nicht abstellen: Nutze Outlook 2016, beim Klick auf Hyperlinks in Emails wird sofort zum Browser geswitched, um das Linkziel anzuschauen - ich würde...
  8. Automatische Antowrt an "Reply-To" anstelle "Return-Path"

    in Microsoft Outlook Hilfe
    Automatische Antowrt an "Reply-To" anstelle "Return-Path": Grüße, ich habe die Google Suche als auch die Foren Suche erfolglos versucht, daher ein neuer Eintrag. Folgendes Problem: ich möchte emails automatisch mit einer Vorlage beantworten, jedoch...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden