{"id":55000187,"date":"2013-04-01T00:00:00","date_gmt":"2020-01-24T15:58:47","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=187"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Feiertage_verwalten_Teil_2","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html","title":{"rendered":"Feiertage verwalten, Teil 2"},"content":{"rendered":"<p class='introduction'>Im ersten Teil dieser Artikelreihe haben Sie die Tabelle zum Speichern der Basisdaten der Feiertage sowie die Formulare zum Verwalten der Feiertage sowie f&uuml;r die Zuordnung zu den Bundesl&auml;ndern kennengelernt. Im vorliegenden zweiten Teil schauen wir uns an, wie die flexiblen Feiertage ermittelt werden und wie Sie aus den ermittelten Informationen eine Liste der Feiertage f&uuml;r einen bestimmten Zeitraum erstellen k&ouml;nnen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1302_FeiertageErmitteln.mdb<\/b>.<\/p>\n<h2>Fixe und flexible Feiertage<\/h2>\n<p>Die fixen Feiertage finden immer am gleichen Datum statt: Neujahr am 1. Januar, Heilige drei K&ouml;nige am 6. Januar, der Maifeiertag am 1. Mai et cetera. Diese vermerken wir in der Tabelle <b>tblFeiertageBasis<\/b>, indem wir den Namen des Feiertags eintragen, den Tag und den Monat festlegen, das Feld <b>TageBisStichtag <\/b>leer lassen und das Feld <b>FeiertagArt <\/b>mit <b>Datum konstant <\/b>f&uuml;llen (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_187_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_187_001.png\" alt=\"Basisdaten zu den Feiertagen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Basisdaten zu den Feiertagen<\/p>\n<p>F&uuml;r die flexiblen Feiertage, von denen es zwei Varianten gibt, tragen wir ebenfalls den Feiertagnamen ein. F&uuml;r den <b>Tag <\/b>und den <b>Monat <\/b>legen Sie allerdings jeweils den Wert <b>0 <\/b>fest. Daf&uuml;r tragen Sie im Feld <b>TageBisStichtag <\/b>einen Zahlenwert ein, der angibt, wieviele Tage der Feiertag vor oder hinter dem jeweiligen fixen Tag liegt. Um festzulegen, um welche Variante der flexiblen Feiertage es sich handelt, tragen Sie unter <b>Feiertagsart <\/b>entweder <b>Abstand zu Stichtag Ostersonntag konstant <\/b>oder <b>Abstand zu Stichtag Vierter Advent konstant <\/b>ein.<\/p>\n<h2>Stichtage f&uuml;r flexible Feiertage<\/h2>\n<p>Nun ben&ouml;tigen wir noch die Stichtage f&uuml;r die beiden flexiblen Feiertage, und zwar f&uuml;r Ostersonntag und f&uuml;r den vierten Advent. Im Falle des vierten Advents ist dies einfach: Es handelt sich dabei um den letzten Sonntag vor dem ersten Weihnachtsfeiertag. Um diesen Stichtag zu berechnen, verwenden Sie die Funktion aus Listing 1. Die Prozedur erwartet die Zahl des zu untersuchenden Jahres als Parameter mit dem Datentyp <b>Integer<\/b> (f&uuml;r Werte bis 32.767) und liefert einen Wert des Typs <b>Date <\/b>zur&uuml;ck (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_187_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_187_002.png\" alt=\"Test der Funktion zum Ermitteln des vierten Advents\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Test der Funktion zum Ermitteln des vierten Advents<\/p>\n<p>Die Funktion f&uuml;llt eine tempor&auml;re Variable namens <b>datTemp <\/b>mit einem Datum, dass dem 24. Dezember des angegebenen Jahres entspricht. Dazu setzt es die Zeichenkette <b>24.12. <\/b>und die mit der Variablen <b>lngJahr <\/b>&uuml;bergebene Jahreszahl zusammen und konvertiert den Ausdruck mit der Funktion <b>CDate <\/b>zu einem Datumswert zusammen.<\/p>\n<p>Dies k&ouml;nnten Sie theoretisch auch mit der <b>DateSerial<\/b>-Funktion erledigen. Die entsprechende Zeile sieht dann wie folgt aus:<\/p>\n<pre>datTemp = DateSerial(intJahr, 12, 24)<\/pre>\n<p>Nun startet die Prozedur eine <b>Do While<\/b>-Schleife. Diese wird solange durchlaufen, bis der Wochentag des in <b>datTemp <\/b>gespeicherten Datums dem Sonntag entspricht. Innerhalb der Schleife zieht die Funktion mit jedem Durchlauf einen Tag vom Datum ab.<\/p>\n<p>Im Jahr 2012 etwa fiel Heiligabend auf einen Montag, der vierte Advent dementsprechend auf den Sonntag davor. Die Funktion pr&uuml;ft beim ersten Aufruf der <b>Do While<\/b>-Zeile, ob der Wochentag des Datums den Wert <b>vbSunday <\/b>zur&uuml;ckliefert. Das ist im ersten Durchlauf des Beispiels f&uuml;r 2012 nicht der Fall, stattdessen liefert die <b>Weekday(datTemp) <\/b>f&uuml;r den <b>24.12.2012 <\/b>den Wert <b>2 <\/b>(<b>vbMonday<\/b>). Also ist die Abbruchbedingung nicht erf&uuml;llt und der in der Schleife enthaltene Befehl wird durchlaufen. Dieser subtrahiert vom in <b>datTemp<\/b> gespeicherten Wert die Zahl <b>1 <\/b>&#8211; dies entspricht genau einem Tag (Tage sind ganze Zahlen, Uhrzeiten der Bereich hinter dem Komma). Im n&auml;chsten Durchlauf hat <b>datTemp<\/b> den Wert <b>23.12.2012 <\/b>und <b>Weekday <\/b>liefert den gew&uuml;nschten Wert <b>1 <\/b>(<b>vbSunday<\/b>). Die Abbruchbedingung ist erf&uuml;llt und die Schleife wird kein weiteres Mal durchlaufen.<\/p>\n<p>Schlie&szlig;lich stellt die Funktion <b>datTemp<\/b> als Wert der R&uuml;ckgabevariablen <b>VierterAdvent <\/b>ein (gleichzeitig Funktionsname).<\/p>\n<h2>Berechnung des Datums des Ostersonntags<\/h2>\n<p>Die Berechnung des Ostersonntags ist etwas komplizierter als die des vierten Advents. Um ehrlich zu sein: Wir sollten die Formel zur Berechnung, die durch die Funktion aus Listing 2 abgebildet wird, einfach hinnehmen.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Ostersonntag(intJahr<span style=\"color:blue;\"> As Integer<\/span>)<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>a<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>b<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>c<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>d<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>e<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intTag<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intMonat<span style=\"color:blue;\"> As Integer<\/span>\r\n     a = intJahr <span style=\"color:blue;\">Mod<\/span> 19\r\n     b = intJahr <span style=\"color:blue;\">Mod<\/span> 4\r\n     c = intJahr <span style=\"color:blue;\">Mod<\/span> 7\r\n     d = (19 * a + 24) <span style=\"color:blue;\">Mod<\/span> 30\r\n     e = (2 * b + 4 * c + 6 * d + 5) <span style=\"color:blue;\">Mod<\/span> 7\r\n     intTag = 22 + d + e\r\n     intMonat = 3\r\n     <span style=\"color:blue;\">If <\/span>intTag > 31<span style=\"color:blue;\"> Then<\/span>\r\n         intTag = d + e - 9\r\n         intMonat = 4\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Ostersonntag = intTag & \".\" & intMonat & \".\" & intJahr\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p class='imagetext'>Listing 2: Berechnung des Datums des Ostersonntags<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000187\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000187?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000187\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"34aae43e8a\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil dieser Artikelreihe haben Sie die Tabelle zum Speichern der Basisdaten der Feiertage sowie die Formulare zum Verwalten der Feiertage sowie f&uuml;r die Zuordnung zu den Bundesl&auml;ndern kennengelernt. Im vorliegenden zweiten Teil schauen wir uns an, wie die flexiblen Feiertage ermittelt werden und wie Sie aus den ermittelten Informationen eine Liste der Feiertage f&uuml;r einen bestimmten Zeitraum erstellen k&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022013,662013,44000014],"tags":[],"class_list":["post-55000187","post","type-post","status-publish","format-standard","hentry","category-66022013","category-662013","category-Loesungen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Feiertage verwalten, Teil 2 - Access [basics]<\/title>\n<meta name=\"description\" content=\"Im ersten Teil dieser Artikelreihe haben Sie die Tabelle zum Speichern der Basisdaten der Feiertage sowie die Formulare zum Verwalten der Feiertage sowie f\u00fcr die Zuordnung zu den Bundesl\u00e4ndern kennengelernt. Im vorliegenden zweiten Teil schauen wir uns an, wie die flexiblen Feiertage ermittelt werden und wie Sie aus den ermittelten Informationen eine Liste der Feiertage f\u00fcr einen bestimmten Zeitraum erstellen k\u00f6nnen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Feiertage verwalten, Teil 2 - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Im ersten Teil dieser Artikelreihe haben Sie die Tabelle zum Speichern der Basisdaten der Feiertage sowie die Formulare zum Verwalten der Feiertage sowie f\u00fcr die Zuordnung zu den Bundesl\u00e4ndern kennengelernt. Im vorliegenden zweiten Teil schauen wir uns an, wie die flexiblen Feiertage ermittelt werden und wie Sie aus den ermittelten Informationen eine Liste der Feiertage f\u00fcr einen bestimmten Zeitraum erstellen k\u00f6nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_187_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"10\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_187_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html\",\"name\":\"Feiertage verwalten, Teil 2 - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:47+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Im ersten Teil dieser Artikelreihe haben Sie die Tabelle zum Speichern der Basisdaten der Feiertage sowie die Formulare zum Verwalten der Feiertage sowie f\\u00fcr die Zuordnung zu den Bundesl\\u00e4ndern kennengelernt. Im vorliegenden zweiten Teil schauen wir uns an, wie die flexiblen Feiertage ermittelt werden und wie Sie aus den ermittelten Informationen eine Liste der Feiertage f\\u00fcr einen bestimmten Zeitraum erstellen k\\u00f6nnen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Feiertage_verwalten_Teil_2.html\",\"name\":\"Feiertage verwalten, Teil 2\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000187"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000187\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}