AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wiederholungsaufgabe wie speichern ?

Ein Thema von RWarnecke · begonnen am 19. Dez 2013 · letzter Beitrag vom 20. Dez 2013
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Wiederholungsaufgabe wie speichern ?

  Alt 19. Dez 2013, 19:30
Hallo zusammen,

folgende Situation. Ich kann im Programm eine Aufgabe definieren, die sich über einen bestimmten Zeitraum immer zu einem bestimmten Zeitpunkt wiederholen soll. Welche Daten würdet Ihr in einer Datenbank speichern ?

Ich kann mich zwischen diesen beiden Antworten nicht entscheiden :
  1. Die Aufgabe, das Startdatum, die Dauer und den Zeitpunkt der Wiederholung speichern und dann jeden Tag berechnen, ob die Aufgabe dran ist.
  2. Die Aufgabe in der Anzahl der Wiederholungen als einzelnen Datensatz speichern.

Was haltet Ihr für sinnvoller ?

Es geht hier nur um die Daten, nicht darum wie ich die Daten in eine Datenbanktabelle bringe.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Wiederholungsaufgabe wie speichern ?

  Alt 19. Dez 2013, 23:42
Eigentlich brauchst du doch beide Varianten also sowohl Einzeltermine als auch Serientermine.
Ich würde beide Varianten in der gleichen Tabelle speichern und damit die Daten leicht denormalisiert abspeichern.

JobIdRepeatModeStartDateStartTimeRepeatIntervalLastActionComment
101024.12.201318:00:00  Einzeltermin
105101.01.201000:00:001y01.01.2013 00:00:03Serientermin
100-119.12.201315:00:30  inaktiver Termin
RepeatMode steuert die Art des Termin-Eintrags.
LastAction ist ein kleiner Bonus damit man sieht wann die Aktion zum letzten Mal ausgeführt wurde.
fork me on Github
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: Wiederholungsaufgabe wie speichern ?

  Alt 20. Dez 2013, 01:34
Hallo,

ist eine interessante Frage, die so einfach wohl nicht zu beantworten ist - zumindest mit den knappen Angaben. Beide Varianten haben in einem bestimmten Kontext ihren eigenen Charme.

Wenn einen Aufgabe (mit Wiederholungen) definiert und gespeichert wird, im Anschluss aber nicht mehr geändert werden kann - oder darf -, dann ist die Variante 2 sicherlich die einfachere Lösung.

Sollen jedoch nachträgliche Änderungen am Wiederholungsintervall, das Löschen einer oder einzelner (wiederholten) Aufgaben(intervallen) möglich sein, o. ä., dann wird es vermutlich schwierig werden das in Variante 2 einfach abzubilden.

Daher würde ich eher zu Variante 1 tendieren, (nur) die wesemtlichen Attribute der Aufgabe in einer Tabelle halten (eine Aufgabe ist eine Aufgabe, egal wie oft wiederholt) und eventuelle Wiederholungen in einer zweiten Tabelle halten.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Wiederholungsaufgabe wie speichern ?

  Alt 20. Dez 2013, 06:46
@sx2008: Anstatt 'RepeatMode' vielleicht 'NumberOfRepetitions'. Dort stellt man ein, wie oft der Termin wiederholt werden soll.
Bei jeder Wiederholung wird 1 abgezogen, bis 0 rauskommt (oder -1, wie man will). Es reicht ja, bei beliebig oft zu wiederholenden Terminen ("Schahatz, bringst Du den Müll runter?") maxint einzutragen. Das wird -selbst bei glücklichen Ehen- ausreichen.

Weiterhin als Idee: Der geplante nächste Termin 'NextPlannedAction' vormerken. Dieser kann vom Benutzer angepasst werden. Der Scheduler prüft dann nur, welche nächste geplante Aktionen durchgeführt werden. Das kann man natürlich auch ausrechnen, aber dann gibt es diese Flexibilität nicht.

Beim Intervall würde ich noch Dinge einbauen, wie "Am 1. des Monats", "Jeden 2.Dienstag" usw. Das wird in der Codierung eub wenig umständlich und in der Berechnung des nächsten Termins kniffelig, aber da wir die 'NextPlannedAction' in der Tabelle halten, ist das wurscht. Der Scheduler jedenfalls (oder der Kalender) glotzt ja eh nur auf 'NextPlannedAction'.
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#5

AW: Wiederholungsaufgabe wie speichern ?

  Alt 20. Dez 2013, 06:48
Ich würde das Prinzip beim Wecker von Android abschauen:

Startdatum, Enddatum, Uhrzeit Typ (einmalig, wiederholt), Wochentage

Nach einem aufgetretenen Ereignis das nächste Ereignis ermitteln, dann muss laufend(!?) nur jeweils mit einem Termin verglichen werden.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Wiederholungsaufgabe wie speichern ?

  Alt 20. Dez 2013, 08:52
Ich würde mir mal "Geplante Tasks" bei Windows anschauen, dort finden sich bestimmt jede Menge Anregungen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: Wiederholungsaufgabe wie speichern ?

  Alt 20. Dez 2013, 09:21
Hallo zusammen,

danke erstmal für die vielen Antworten. Ich habe mir anhand den Antworten mal grob die folgenden Punkte zusammengestellt für das Speichern :
  • Die Aufgabe
  • Das Startdatum
  • in welchen Rythmus die Aufgabe wiederholt werden soll
  • der nächste Ausführungstermin
  • ob der Job aktiv oder inaktiv ist
Was ist eure Meinung zu den Punkten ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz