Announcement

Collapse
No announcement yet.

Eigenen Kalender programmieren mit Anzeige von Feiertagen, Urlaub etc.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Eigenen Kalender programmieren mit Anzeige von Feiertagen, Urlaub etc.

    Hallo!

    Ich würde gerne einen eigenen Kalender programmieren. Außerdem sollen noch aus einer Datenbank Werte ausgelesen werden, ob jemand an einem bestimmten Tag nicht da ist oder ob es sich um einen Feiertag handelt.

    Wie gehe ich da am besten vor? Ich möchte keinen bestehenden Kalender verändern oder verwenden, sondern möglichst alles selber programmieren.

    Macht es Sinn, alle Tage eines Jahres in die DB zu hauen und dann per Abfragen die einzelnen Monate zu berechnen, die Feiertage herauszufischen usw.?

    Im Moment denke ich an folgende DB:
    Code:
    Person(P_ID, Name, Vorname, etc)
    
    Abwesenheit(A_ID, Anwesend (standard), Abwesend, Urlaub,...)
    
    Eintrag(ID, P_ID, A_ID, D_ID)
    
    Datum(D_ID, Datum)
    Dann es so sein, dass man in jedem Monat je nach Person die Einträge aus der Datenbank am jeweiligen Tag angezeigt bekommt und auch Über den Kalender Daten in der Datenbank speichern kann.

    Oder wie programmiert man am besten einen Kalender? Wie machen das denn die Software-Entwickler, die solche Tools entwicklen?

    Danke für Tipps und Hilfe!

  • #2
    Bei Kalender denke ich an was UI mäßiges was du beschreibst klingt aber mehr nach einer Terminverwaltung. Sehe ich das richtig oder missverstehe ich dich. Es geht dir nur um die Ermittlung und Persistierung von Terminen?
    Bei Feiertagen stell ich mir die Frage welche Feiertage du meinst. Unsere lassen sich alle Berechnen eine Speicherung ist also nicht zwingend notwendig.

    Macht es Sinn, alle Tage eines Jahres in die DB zu hauen und dann per Abfragen die einzelnen Monate zu berechnen, die Feiertage herauszufischen usw.?
    Kommt drauf an was du mit den Daten vorhast. Im allgemeinen Fall würde ich dazu tendieren nur die Daten abzulegen die auch tatsächlich relevant sind und Tage an denen nix passiert weglassen. Wenn man doch mal alle Tage braucht läßt sich das sicher einfach mit einer entsprechenden View oder CTE für den gewünschten Zeitraum dazu joinen.

    Oder wie programmiert man am besten einen Kalender? Wie machen das denn die Software-Entwickler, die solche Tools entwicklen?
    Da ich nicht genau weiss was du vorhast nur ein allgemeiner Pedantenkommentar dazu.
    Ein Software-Entwickler würde erstmal genau die Anforderung feststellen den Markt sondieren und nur programmieren wenn der Markt nix hergibt. Alles selber machen ist was für Hobbyprogrammierer denen der wirtschaftliche Faktor egal ist

    Comment


    • #3
      Ich sehe da 3 Bereiche, plus die Einwände von Ralf Jansen
      1) Datenhaltung > DB
      2) Darstellung (nicht interaktiv, also Reporting)
      3) wie 2, aber interaktiv, GUI Masken mit Eingabemöglichkeiten (inline edit)

      Zu 1) Datenhaltung für
      Zeitpunkt
      Zeitraum
      Jeweils mit Klassifizierung
      ggF. Regeln für wiederkehrende Zeitpunkte oder Zeiträume
      wieso Personen? Vielleicht willst Du mehrere Kalender verwalten (1pro Person, ..)
      ggF. eine Basismenge von 365 Tagen als „Grundgerüst“

      zu 2) hier kann eigentlich jedes Reporting System verwendet werden (oder willst Du das gleich auch noch selbst programmieren?)
      unterschiedliche Darstellung (Listing, linear, kumuliert, Druckvarianten) sind möglich
      Dateneingabe kann bzw. muss natürlich separat erfolgen
      zu 3) wie 2, offensichtlich eignet sich aber naturgemäß kein Reportingsystem für interaktive Dateneingabe
      da ist also vermutlich die Hauptarbeit, Verwendung von Komponenten erscheint allerdings sinnvoll
      es gibt das ein oder andere standardisierte Format für Kalendereinträge, solche Formate einzulesen / lesen zu können wäre sicher ein sinnvoller und einfacher Einstieg für Punkt 3
      Gruß, defo

      Comment


      • #4
        Die Feiertage die nicht ohnehin an einem festen Tag stattfinden, kann man berechnen. Es wäre also unnötig die Feiertage in eine DB zu stecken.

        Comment


        • #5
          Originally posted by Womble View Post
          Die Feiertage die nicht ohnehin an einem festen Tag stattfinden, kann man berechnen. Es wäre also unnötig die Feiertage in eine DB zu stecken.
          Klar, aber ich habe dann keinen einheitlichen Zugriff. Eine Feiertags- oder allgemeine Darstellung muss immer zwischen Berechnung und gelisteten Einträgen grätschen, lästig. (Ok, es kostet etwas Speicherplatz, vor allem wenn man alle Feiertage bis ins Jahr 3000 einträgt.)
          Außerdem ist das mit der Berechnung von Feiertagen recht "statisch".
          Wer weiß, wann der Tag der deutschen Einheit wieder abgeschafft wird oder wann es den nächsten festen Feiertag gibt, z.B. Tag der Arbeiterrevolution oder so- da kann man vermutlich gleich auch ein paar kirchliche Feiertage streichen!?
          Klingt vielleicht etwas unrealistisch, aber ich sag einfach mal "Jahr 2000"
          Gruß, defo

          Comment


          • #6
            Hallo!

            Also erstmal vielen Dank!

            Da ich nicht genau weiss was du vorhast nur ein allgemeiner Pedantenkommentar dazu.
            Ein Software-Entwickler würde erstmal genau die Anforderung feststellen den Markt sondieren und nur programmieren wenn der Markt nix hergibt. Alles selber machen ist was für Hobbyprogrammierer denen der wirtschaftliche Faktor egal ist
            Genau das ist hier der Fall Zeit und Geld spielen keine Rolle. Das Ding soll funktionieren und ich will dabei lernen. Muss also nix Hammer-Professionelles sein. Das könnte dann zwar eventuell mal eingesetzt werden, wenn es funzt, aber das steht in den Sternen. Und wegen "den Markt sondieren": Wenn es ein solches Tool nicht gäbe, müssten die das ja auch programmieren.

            Also es sollen von mehreren Leuten die Tage erfasst werden, an denen sie im Urlaub sind, woanders sind oder sowas. Das Ganze sollte dann aus der DB gelesen und in einer netten Form dargestellt werden. Ich denke, eine Kalenderansicht, wo an den entsprechenden Tagen die Einträge aus der DB stehen, macht sich da gut.

            Ich hab da mal angefangen den asp-Kalender zu verwenden und das Ganze mit C# umzusetzen, aber das ist recht sperrig. Deswegen wärs wohl einfacher, den Kalender doch selber zu programmieren. Es geht mir also eher darum, wie man den Kalender an sich programmiert. Mein Problem ist z. B. Folgendes: Ich kann mir ja in C# die Tage des laufenden Kalenders holen und daraus eine Tabelle basteln, die wie ein Kalender aussieht. Aber wie schaffe ich es, dass ich auch die nächsten 24 Monate anzeigen kann und die vergangenen 3-4 Monate. Daher dachte ich, dass ich die ganzen Datumsangaben in der DB speichere, dann muss man nur ab und an die DB mit neuen Daten füllen.

            Der asp-Kalender hat halt den Vorteil, dass man sich darum nicht kümmern muss. Aber das Auslesen von Schreiben von Daten ist nervig

            @defo: Was meinst du mit Formaten bei Punkt 3 deiner ersten Antwort?

            Comment


            • #7
              @defo: Was meinst du mit Formaten bei Punkt 3 deiner ersten Antwort?
              Nicht defo ab trotzdem ne Antwort. Ein Format (eigentlich das Format) wäre iCalender oder kurz iCal. Veröffentlich einfach den Kalender als iCal (und eben nicht als Html) und die Leute können sich das in einer Anwendung ihrer Wahl ansehen. Outlook, die ganzen Mozilla Tools ... eigentlich jede Mail, Team, Workgroup Anwendung kann iCal.

              Comment


              • #8
                Hallo Ralf!
                Danke für die Antwort, aber mir geht es ja gerade darum, nicht etwas Vorgefertigtes zu verwenden. Denn in allererster Linie geht es mir um den Lerneffekt.

                Comment


                • #9
                  Originally posted by Vokabulator View Post
                  Hallo Ralf!
                  Danke für die Antwort, aber mir geht es ja gerade darum, nicht etwas Vorgefertigtes zu verwenden. Denn in allererster Linie geht es mir um den Lerneffekt.
                  Äh, wenn Du das alles selbst machen willst, warum fragst Du dann?

                  Falls Du Dir iCal (was ich tatsächlich meinte) mal anschaust, wirst Du feststellen, dass erstmal nur eine Format (Spezifikation) ist, die bspw. einen Terminund gewisse Events wie Termin löschen, .. beschreibt.

                  Es gibt Software, die sowas lesen, darstellen und schreiben kann. Die musst Du ja nicht nutzen.
                  Beginnst Du aber wie vorgeschlagen damit, ical importieren zu können (statt eine eigene Eingabemaske, eigenes Speicherformat zu entwickeln) kann jeder User z.B. seine Outlook Termine exportieren und in Deinem System einlesen.
                  Wie Dein System diese Daten darstellt, ist Deinem künstlerischen Können und Deinen Programmierkenntnissen überlassen.

                  Deine Anwendung würde also folgendes können müssen:
                  ical einlesen in Termin Klasse
                  Termin Klasse in DB persistieren
                  DB Termin auslesen in Termin Klasse
                  Termin Klasse darstellen (anzeigen)
                  Termin Klasse exportieren nach ical

                  und dann irgendwann auch
                  Termin Klasse editieren (Neu/Ändern/Löschen) und in DB persistieren

                  Zu deiner Frage oben irgendwo "wie 24 Monate vor, 3 zurück"
                  Diese Daten holt man sich tatsächlich am besten aus der DB, wenn der User im Kalender blättert.
                  Gruß, defo

                  Comment


                  • #10
                    Okay, alles klar. Ich dachte, iCal wäre schon das ganze Ding. Ich werde mir das auf jeden Fall mal anschauen, vielen Dank!!

                    Comment


                    • #11
                      Originally posted by Vokabulator View Post
                      Oder wie programmiert man am besten einen Kalender? Wie machen das denn die Software-Entwickler, die solche Tools entwicklen?
                      In der Regel greift man auf etwas zurück, das andere schon für einen getan haben. Oft genug gibt es das sogar kostenlos.
                      Nur schon die Frage: "Auf welchen Tag fällt Ostern?" erfordert einiges an Recherche und Rechnerei.

                      Fang' mal mit den Personen an, da lernst du schon einiges.

                      Gruss

                      Comment

                      Working...
                      X