{"id":55000111,"date":"2003-06-01T00:00:00","date_gmt":"2020-09-14T13:40:23","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=111"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Schulungen_und_Kurse_verwalten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/","title":{"rendered":"Schulungen und Kurse verwalten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Autor: Martin Hoffmann, D&uuml;sseldorf<\/p>\n<p><\/b>!<\/p>\n<p><b>Die Weiterbildung und Qualifizierung von Mitarbeitern ist einerseits ein wichtiger Faktor zur Sicherung des Know-hows eines Unternehmens und andererseits ein Motivationsfaktor f&uuml;r die Mitarbeiter. Die Verwaltung der Schulungsma&szlig;nahmen kann dabei mit steigender Mitarbeiter- und Kurszahl sehr komplex ausfallen, insbesondere dann, wenn Kurse aufeinander aufbauen oder vorgegebene Noten erzielt werden m&uuml;ssen. Der folgende Beitrag zeigt Ihnen, wie Sie eine Schulungsverwaltung erstellen, mit der Sie komfortabel Teilnehmer zu Kursen anmelden, die Teilnahme kontrollieren und Zertifikate bei Abschluss drucken.<\/b><\/p>\n<p>Die Schulungsverwaltung, die Sie in diesem Beitrag kennen lernen, hilft Ihnen dabei, die Schulungsma&szlig;nahmen f&uuml;r Mitarbeiter zu verwalten und zu organisieren. Das beginnt bei der automatisierten Eingabe der Kurse mit Einzelterminen f&uuml;r jeden Kurs. Bild 1 zeigt die Dialoge der Kursverwaltung. Weitere Unterst&uuml;tzung erhalten Sie bei der Anmeldung von Teilnehmern f&uuml;r Kurse, wobei die Schulungsverwaltung Fehler durch eine intelligente Anmeldepr&uuml;fung abf&auml;ngt (siehe Bild 2). Zu guter Letzt unterst&uuml;tzt die Software Sie bei der Erstellung der Teilnahmenachweise und der Eingabe der Abschlussnote.<\/p>\n<p><IMG height=\"368\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Erfassen von Kursen und Kurseinheiten<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Die Software ist hier beispielhaft auf Mitarbeiter ausgerichtet. Sie k&ouml;nnen die Anwendung nat&uuml;rlich f&uuml;r jede beliebige andere Art von Schulungs- oder Kursangeboten einsetzen. So kann beispielsweise das Sportangebot einer Sportschule verwaltet werden, bei der mehrere aufeinander aufbauende Tauchkurse angeboten werden. Aber auch f&uuml;r Schulungsunternehmen ist die Anwendung sehr interessant. In diesem Fall sind die Mitarbeiter lediglich durch allgemeine Adressen auszutauschen. <\/p>\n<p>Im Folgenden werden die Tabellen der Datenbank mit deren Beziehungen erl&auml;utert. Die Ausf&uuml;hrungen sind f&uuml;r diese Musterl&ouml;sung ein wenig ausf&uuml;hrlicher, da das Datenmodell aufgrund der speziellen Anforderungen relativ komplex ist.<\/p>\n<p><IMG height=\"361\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Der Anmeldedialog<\/span><\/b><\/p>\n<p><IMG height=\"206\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Die Tabellenstruktur f&uuml;r die Kurseingabe<\/span><\/b><\/p>\n<p><b>Mitarbeiter<\/b><\/p>\n<p>Die Mitarbeiter, also die eigentlichen Teilnehmer der Kurse, werden in der Tabelle tblMitarbeiter gespeichert. Die Anwendung verzichtet hier aus Platzgr&uuml;nden auf eine ausgefeilte Adressverwaltung, da dies bereits in anderen Beitr&auml;gen ausgiebig behandelt wurde.<\/p>\n<p><b>Kursgruppen und Kurse<\/b><\/p>\n<p>Die Kursverwaltung gliedert alle Kurse in Obergruppen. Zu jedem Kurs k&ouml;nnen Sie au&szlig;erdem mehrere Starttermine mit den jeweiligen einzelnen Kurszeiten eintragen (Termine und Termindetails siehe Abschnitt 2.3). Zus&auml;tzlich ist bei jedem Kurs die Angabe von weiteren Kursen m&ouml;glich, deren erfolgreiche Abschl&uuml;sse Voraussetzung f&uuml;r die Teilnahme an dem aktuellen Kurs sind. Abb. 3 stellt die entsprechende Tabellenstruktur dar.<\/p>\n<h3>Kursgruppen<\/h3>\n<p>Die Obergruppen verwalten Sie in der Tabelle tblKursgruppen. Die Tabelle besteht lediglich aus dem Prim&auml;rschl&uuml;ssel und dem Feld Kursgruppe, &uuml;ber das Sie den Namen der Gruppe definieren.<\/p>\n<h3>Kurse<\/h3>\n<p>Zu jeder Kursgruppe k&ouml;nnen Sie dann beliebig viele Kurse anlegen, die Sie dann in der Tabelle tblKurse speichern.<\/p>\n<p>&uuml;ber das Feld Kursname definieren Sie die eindeutige Bezeichnung des Kurses. Das Kuerzel des Kurses wird sp&auml;ter f&uuml;r die Kursnummer verwendet und kann jeweils wie der Kursname nur einmal vergeben werden. Beide Felder (Kuerzel und Kursname) sind mit der Option Ja (Ohne Duplikate) indiziert, um Doppeleingaben zu vermeiden. Das Feld Kurslevel gibt die Schwierigkeitsstufe eines Kurses wieder.<\/p>\n<h3>Kursintervalle<\/h3>\n<p>Mit den Feldern AnzahlEinheiten, DauerProEinheitInStunden, TerminIntervall und TerminIntervallID geben Sie an, wie lange eine Kurseinheit dauert, wie viele Einheiten es gibt und in welchem Rhythmus die Einheiten aufeinander folgen. <\/p>\n<p>Das Feld TerminIntervallID referenziert dabei auf die Tabelle tblTerminintervalle. Die Tabelle beinhaltet die in Tab. 1 aufgef&uuml;hrten Datens&auml;tze, die vom Anwender nicht ver&auml;ndert werden d&uuml;rfen und fest in die Anwendung und Programmierung integriert sind.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>TerminintervallID<\/b><\/p>\n<\/td>\n<td>\n<p><b>Intervall<\/b><\/p>\n<\/td>\n<td>\n<p><b>Intervallformat<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>Tag(e)<\/p>\n<\/td>\n<td>\n<p>d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2<\/p>\n<\/td>\n<td>\n<p>Woche(n)<\/p>\n<\/td>\n<td>\n<p>ww<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3<\/p>\n<\/td>\n<td>\n<p>Monat(e)<\/p>\n<\/td>\n<td>\n<p>m<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>4<\/p>\n<\/td>\n<td>\n<p>Jahr(e)<\/p>\n<\/td>\n<td>\n<p>yyyy<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Daten der Tabelle tblTerminintervalle<\/b><\/p>\n<p>Das Feld Intervall dient der Anzeige und Auswahl des Intervalls im Formular, das Feld Intervallformat ist f&uuml;r die automatische Berechnung der Folgedaten n&ouml;tig. Nachfolgend sind drei Beispiele aufgef&uuml;hrt, welche die Verwendung der Felder verdeutlichen.<\/p>\n<p>Beispiel 1: Der Kurs Einf&uuml;hrung in Access findet jeweils an drei aufeinander folgenden Tagen statt. Pro Tag sind acht Stunden angesetzt:<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Feld<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>AnzahlEinheiten<\/p>\n<\/td>\n<td>\n<p>3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DauerProEinheitInStunden<\/p>\n<\/td>\n<td>\n<p>8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>TerminIntervall<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>TerminIntervallID<\/p>\n<\/td>\n<td>\n<p>1 (Tage)<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 2: Beispiel 1, Zusammenh&auml;ngender Kurs<\/b><\/p>\n<p>Beispiel 2: Der folgende Kurs geht &uuml;ber ein Jahr. Jede Woche findet eine Sitzung von zwei Stunden statt.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Feld<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>AnzahlEinheiten<\/p>\n<\/td>\n<td>\n<p>52<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DauerProEinheitInStunden<\/p>\n<\/td>\n<td>\n<p>2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>TerminIntervall<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>TerminIntervallID<\/p>\n<\/td>\n<td>\n<p>2 (Woche)<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 3: Beispiel 2, Kurs mit mehreren verteilten Terminen<\/b><\/p>\n<p>Beispiel 3: Die n&auml;chsten zehn Jahre findet alle zwei Jahre ein Erste-Hilfe-Kurs f&uuml;r alle statt. Der Kurs dauert jeweils vier Stunden.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Feld<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>AnzahlEinheiten<\/p>\n<\/td>\n<td>\n<p>5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DauerProEinheitInStunden<\/p>\n<\/td>\n<td>\n<p>4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>TerminIntervall<\/p>\n<\/td>\n<td>\n<p>2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>TerminIntervallID<\/p>\n<\/td>\n<td>\n<p>4 (Jahr)<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 4: Beispiel 3, Zweij&auml;hriger Kurs<\/b><\/p>\n<h3>Kursabschluss<\/h3>\n<p>Die Felder AbschlussID und Mindestnote legen fest, welcher Abschluss f&uuml;r den Kurs erforderlich ist. M&ouml;gliche Abschl&uuml;sse sind in der Tabelle tblAbschluesse gespeichert (s. Tab. 5).<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Bedingung<\/b><\/p>\n<\/td>\n<td>\n<p><b>IstMindestnoteErforderlich<\/b><\/p>\n<\/td>\n<td>\n<p><b>IstSichtbarBeiKurs<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Nicht bestanden<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Teilgenommen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Bestanden<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Abschlusspr&uuml;fung<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 5: Datens&auml;tze der Tabelle tblAbschluesse<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Das Feld IstSichtbarBeiKurs dient zur selektierten Anzeige der Abschl&uuml;sse im Kursformular. Sp&auml;ter werden nur die Abschl&uuml;sse angezeigt, die den Wert Ja haben. Den Eintrag Nicht bestanden als Mindestvoraussetzung zur Auswahl zu stellen, w&uuml;rde hier keinen Sinn machen. Deshalb wird er einfach ausgeblendet.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Die Selektion bestimmter Datens&auml;tze aus einer Tabelle k&ouml;nnte auch &uuml;ber den Prim&auml;rschl&uuml;ssel erfolgen. Im vorliegenden Fall w&auml;re das die ID 1 (Nicht bestanden), die in den Stammdaten des Kurses nicht angezeigt werden soll. Eine Abfrage, die alle Datens&auml;tze anzeigt, bei denen die ID &lt;&gt; 1 ist, w&auml;re vielleicht einfacher als ein eigenes Feld daf&uuml;r einzuf&uuml;hren. Allerdings ist diese Methode nicht sehr flexibel. Ggf. erg&auml;nzen Sie die Tabelle um weitere Datens&auml;tze (zum Beispiel Nicht Teilgenommen), die ebenfalls nicht angezeigt werden sollen. In diesem Fall m&uuml;ssten Sie alle betroffenen Abfragen anpassen. Gleiches gilt, wenn Sie die Datens&auml;tze zu Testzwecken l&ouml;schen und wieder neu einf&uuml;gen. Die ID w&auml;re dann vielleicht nicht mehr 1, sondern 5, und es w&auml;ren wieder &auml;nderungen an der Abfrage erforderlich. Mit dem Ja\/Nein-Feld gen&uuml;gt ein einfaches Abhaken des Feldes. <\/p>\n<p>Das Feld IstMindestnoteErforderlich gibt an, ob das Feld Mindestnote der Tabelle tblKurse im Formular sichtbar ist. Wird eine Mindestnote in den Kursdaten eingegeben, gilt der Kurs nur bei Erreichen der angesetzten Note als erfolgreich bestanden.<\/p>\n<h3>Teilnehmerzahl<\/h3>\n<p>Das Feld TeilnehmerzahlMinimal der Tabelle tblKurse definiert, wie viele Teilnehmer f&uuml;r einen Kurs angemeldet sein m&uuml;ssen, damit der Kurs stattfindet. &uuml;ber das Feld TeilnehmerzahlMaximal hingegen legen Sie die obere Grenze f&uuml;r die Teilnehmeranzahl fest, um &uuml;berf&uuml;llte Kurse zu vermeiden.<\/p>\n<h3>Kursvoraussetzungen<\/h3>\n<p>Zu jedem Kurs k&ouml;nnen neben den Basisdaten weitere Kurse angegeben werden, die Voraussetzung f&uuml;r die Teilnahme an dem Kurs sind. Beispielsweise ist der Kurs Einf&uuml;hrung in Access Voraussetzung f&uuml;r den Kurs Access f&uuml;r Fortgeschrittene.<\/p>\n<p>Die Zuordnung der Kurse erfolgt &uuml;ber die Tabelle tblKursvoraussetzungen. Die Tabelle dient als Zwischentabelle f&uuml;r eine n:m-Beziehung der Kurstabelle auf sich selbst. Das heisst, dass jedem Kurs mehrere andere Kurse zugeordnet werden k&ouml;nnen und ein Kurs mehreren Kursen zugeordnet sein kann. Einf&uuml;hrung in Access k&ouml;nnte so auch Voraussetzung f&uuml;r den Kurs Einf&uuml;hrung in den MS SQL Server sein.<\/p>\n<p>Die Verkn&uuml;pfung der Kurstabelle erfolgt &uuml;ber die Felder KursID und VoraussetzungsKursID (siehe Bild 3).<\/p>\n<p><IMG height=\"272\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic004.png\" width=\"278\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Datenstruktur f&uuml;r Termine<\/span><\/b><\/p>\n<p><b>Termine f&uuml;r Kurse<\/b><\/p>\n<p>Nachdem die Kurse definiert sind, ben&ouml;tigen Sie die einzelnen Starttermine f&uuml;r die Kurse sowie die Detaildaten mit Anfangs- und Endzeit f&uuml;r jede Kurseinheit. Nur mit diesen Detaildaten k&ouml;nnen Sie sp&auml;ter den Teilnehmern eine genaue Liste der Kurszeiten zusenden oder einen Stundenplan bzw. die Raumbelegung ausgeben. Bild 4 zeigt die daf&uuml;r n&ouml;tigen Tabellen.<\/p>\n<h3>Termine<\/h3>\n<p>Zu jedem Kurs k&ouml;nnen Sie in der Tabelle tblTermine beliebig viele Termine anlegen. Auf diese Weise kann zum Beispiel der Kurs Einf&uuml;hrung in Access alle drei Wochen stattfinden. Jeder Kurs erh&auml;lt eine eindeutige Kursnummer, &uuml;ber die Sie einen speziellen Kurs bei der Suche direkt identifizieren k&ouml;nnen. <\/p>\n<p>Das Startdatum legt fest, wann der Kurs beginnt. Dabei ist die Eingabe eines Datums mit Uhrzeit m&ouml;glich, wodurch Sie direkt die Anfangszeit festlegen k&ouml;nnen. F&uuml;r den dreiw&ouml;chigen Access-Kurs, der montags um 8:00 Uhr startet, w&auml;ren dann die folgenden Startdaten erforderlich:<\/p>\n<li>07.04.2003 08:00<\/li>\n<li>28.04.2003 08:00<\/li>\n<li>19.05.2003 08:00<\/li>\n<li>usw.<\/li>\n<p>Pro Kurs legen Sie noch den Kursleiter (KursleiterID) und den Raum (RaumID) fest. Bei den Kursleitern und R&auml;umen wurde zugunsten der &uuml;bersichtlichkeit wie bei den Mitarbeitern auf eine komplexe Ausf&uuml;hrung der Tabellenstruktur verzichtet. Der Kursleiter erh&auml;lt nur einen Namen mit Anrede, bei R&auml;umen begn&uuml;gt sich die Datenstruktur mit der Raumnummer.<\/p>\n<h3>Termindetails<\/h3>\n<p>Die einzelnen Kurseinheiten zu jedem Starttermin geben Sie in die Tabelle tblTermindetails mit Anfangs- und Endzeit ein.<\/p>\n<p><IMG height=\"208\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Tabellenstruktur f&uuml;r die Kursteilnehmer<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Die Eingabe der vollst&auml;ndigen Kursdaten kann schnell un&uuml;bersichtlich werden. Zu diesem Zweck werden die Termindetails sp&auml;ter automatisch vom Programm auf Basis der im Kurs definierten Kursintervalle angelegt. <\/p>\n<p>F&uuml;r den Kurs Einf&uuml;hrung in Access &#8211; einen Drei-Tage-Kurs &#8211; k&ouml;nnten die Termine wie folgt aussehen (s. Tab. 6):<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Startdatum<\/b><\/p>\n<\/td>\n<td>\n<p><b>Enddatum<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>07.04.2003 08:00<\/p>\n<\/td>\n<td>\n<p>07.04.2003 16:00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>08.04.2003 08:00<\/p>\n<\/td>\n<td>\n<p>08.04.2003 16:00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>09.04.2003 08:00<\/p>\n<\/td>\n<td>\n<p>09.04.2003 16:00<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 6: Beispieldaten f&uuml;r Termindetails<\/b><\/p>\n<p><b>Kursteilnehmer<\/b><\/p>\n<p>Kurse und Mitarbeiter sind nun definiert. Jetzt fehlt nur noch die Zuordnung. Dazu sind zwei Tabellen notwendig.<\/p>\n<p>Die erste Tabelle tblKursteilnehmer definiert, welcher Mitarbeiter f&uuml;r welchen Kurstermin angemeldet ist.<\/p>\n<p>Die Tabelle tblTeilnahmenachweise erg&auml;nzt dazu, zu welchen Kurseinheiten ein Teilnehmer erschienen ist, und h&auml;lt so den Teilnahmenachweis fest. Die Verkn&uuml;pfung der Tabellen ist in Bild 5 dargestellt.<\/p>\n<h3>Kursteilnehmer<\/h3>\n<p>Die Tabelle tblKursteilnehmer (siehe Bild 6) verkn&uuml;pft die Tabellen tblMitarbeiter und tblTermine und fungiert somit als Zwischentabelle f&uuml;r die n:m-Beziehung. Das Feld AngemeldetAm registriert das Anmeldedatum des Teilnehmers f&uuml;r den Kurs.<\/p>\n<p>Die Felder AbschlussID, Note und ZertifikatErhaltenAm werden nach Beendigung des Kurses ausgef&uuml;llt und erkl&auml;ren sich von selbst.<\/p>\n<h3>Teilnahmenachweise<\/h3>\n<p>Die Teilnahme an den einzelnen Kurseinheiten verwaltet die Tabelle tblTeilnahmenachweise (siehe Bild 7). Jeder Kurseinheit werden hier die Kursteilnehmer zugeordnet. Dazu kopiert die Anmelderoutine automatisch alle Teilnehmer in die Tabelle (s. Abschnitt 6.3). &uuml;ber das Feld WarAnwesend markieren Sie dann einfach, welcher Mitarbeiter teilgenommen hat.<\/p>\n<p><IMG height=\"145\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic006.png\" width=\"232\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Datenfelder der Tabelle tblKursteilnehmer<\/span><\/b><\/p>\n<p><IMG height=\"103\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic007.png\" width=\"215\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Datenfelder der Tabelle tblTeilnahmenachweise<\/span><\/b><\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Normalerweise w&uuml;rden die beiden Felder KursteilnehmerID und TermindetailID f&uuml;r die Zuordnung ausreichen. Alle Teilnehmer, die dann in der Tabelle zu einer Kurseinheit vorkommen, h&auml;tten auch teilgenommen. Mit dieser Technik w&auml;re jedoch die Auswahl der Teilnehmer f&uuml;r den Anwender nicht sehr komfortabel. Deshalb gibt es zus&auml;tzlich das Feld WarAnwesend. <\/p>\n<p>Nachdem das Datenmodell ausf&uuml;hrlich erl&auml;utert wurde, kommen wir zum Aufbau der Anwendung. Wir beginnen mit den Stammdaten f&uuml;r Mitarbeiter (siehe Bild 8).<\/p>\n<p><IMG height=\"389\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic008.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Das Mitarbeiterformular<\/span><\/b><\/p>\n<p>Das Formular enth&auml;lt ein Register-Steuerelement. Auf der ersten Seite sind alle Datenfelder der Tabelle tblMitarbeiter aufgef&uuml;hrt.<\/p>\n<p>Die zweite Registerseite dient der Anzeige der Kurse, f&uuml;r die der Mitarbeiter angemeldet ist. In der Liste werden der Kursname, das Anmeldedatum, der erzielte Abschluss, die Note und das Ausstellungsdatum f&uuml;r das Zertifikat angezeigt. Das Unterformular ist schreibgesch&uuml;tzt, da &auml;nderungen an den Daten nur &uuml;ber die speziell f&uuml;r diese Funktion entworfenen Formulare erfolgen sollen (siehe Abschnitt 6-8).<\/p>\n<p><b>Mitarbeiter l&ouml;schen<\/b><\/p>\n<p>Das L&ouml;schen eines Mitarbeiters erfolgt &uuml;ber die Schaltfl&auml;che btnL&ouml;schen. Legen Sie die folgende Ereignisprozedur f&uuml;r die Schaltfl&auml;che an:<\/p>\n<pre>Private Sub btnL&ouml;schen_Click()\r\n    DoCmd.RunCommand acCmdSaveRecord\r\n    DoCmd.RunCommand acCmdDeleteRecord\r\n    DoCmd.RunCommand _        acCmdRecordsGoToFirst\r\nEnd Sub<\/pre>\n<p>Die Prozedur verwendet die RunCommand-Methode zum L&ouml;schen des Datensatzes und navigiert anschlie&szlig;end zum ersten Datensatz.<\/p>\n<p><b>Suchen nach Mitarbeitern<\/b><\/p>\n<p>Eine einfache Filterfunktion f&uuml;r Mitarbeiter k&ouml;nnen Sie &uuml;ber ein Textfeld realisieren. Nach Eingabe eines Suchbegriffs in das Feld soll das Formular nur noch die Datens&auml;tze anzeigen, bei denen der Suchbegriff im Vornamen oder Nachnamen enthalten ist.<\/p>\n<p>Legen Sie dazu das Textfeld txtFilter im Formular an und tragen Sie die folgende Prozedur beim Ereignis NachAktualisierung ein:<\/p>\n<pre>Private Sub txtFilter_AfterUpdate()\r\n  If Nz(Me!txtFilter, \"\") &lt;&gt; \"\" Then\r\n    Me.Filter = \"vorname like \"\"*\" _      & Me!txtFilter _      & \"*\"\" or Nachname like \"\"*\" _      & Me!txtFilter & \"*\"\"\"\r\n    Me.FilterOn = True\r\n  End If\r\nEnd Sub<\/pre>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst, ob ein Begriff eingegeben wurde, und setzt dann die Filtereigenschaft wie oben erw&auml;hnt. &uuml;ber die Methode FilterOn aktiviert sie den Filter im Formular.<\/p>\n<p>&uuml;ber die Schaltfl&auml;che btnFilteraufheben l&ouml;schen Sie den Inhalt des Filterfeldes und deaktivieren den Filter:<\/p>\n<pre>Private Sub btnFilteraufheben_Click()\r\n    Me!txtFilter = \"\"\r\n    Me.Filter = \"\"\r\n    Me.FilterOn = False\r\nEnd Sub<\/pre>\n<p>Die Eingabeformulare f&uuml;r die Kursleiter und R&auml;ume sind ebenfalls sehr einfach gehalten (siehe Bild 9).<\/p>\n<p><!--30percent--><\/p>\n<p>Beide Formulare enthalten jeweils die Datenfelder der entsprechenden Tabelle ohne den Prim&auml;rschl&uuml;ssel und zeigen die Daten in Form eines Datenblattes an. Dazu stellen Sie die Formulareigenschaft Standardansicht jeweils auf den Wert Datenblatt. Die Bildlaufleisten blenden Sie aus.<\/p>\n<p><IMG height=\"292\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic009.png\" width=\"381\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Kursleiter und R&auml;ume eingeben<\/span><\/b><\/p>\n<p>Das soll f&uuml;r die hier ben&ouml;tigte Funktionsweise gen&uuml;gen, da die Daten nur in Nachschlagefeldern Verwendung finden.<\/p>\n<p>Eine Kernfunktion der Anwendung ist die Verwaltung und Erfassung der Kurse mit den einzelnen Terminen und Kurseinheiten.<\/p>\n<p><IMG height=\"533\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic010.png\" width=\"486\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10:  Verwaltung der Kurse<\/span><\/b><\/p>\n<p>Das Formular wirkt auf den ersten Blick sehr komplex (siehe Bild 12). Deshalb zerlegen wir die Funktionen in zwei Hauptbereiche. Der obere Bereich dient der Suche und Erfassung von Kursgruppen, w&auml;hrend der untere Bereich die entsprechenden Kurse zu der aktuellen Kursgruppe anzeigt.<\/p>\n<p><b>Kursgruppen verwalten<\/b><\/p>\n<p>Das Hauptformular frmKursgruppen basiert auf der Tabelle tblKursgruppen und stellt lediglich das Feld Kursgruppe zur Eingabe bereit. Das Feld KursgruppeID ist deaktiviert und gesperrt. Die Datensatzmarkierer und Bildlaufleisten wurden entfernt und die Rahmenart des Formulars auf Dialog gesetzt.<\/p>\n<h3>L&ouml;schen einer Kursgruppe<\/h3>\n<p>Das L&ouml;schen einer Kursgruppe erfolgt &uuml;ber die Schaltfl&auml;che btnKursgruppeL&ouml;schen. Die Funktionalit&auml;t ist mit derjenigen des Mitarbeiterformulars identisch.<\/p>\n<h3>Kursgruppen anlegen<\/h3>\n<p>Zur Anlage einer neuen Kursgruppe verwenden Sie einfach die Navigationsschaltfl&auml;chen. Dabei m&uuml;ssen Sie aber darauf achten, bei einem neuen Datensatz im Hauptformular alles auszublenden, was die Erfassung der Kurse betrifft.<\/p>\n<p>Nur so k&ouml;nnen Sie kontrollieren, dass der Anwender nicht schon Kursdaten eingibt, obwohl er noch keine Kursgruppe angelegt hat.<\/p>\n<p>Um zu pr&uuml;fen, ob es sich bei dem aktuellen um einen neuen Datensatz handelt, verwenden Sie die NewRecord-Eigenschaft des Formular-Objekts.<\/p>\n<p>Diese fragen Sie im Formularereignis BeimAnzeigen ab. Wenn die Eigenschaft den Wert Wahr hat, blenden Sie das Unterformular und die zugeh&ouml;rigen Schaltfl&auml;chen aus:<\/p>\n<pre>Private Sub Form_Current()\r\n    If Me.NewRecord Then\r\n        subKurse.Visible = False\r\n        btnNeuerKurs.Visible = False\r\n        btnKursL&ouml;schen.Visible = False\r\n    Else\r\n        subKurse.Visible = True\r\n        btnNeuerKurs.Visible = True\r\n        btnKursL&ouml;schen.Visible = True\r\n    End If\r\nEnd Sub\r\nPrivate Sub Kursgruppe_AfterUpdate()\r\n    If Me.NewRecord Then\r\n        DoCmd.RunCommand acCmdSaveRecord\r\n        Form_Current\r\n        Me!cmbKursgruppen.Requery\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>Private Sub cmbKursgruppen_AfterUpdate()\r\n    Dim rstKurse As Recordset\r\n    Set rstKurse = Me.RecordsetClone\r\n    rstKurse.FindFirst \"KursgruppeID=\" & cmbKursgruppen\r\n    If Not rstKurse.NoMatch Then\r\n        Me.Bookmark = rstKurse.Bookmark\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Sub ShowOrHideMindestnote()\r\n    Me!MindestNote.Visible = _        CBool(Nz(Me!AbschlussID.Column(2), False))\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p>Nach der Anlage einer neuen Kursgruppe m&uuml;ssen Sie nur noch alles wieder einblenden. In dem vorliegenden Fall ist das einfach, da nur das Feld Kursgruppe ausgef&uuml;llt sein muss und es damit gen&uuml;gt, wenn Sie nach der Aktualisierung der Kursgruppe den Datensatz speichern und anschlie&szlig;end erneut die BeimAnzeigen-Prozedur des Formulars aufrufen, um alle versteckten Felder wieder einzublenden (s. Quellcode 1). Zum Schluss aktualisieren Sie noch das Kombinationsfeld zur Auswahl einer Kursgruppe. Schlie&szlig;lich ist dort ein Eintrag hinzugekommen.<\/p>\n<h3>Kursgruppen suchen<\/h3>\n<p>Damit Sie eine Kursgruppe schnell finden und nicht durch alle Datens&auml;tze navigieren m&uuml;ssen, ist im Kopfbereich des Formulars das Kombinationsfeld cmbKursgruppen angeordnet, das alle Kursgruppen zur Auswahl stellt.<\/p>\n<p>F&uuml;r die Suche wird eine andere Technik als bei der Mitarbeitersuche angewendet. Nach Auswahl eines Eintrags aus dem Kombinationsfeld sucht eine Prozedur im Formular den passenden Datensatz heraus (s. Quellcode 2). <\/p>\n<p>Dabei wird zun&auml;chst die Datenbasis des Formulars mittels der RecordsetClone-Methode in ein Recordset-Objekt kopiert. Anschlie&szlig;end sucht die Prozedur die entsprechende KursgruppeID im Recordset und zeigt diese im Formular an.<\/p>\n<p><b>Kurse bearbeiten<\/b><\/p>\n<p>Die einzelnen Kurse zu einer Kursgruppe verwalten Sie in dem Unterformular frmKurse. Die Erfassung der Daten gliedert sich in die drei Bereiche Kursdaten, Voraussetzungen und Termine, die jeweils auf einer eigenen Registerseite angeordnet sind.<\/p>\n<h3>Kursdaten<\/h3>\n<p>Die erste Registerseite zeigt die Basisdaten des Kurses an. Eine Besonderheit liegt im Kombinationsfeld AbschlussID. Abh&auml;ngig vom gew&auml;hlten Eintrag wird das Feld Mindestnote ein- bzw. ausgeblendet. Diese Aufgabe &uuml;bernimmt die Funktion ShowOrHideMindestnote (s. Quellcode 3).<\/p>\n<p>Die Funktion besteht nur aus einer Zeile und ver&auml;ndert die Sichtbar-Eigenschaft des Steuerelements Mindestnote.<\/p>\n<p>Ob das Feld eingeblendet werden soll, ermittelt die Prozedur direkt aus dem Kombinationsfeld. Das ist m&ouml;glich, weil der Wert des Feldes IstMindestnoteErforderlich als Spalte bei der Datensatzherkunft hinterlegt ist.<\/p>\n<p>&uuml;ber die Column-Eigenschaft eines Kombinationsfeldes k&ouml;nnen Sie generell auf jede Spalte zugreifen, auch wenn diese ausgeblendet ist.<\/p>\n<p><IMG height=\"344\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic011.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11:  Dialog zur Kursauswahl<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Obwohl die Prozedur nur aus einer Programmzeile besteht, macht diese Ausgliederung der Prozedur Sinn, da sie an mehreren Stellen verwendet wird. Wenn sich an der Ermittlungsroutine etwas &auml;ndert oder diese noch erg&auml;nzt wird, m&uuml;ssen Sie nur eine Stelle anpassen. <\/p>\n<h3>Kursvoraussetzungen<\/h3>\n<p>Die Funktion der Kursvoraussetzungen wurde bereits in Abschnitt 2.2 besprochen. Auf der zweiten Registerseite des Kursformulars ordnen Sie diese nun im Unterformular frmKursvoraussetzungen dem aktuellen Kurs zu. Dort ist lediglich ein Kombinationsfeld zur Auswahl der zuzuordnenden Kurse eingef&uuml;gt sowie eine Schaltfl&auml;che zum L&ouml;schen eines Eintrags.<\/p>\n<p>F&uuml;r die Zuordnung von anderen Kursen ist das theoretisch ausreichend. Ab einer gewissen Anzahl von Kursen ist die gerade ausgef&uuml;hrte L&ouml;sung f&uuml;r den Anwender aber sehr un&uuml;bersichtlich. Um dem Anwender die Eingabe so angenehm wie m&ouml;glich zu gestalten, k&ouml;nnen Kurse &uuml;ber einen eigenen Dialog gesucht und hinzugef&uuml;gt werden (siehe Bild 13).<\/p>\n<h3>Dialog zur Kursauswahl<\/h3>\n<p>Der Dialog wird &uuml;ber eine Schaltfl&auml;che namens btnKurseHinzuf&uuml;gen aufgerufen. Dabei wird die &uuml;bliche Dialogtechnik angewendet, d. h. das Kursauswahl-Formular wird mit dem Parameter acDialog ge&ouml;ffnet.<\/p>\n<pre>DoCmd.OpenForm _    \"frmKursauswahl\", _    acNormal, , , , _    acDialog<\/pre>\n<p>Dadurch wird der Code der Schaltfl&auml;che, die den Dialog aufgerufen hat, erst dann weiter ausgef&uuml;hrt, wenn das aufgerufene Formular geschlossen oder ausgeblendet wird.<\/p>\n<p>Falls es geschlossen ist, wurde der Dialog abgebrochen und es geschieht nichts weiter. Falls das Formular noch ge&ouml;ffnet ist, wurde mit OK best&auml;tigt und die Dialogeingaben k&ouml;nnen verarbeitet werden.<\/p>\n<p>Das Formular zur Kursauswahl gestattet verschiedene Filterm&ouml;glichkeiten. Zum einen k&ouml;nnen Sie zun&auml;chst in einer Liste die Kursgruppe ausw&auml;hlen. Nach Anklicken einer Gruppe f&uuml;hrt das rechte Listenfeld nur noch die Kurse der Gruppe auf.<\/p>\n<h3>Kurse filtern und suchen<\/h3>\n<p>Alternativ zu einer vordefinierten Gruppe k&ouml;nnen Sie auch den Eintrag (Alle Kursgruppen) w&auml;hlen. In diesem Fall zeigt das rechte Listenfeld alle Kurse gleichzeitig an. Der Eintrag kommt jedoch nicht in der Tabelle tblKursgruppen vor.<\/p>\n<p>Den Eintrag erzeugen Sie, indem Sie die Datensatzherkunft des Listenfeldes ein wenig anpassen.<\/p>\n<p>Erstellen Sie zun&auml;chst die Abfrage, die alle regul&auml;ren Kursgruppen auff&uuml;hrt:<\/p>\n<pre>SELECT KursgruppeID, Kursgruppe FROM tblKursgruppen ORDER BY Kursgruppe<\/pre>\n<p>Anschlie&szlig;end verkn&uuml;pfen Sie diese &uuml;ber das Schl&uuml;sselwort Union mit der folgenden Abfrage, die den erg&auml;nzenden Eintrag generiert: <\/p>\n<pre>Sub KurseAktualisieren()\r\n    Dim SQL As String\r\n    SQL = \"SELECT KursID, Kurslevel, Kursname, Kuerzel FROM tblKurse\"\r\n    If Nz(Me!lstKursgruppen, 0) &gt; 0 Then\r\n        SQL = SQL & \" WHERE KursgruppeID=\" & Me!lstKursgruppen\r\n    End If\r\n    SQL = SQL & \" ORDER BY Kurslevel,Kursname\"\r\n    Me!lstKurse.RowSource = SQL\r\n    Me!lstKurse.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>SELECT 0 AS KursgruppeID, \"(Alle Kursgruppen)\" AS Kursgruppe FROM tblKursgruppen <\/pre>\n<p><IMG height=\"158\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic012.png\" width=\"349\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 12:  Suche nach Kursen<\/span><\/b><\/p>\n<p><IMG height=\"407\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic013.png\" width=\"309\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 13:  Mehrfachselektion von Kursen<\/span><\/b><\/p>\n<p>Durch die Union-Anweisung werden beide Abfrageergebnisse nacheinander aufgef&uuml;hrt und erscheinen gemeinsam im Listenfeld. Um nun die Kursliste beim Klicken auf eine Kursgruppe zu aktualisieren, verwenden Sie die Prozedur KurseAktualisieren. Die Prozedur setzt die Datensatzherkunft f&uuml;r das Listenfeld lstKurse zusammen (s. Quellcode 4).<\/p>\n<p>Wenn eine regul&auml;re Kursgruppe (KursgruppeID&gt;0) angeklickt wird, dann erg&auml;nzt die Prozedur die WHERE-Klausel mit der entsprechenden Filterbedingung. Klickt der Anwender den ersten Eintrag an, l&auml;sst die Prozedur die Filterbedingung einfach weg und zeigt dadurch alle Kurse an.<\/p>\n<p>Zus&auml;tzlich zur Filterung &uuml;ber die Kursgruppe kann nach einem beliebigen Begriff in der Kursliste gesucht werden (siehe Bild 12). Auch hier wird nach der Aktualisierung des Textfeldes die Datenherkunft des Listenfeldes angepasst und entsprechend gefiltert.<\/p>\n<h3>Kurse ausw&auml;hlen<\/h3>\n<p>Das Kurs-Listenfeld ist so eingestellt, dass mehrere Kurse auf einmal ausgew&auml;hlt und &uuml;bernommen werden k&ouml;nnen. Dazu stellen Sie die Eigenschaft Mehrfachauswahl auf Erweitert. So lassen sich wie unter Windows &uuml;blich mit der Shift- oder Strg-Taste mehrere Eintr&auml;ge markieren (siehe Bild 13).<\/p>\n<h3>Kurse speichern<\/h3>\n<p>Wenn Sie nach der Auswahl auf die Schaltfl&auml;che Kurse &uuml;bernehmen klicken, wird das Dialogfenster nur ausgeblendet und nicht geschlossen. Auf diese Weise kann die Prozedur, die den Dialog aufgerufen hat, fortgef&uuml;hrt werden und auf die Daten des Dialogs zugreifen. <\/p>\n<pre>If IsLoaded(\"frmKursauswahl\") = True Then\r\n    Set lstKurse = Forms!frmKursauswahl!lstKurse\r\n    Kursnummer = Me!KursID\r\n    For Each Listitem In lstKurse.ItemsSelected\r\n        If Nz(DLookup(\"KursvoraussetzungID\", \"tblKursvoraussetzungen\", _\r\n            \"KursID=\" & Kursnummer & _\r\n            \" AND VoraussetzungsKursID=\" & lstKurse.ItemData(Listitem)), \"\") = \"\" Then\r\n                SQL = \"INSERT INTO tblKursvoraussetzungen\" & _\r\n                    \" (KursID, VoraussetzungsKursID) Values\" & _\r\n                    \" (\" & Kursnummer & \", \" & lstKurse.ItemData(Listitem) & \")\"\r\n            db.Execute SQL\r\n        End If\r\n    Next Listitem\r\n    DoCmd.Close acForm, \"frmKursauswahl\"\r\n    Me!subKursvoraussetzungen.Form.Requery\r\nEnd If <\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<p>Die Prozedur (s. Quellcode 5) erkennt zun&auml;chst, dass das Formular frmKursauswahl noch ge&ouml;ffnet ist. <\/p>\n<p><IMG height=\"265\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic014.png\" width=\"439\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 14:  Alle &uuml;ber den Dialog hinzugef&uuml;gten Kurse<\/span><\/b><\/p>\n<p><IMG height=\"318\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic015.png\" width=\"474\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 15:  Die Terminliste eines Kurses<\/span><\/b><\/p>\n<p>In einer For Each-Schleife durchl&auml;uft es anschlie&szlig;end alle im Dialog markierten Kurse. Die markierten Eintr&auml;ge eines Listenfeldes erhalten Sie &uuml;ber die Auflistung ItemsSelected.<\/p>\n<p>Eine einfache INSERT INTO-Abfrage f&uuml;gt dann die einzelnen Kurse nacheinander in die Tabelle tblKursvoraussetzungen ein. Das Ergebnis sehen Sie in Bild 14.<\/p>\n<p><b>Termine erfassen<\/b><\/p>\n<p>Auf der dritten Registerseite eines Kurses geben Sie die einzelnen Termine ein. Die Basistermindaten erfassen Sie dabei direkt im Unterformular (siehe Bild 17).<\/p>\n<p>Nach Eingabe eines Datums erzeugt die Anwendung automatisch die Kursnummer. Sie setzt sich aus dem K&uuml;rzel und dem Datum zusammen:<\/p>\n<pre>If IsDate(Me!Startdatum) And _  Nz(Me!Startdatum, \"\") &lt;&gt; \"\" Then\r\n  Me!Kursnummer = Nz(Me.Parent!Kuerzel, _    \"DUMMY\") & Format(Me!Startdatum, _    \"yymmdd\")\r\nEnd If<\/pre>\n<p>Sie k&ouml;nnen aber auch eine beliebige andere Regel hinterlegen oder die Kursnummer manuell eingeben.<\/p>\n<h3>Kurseinheiten anlegen<\/h3>\n<p><IMG height=\"284\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic016.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 16:  Abfrage zur Ermittlung der Kursdaten<\/span><\/b><\/p>\n<p>Sobald Sie einen neuen Termin eingegeben haben, werden Sie von der Anwendung gefragt, ob die Kurseinheiten angelegt werden sollen.<\/p>\n<p>Die Zeiten f&uuml;r die Kurseinheiten berechnet die Anwendung automatisch aus den Kursdaten, sofern diese alle eingegeben sind.<\/p>\n<p>Der Aufruf der Funktion ist bei dem Formularereignis Nach Eingabe hinterlegt, wodurch die Meldung nur beim ersten Speichern des Datensatzes angezeigt wird.<\/p>\n<p>Die Prozedur fragt zuerst &uuml;ber eine Msgbox, ob die Daten eingef&uuml;gt werden sollen. Wenn der Anwender mit Ja best&auml;tigt, wird die Prozedur TermindetailsAnlegen mit der aktuellen TerminID aufgerufen.<\/p>\n<p>Im Folgenden werden die einzelnen Elemente der Prozedur beschrieben. Den gesamten Quellcode finden Sie in der Musterl&ouml;sung im Modul modTermine.<\/p>\n<p>Im ersten Schritt wird ein Recordset (rstTermine) auf Basis der Abfrage qryTerminBasisdaten ge&ouml;ffnet. Die Abfrage enth&auml;lt alle f&uuml;r die Berechnung der Kurseinheiten erforderlichen Datenfelder (siehe Bild 16).<\/p>\n<p>Findet die Prozedur einen passenden Datensatz, speichert sie die Daten zun&auml;chst in Variablen. Anschlie&szlig;end pr&uuml;ft sie, ob &uuml;berhaupt alle zur Berechnung notwendigen Daten vorhanden sind. Fehlt ein Wert, wird die Berechnung abgebrochen. Falls beim Startdatum des Termins nur ein Datum, aber keine Uhrzeit festgelegt wurde, korrigiert die Prozedur dieses Vers&auml;umnis und setzt die Startuhrzeit automatisch mit der folgenden Anweisung auf 8:00 Uhr:<\/p>\n<pre>If Hour(Startdatum) = 0 Then\r\n    Startdatum = DateAdd(\"h\", 8, _        Startdatum)\r\nEnd If<\/pre>\n<p>In einem n&auml;chsten Schritt pr&uuml;ft die Prozedur, ob bereits Kurseinheiten f&uuml;r den Termin vorhanden sind. Ist das der Fall, kann der Anwender entscheiden, ob die Termine gel&ouml;scht werden sollen (s. Quellcode 6). Wenn alle Hindernisse und Abfragen &uuml;berwunden sind, erfolgt die eigentliche Berechnung der Kurseinheiten. In einer Schleife legt die Prozedur so viele Kurseinheiten an, wie im Feld AnzahlEinheiten f&uuml;r den Kurs definiert wurden.<\/p>\n<p><IMG height=\"382\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic017.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 17:  Hier k&ouml;nnen Sie Termine und Kurseinheiten bearbeiten<\/span><\/b><\/p>\n<p><IMG height=\"462\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic018.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 18:  Aufruf der Anwesenheitsliste<\/span><\/b><\/p>\n<pre>If DCount(\"TerminID\", \"tblTermindetails\", \"TerminID=\" & TerminID) &gt; 0 Then\r\n    If MsgBox(\"M&ouml;chten Sie die vorhandenen Termine l&ouml;schen (empfohlen)\", _        vbYesNo) = vbYes Then\r\n        DeleteSQL = \"DELETE * FRom tblTermindetails WHERE TerminID=\" & TerminID\r\n        db.Execute DeleteSQL\r\n    End If\r\nEnd If<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p>Dazu berechnet sie zuerst das Enddatum f&uuml;r die aktuelle Kurseinheit auf Basis des Startdatums und der DauerProEinheit und speichert anschlie&szlig;end die Kurseinheit:<\/p>\n<pre>MyEnddatum = _    DateAdd(\"h\", _    DauerProEinheit, _    MyStartdatum)<\/pre>\n<p>Zum Schluss berechnet die Prozedur das Startdatum f&uuml;r die n&auml;chste Kurseinheit auf Basis des Intervalls, das bei dem Kurs hinterlegt wurde:<\/p>\n<pre>MyStartdatum = _    DateAdd( _    IntervallFormat, _    Intervall, _    MyStartdatum)<\/pre>\n<h3>Kurseinheiten bearbeiten<\/h3>\n<p>Die einzelnen Kurseinheiten k&ouml;nnen Sie sich nach der Anlage nat&uuml;rlich auch ansehen.<\/p>\n<p>Klicken Sie dazu doppelt auf einen Termin, wodurch sich das in Bild 17 gezeigte Formular &ouml;ffnet.<\/p>\n<p>Die Schaltfl&auml;che Einheiten anlegen ruft die zuvor beschriebene Prozedur TermindetailsAnlegen auf. <\/p>\n<p>Die Anwesenheitsliste &ouml;ffnen Sie &uuml;ber die gleichnamige Schaltfl&auml;che (siehe Bild 18).<\/p>\n<p>Die Liste f&uuml;hrt alle Kurs-Teilnehmer auf. Das Feld WarAnwesend markiert dabei, ob der Mitarbeiter am Kurs teilgenommen hat.<\/p>\n<p><IMG height=\"361\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic019.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 19:  Der Dialog zur Teilnehmeranmeldung<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Das Formular dient hier lediglich der Information und ist absichtlich schreibgesch&uuml;tzt. Die Erfassung der Anwesenheiten erfolgt &uuml;ber einen gesonderten Dialog, der in Abschnitt 7 beschrieben wird. <\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Wenn Sie sich die Anwesenheitsliste und deren Programmcode etwas genauer anschauen, werden Sie feststellen, dass das Unterformular nicht nur im vorliegenden Dialog verwendet wird, sondern auch im Formular frmTeilnahmenachweisEingeben &#8211; allerdings mit leicht abgewandelter Funktionsweise. Wie Sie ein Unterformular mit unterschiedlichen Funktionen in zwei Hauptformularen verwenden k&ouml;nnen, lesen Sie in den Tipps &#038; Tricks dieser Ausgabe. <\/p>\n<p>Die angemeldeten Teilnehmer lassen sich im Terminformular ebenfalls einsehen &#8211; nat&uuml;rlich nur schreibgesch&uuml;tzt.<\/p>\n<p>Die Liste finden Sie auf der Registerseite Angemeldete Teilnehmer.<\/p>\n<p>Bisher haben Sie die Eingabemasken f&uuml;r die Stammdaten erstellt. In den folgenden drei Abschnitten geht es nun um die eigentliche Anmeldung von Teilnehmern, die Erfassung der Anwesenheit und die Eingabe der Noten. F&uuml;r jeden der drei Bereiche gibt es ein eigenes Formular.<\/p>\n<p><b>Aufbau des Anmeldeformulars<\/b><\/p>\n<p>Das Anmeldeformular ist so gestaltet, dass der Anwender alle Informationen auf einen Blick einsehen kann (siehe Bild 19). Auf der linken Seite sind alle Mitarbeiter und auf der rechten Seite alle Kurstermine aufgelistet.<\/p>\n<p>Da es zu einem Kurs mehrere Termine geben kann, tauchen in der Liste einige Kurse doppelt auf, jedoch mit unterschiedlichen Kursnummern. Sie k&ouml;nnen die Listen jeweils &uuml;ber ein Stichwort filtern und so auch einen konkreten Kurs durch Eingabe der Kursnummer finden, da in der Kursnummer das Datum enthalten ist.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Suche ist im Beispiel zwar sehr einfach gehalten, aber effektiv. Mit wenigen Eingaben filtern Sie die Listen und erhalten die gesuchten Eintr&auml;ge. Selbstverst&auml;ndlich k&ouml;nnen Sie die Suche nach Belieben ausbauen. Zum einen k&ouml;nnen Sie einige Filterfelder direkt im Formular erg&auml;nzen. Ein Beispiel w&auml;re die Eingabe eines Datumsbereichs zur Selektion von Kursen in einem speziellen Zeitraum. Zum anderen w&auml;re die Entwicklung eines eigenen Suchdialogs f&uuml;r die Kurse m&ouml;glich, den Sie &uuml;ber eine Schaltfl&auml;che aufrufen. Versuchen Sie einmal zur &uuml;bung, den bereits vorhandenen Dialog zur Kursauswahl frmKursauswahl in das Anmeldeformular zu integrieren und die im Dialog markierten Kurse in das Anmeldeformular zu &uuml;bernehmen. Die L&ouml;sung dieser Aufgabe erhalten Sie in der n&auml;chsten Ausgabe. <\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Konstante<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<td>\n<p><b>Bedeutung<\/b><\/p>\n<\/td>\n<td>\n<p><b>Anmelde-Schaltfl&auml;che aktiviert<\/b><\/p>\n<\/td>\n<td>\n<p><b>Stammdaten-Schaltfl&auml;che sichtbar<\/b><\/p>\n<\/td>\n<td>\n<p><b>Textfarbe<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>kvStammdatenEditieren<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>Die Stammdaten sind nicht vollst&auml;ndig. Die Anmeldung kann erst fortgesetzt werden, nachdem die Stammdaten korrigiert wurden.<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<td>\n<p>Rot<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>kvAnmeldungNichtMoeglichRot<\/p>\n<\/td>\n<td>\n<p>2<\/p>\n<\/td>\n<td>\n<p>Die Kursvoraussetzungen sind nicht erf&uuml;llt oder es sind keine Pl&auml;tze mehr verf&uuml;gbar<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Rot<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>kvAnmeldungNichtMoeglichGruen<\/p>\n<\/td>\n<td>\n<p>3<\/p>\n<\/td>\n<td>\n<p>Der Mitarbeiter ist bereits f&uuml;r den Kurs angemeldet oder hat schon bestanden<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Gr&uuml;n<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>kvAnmeldungMoeglich<\/p>\n<\/td>\n<td>\n<p>4<\/p>\n<\/td>\n<td>\n<p>Der Mitarbeiter ist noch nicht angemeldet und erf&uuml;llt alle Voraussetzungen<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<td>\n<p>Gr&uuml;n<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 7: Status-Konstanten und deren Bedeutung<\/b><\/p>\n<p>In jeder Liste kann genau ein Eintrag markiert werden. Es ist also nicht m&ouml;glich, beispielsweise mehrere Mitarbeiter zu markieren und gleichzeitig f&uuml;r einen Kurs anzumelden. Technisch w&auml;re das kein Problem, ist aber zur Validierung der Anmeldung eines Teilnehmers unvorteilhaft.<\/p>\n<p>Unterhalb der Liste ist ein Hinweisfeld angeordnet, welches zu jeder gew&auml;hlten Kombination aus Mitarbeiter und Kurs eine Meldung anzeigt. Ist der Hinweistext gr&uuml;n, sind alle Voraussetzungen erf&uuml;llt und Sie k&ouml;nnen den Mitarbeiter f&uuml;r den Kurs anmelden. Wenn der Text rot erscheint, gibt es mindestens einen Parameter, der nicht erf&uuml;llt ist, und Sie k&ouml;nnen die Anmeldung nicht durchf&uuml;hren.<\/p>\n<p><b>Anmeldung validieren<\/b><\/p>\n<p>Welche Parameter gepr&uuml;ft werden und Voraussetzung f&uuml;r die m&ouml;gliche Anmeldung zu einem Kurs sind, gibt die Funktion KursValidieren vor. Sie finden diese im Modul modAnmeldung.<\/p>\n<p>Der Funktion werden die MitarbeiterID und die TerminID &uuml;bergeben. Als R&uuml;ckgabewerte erhalten Sie den Hinweistext f&uuml;r das Anmeldeformular und einen Status, auf dessen Basis Sie die Textfarbe &auml;ndern und Schaltfl&auml;chen zur Anmeldung und Stammdateneingabe aktivieren bzw. deaktivieren.<\/p>\n<p>Im Modul modAnmeldung sind dazu vier Status-Konstanten definiert. Tabelle 7 beschreibt die Konstanten, deren Bedeutung, die Auswirkungen auf die Schalfl&auml;chen und den Meldungstext.<\/p>\n<p>Die Funktion pr&uuml;ft der Reihe nach die beschriebenen Parameter ab und setzt entsprechend der Ergebnisse den Meldungstext zusammen.<\/p>\n<h3>Check 1: Stammdaten o.k. <\/h3>\n<p>Im ersten Schritt pr&uuml;ft die Funktion, ob alle Kurseinheiten in den Stammdaten vorhanden sind. Zum Zeitpunkt der Anmeldung m&uuml;ssen alle Kurseinheiten eingegeben sein, da die Zuordnung nur bei der Anmeldung und nicht nachtr&auml;glich erfolgen kann. Die Funktion vergleicht dazu die Anzahl der Datens&auml;tze in der Tabelle tblTermindetails f&uuml;r den Termin mit der AnzahlEinheiten des zugeh&ouml;rigen Kurses. Stimmen die Zahlen nicht &uuml;berein, setzt sie den Status auf den Wert kvStammdatenEditieren. Eine Anmeldung ist in diesem Fall nicht m&ouml;glich.<\/p>\n<h3>Check 2: Kurs schon bestanden<\/h3>\n<p>Falls die Stammdatenpr&uuml;fung erfolgreich verlaufen ist, ermittelt die Funktion im n&auml;chsten Schritt, ob der Mitarbeiter bereits an dem Kurs teilgenommen hat, und wenn ja, mit welchem Abschluss. Wenn kein Abschluss vorhanden ist oder der Kurs noch nicht absolviert wurde, setzt die Funktion die AbschlussID auf den Wert 0.<\/p>\n<pre>Function SindVoraussetzungenErfuellt(MitarbeiterID, KursID, ByRef MyMeldung) _    As Boolean\r\n    Set db = CurrentDb()\r\n    Set rstKurse = db.OpenRecordset _        (\"SELECT * FROM qryKursvoraussetzungen WHERE KursID=\" & KursID)\r\n    With rstKurse\r\n        If .RecordCount = 0 Then\r\n            SindVoraussetzungenErfuellt = True\r\n        Else\r\n            SindVoraussetzungenErfuellt = True\r\n            While Not .EOF\r\n                If Nz(DLookup(\"KursteilnehmerID\", \"qryMitarbeiterUndKurse\", _\r\n                    \"nz(AbschlussID,0)&gt;1 AND MitarbeiterID=\" & MitarbeiterID & _\r\n                    \" AND KursID=\" & !VoraussetzungsKursID), \"\") = \"\" Then\r\n                        SindVoraussetzungenErfuellt = False\r\n                tempMeldung = tempMeldung & \"- \" & !Kurs & vbCrLf\r\n                End If\r\n                .MoveNext\r\n            Wend\r\n            If SindVoraussetzungenErfuellt = False Then\r\n                tempMeldung = vbCrLf & vbCrLf _                    & \"Allerdings sind die folgenden Kurse\" & _\r\n                    \" Voraussetzung f&uuml;r den Kurs und fehlen bisher:\" & vbCrLf _                    & tempMeldung\r\n            End If\r\n        End If\r\n    End With\r\n    MyMeldung = MyMeldung & tempMeldung\r\nEnd Function<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p>In einer Select-Case-Anweisung werden dann die einzelnen F&auml;lle behandelt. Ist die AbschlussID gleich 1, d. h. der Mitarbeiter hat am Kurs teilgenommen, aber den Kurs noch nicht bestanden, berechnet die Funktion zus&auml;tzlich noch die Anzahl der erfolglosen Versuche und gibt diese im Hinweistext aus.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Als zus&auml;tzliches Feature f&uuml;r die Schulungsverwaltung k&ouml;nnte in den Stammdaten des Kurses die Anzahl der maximalen Versuche angegeben werden. Bei der Anmeldung w&uuml;rde dann &uuml;berpr&uuml;ft, ob der Mitarbeiter noch Versuche f&uuml;r den Kurs &uuml;brig oder endg&uuml;ltig nicht bestanden hat. <\/p>\n<h3>Check 3: Voraussetzungen erf&uuml;llt<\/h3>\n<p>Sollte die Anmeldung nach Check 1 und 2 theoretisch m&ouml;glich sein, werden die Kursvoraussetzungen gepr&uuml;ft. Dazu dient die Funktion SindVoraussetzungenErfuellt (s. Quellcode 7).<\/p>\n<p>Die Funktion ermittelt zun&auml;chst, ob irgendwelche Kurse Bedingung f&uuml;r die Teilnahme am aktuellen Kurs sind. Ist dies der Fall, durchl&auml;uft die Funktion alle Vorkurse in einer Schleife und testet sie auf erfolgreiche Teilnahme des Mitarbeiters. Alle Kurse, die den Test nicht bestehen, werden im Hinweistext nacheinander aufgelistet. Gleichzeitig erh&auml;lt der R&uuml;ckgabewert der Funktion den Wert False.<\/p>\n<p><IMG height=\"294\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic020.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 20:  Bei diesen Voraussetzungen ist die Anmeldung nicht m&ouml;glich.<\/span><\/b><\/p>\n<pre>If FreiePlaetze &gt; 0 Then\r\n    SindGenugPlaetzeFrei = True\r\n    If FreiePlaetze = 1 Then\r\n        MyMeldung = MyMeldung & vbCrLf & vbCrLf & _\r\n            \"Es ist noch \" & FreiePlaetze & _            \" Platz verf&uuml;gbar.\"\r\n    Else\r\n        MyMeldung = MyMeldung & vbCrLf & vbCrLf & _\r\n            \"Es sind noch \" & FreiePlaetze & _            \" Pl&auml;tze verf&uuml;gbar.\"\r\n    End If\r\nElse\r\n    SindGenugPlaetzeFrei = False\r\n    MyMeldung = MyMeldung & vbCrLf & vbCrLf & _\r\n        \"Es sind keine Pl&auml;tze mehr verf&uuml;gbar. \" & _\r\n        \"Bitte w&auml;hlen Sie ein anderes Datum.\"\r\nEnd If<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<h3>Check 4: Noch freie Pl&auml;tze verf&uuml;gbar<\/h3>\n<p>Der letzte Check kontrolliert, ob &uuml;berhaupt noch Pl&auml;tze im Kurs frei sind. Diese Aufgabe &uuml;bernimmt die Funktion SindGenugPlaetzeFrei (s. Quellcode 8). Die Funktion holt sich zun&auml;chst die maximale Teilnehmerzahl aus den Kursstammdaten und berechnet die Anzahl der aktuell angemeldeten Teilnehmer. Ist die maximale Teilnehmerzahl gleich null, sind beliebig viele Pl&auml;tze frei und der Teilnehmer kann angemeldet werden.<\/p>\n<p>Bei einer maximalen Teilnehmerzahl gr&ouml;&szlig;er als null wird zun&auml;chst die Anzahl der freien Pl&auml;tze wie folgt berechnet:<\/p>\n<pre>FreiePlaetze = _MaxAnzahl - AktuelleAnzahl<\/pre>\n<p>Ist das Ergebnis gr&ouml;&szlig;er als null, sind noch Pl&auml;tze frei und die Anzahl der Pl&auml;tze wird im Meldungstext ausgegeben. Ist das Ergebnis gleich null, sind keine Pl&auml;tze mehr verf&uuml;gbar und der Teilnehmer kann nicht angemeldet werden.<\/p>\n<p>Bild 22 zeigt ein Beispiel, bei dem zwar noch f&uuml;nf Pl&auml;tze frei w&auml;ren, aber die Voraussetzungen vom Mitarbeiter nicht erf&uuml;llt sind.<\/p>\n<p><b>Anmeldungdurchf&uuml;hren<\/b><\/p>\n<p>Wenn ein Mitarbeiter f&uuml;r die Anmeldung zu einem Kurs freigegeben ist, kann die Anmeldung &uuml;ber die gleichnamige Schaltfl&auml;che erfolgen. Dazu wird in der Tabelle tblKursteilnehmer ein Datensatz mit der MitarbeiterID, der TerminID und dem Anmeldedatum hinzugef&uuml;gt. Au&szlig;erdem wird f&uuml;r den neu angelegten Kursteilnehmer in der Tabelle tblTeilnahmeNachweise f&uuml;r jede Kurseinheit ein Datensatz angelegt, damit dort sp&auml;ter die Anwesenheit erfasst werden kann.<\/p>\n<p>Nachdem ein Mitarbeiter erfolgreich am Kurs angemeldet wurde und nun die einzelnen Kurseinheiten besucht, teilt in der Regel der Kursleiter nach jeder Kurseinheit die Anwesenheitsliste aus, in die sich die Teilnehmer eintragen. Anschlie&szlig;end kann die Anwesenheit in der Schulungsverwaltung nachgetragen werden. Die Nachverfolgung der Anwesenheit geschieht &uuml;ber das Formular frmTeilnahmenachweisEingeben. (siehe Bild 21).<\/p>\n<p><IMG height=\"295\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic021.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 21:  Anwesenheitsformular<\/span><\/b><\/p>\n<p><IMG height=\"179\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic022.png\" width=\"385\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 22:  Auswahl der Kurseinheit<\/span><\/b><\/p>\n<p><IMG height=\"419\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic023.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 23:  Kursabschluss eingeben<\/span><\/b><\/p>\n<p>Der linke Bereich des Formulars listet wieder alle Kurstermine auf, wobei die &uuml;bliche Filterung der Kurse m&ouml;glich ist. Abh&auml;ngig vom gew&auml;hlten Kurs werden im rechten Bereich die zugeh&ouml;rigen Kurseinheiten in einem Kombinationsfeld bereitgestellt (siehe Bild 22).<\/p>\n<p>Nach Auswahl einer Kurseinheit werden unterhalb des Kombinationsfeldes die Teilnehmer aufgelistet und der Anwender kann die Teilnahme durch einfaches Abhaken des Kontrollk&auml;stchens WarAnwesend best&auml;tigen.<\/p>\n<p>Zuletzt k&ouml;nnen Sie nach Ablauf aller Kurseinheiten f&uuml;r jeden Teilnehmer den erreichten Abschluss eingeben (siehe Bild 23).<\/p>\n<p>Basis f&uuml;r die Erfassung im Formular frmAbschluesseEingeben ist wieder die bekannte Kursliste, in der alle angebotenen Kurse jeweils mit Kursgruppe und nummer aufgef&uuml;hrt sind. <\/p>\n<p>Auch diese Kursliste k&ouml;nnen Sie &uuml;ber die bereits oben erkl&auml;rte Schnellsuche filtern, um bei einer gro&szlig;en Anzahl von Kursen gezielt einen Kurs auszusuchen.<\/p>\n<p>Sobald Sie einen Kurs anklicken, werden im unteren Bereich des Formulars alle Kursteilnehmer mit Anmeldedatum, Note, Abschluss und Abschlussdatum aufgef&uuml;hrt. <\/p>\n<p>Dabei sind lediglich die Felder AbschlussID, Note und ZertifikatErhaltenAm zur Eingabe freigegeben. Die Spalte Mindestnote ist nur zur visuellen Kontrolle der zu erreichenden Note durch den Anwender vorgesehen &#8211; sie wird nat&uuml;rlich vom Programm &uuml;berpr&uuml;ft.<\/p>\n<p>War die Teilnahme erfolgreich, m&uuml;ssen Sie das Datum und ggf. eine Note eingeben.<\/p>\n<h3>Hinweis<\/h3>\n<p>Wie Sie solche Eingaben am besten pr&uuml;fen, lesen Sie in der vorliegenden Ausgabe von Access im Unternehmen im Beitrag Tipps &#038; Tricks. <\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Eine zus&auml;tzliche Abfrage k&ouml;nnte die Anwesenheit eines Mitarbeiters f&uuml;r den Kurs pr&uuml;fen und nur bei einer absolvierten Mindestanzahl die Eingabe des erfolgreichen Abschlusses zulassen. <\/p>\n<p>F&uuml;r alle Teilnehmer, die den Kurs bestanden haben, ist der Ausdruck eines Zertifikats m&ouml;glich, das als Beispiel abgebildet ist (siehe Bild 24).<\/p>\n<p><IMG height=\"619\" src=\"..\/fileadmin\/_temp_\/{53D4626C-0B85-4B44-B5F3-30865021F6E0}\/pic024.png\" width=\"419\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 24:  Ausdruck des Zertifikats<\/span><\/b><\/p>\n<p>In diesem Beitrag haben Sie den Grundaufbau der Schulungsverwaltung sowie die Erfassung von Kursen, Mitarbeitern, R&auml;umen und Kursleitern der Schulungsverwaltung kennen gelernt. <\/p>\n<p>Ferner haben Sie erfahren, wie Sie den komplexen Vorgang der Anmeldung eines Teilnehmers zu einem Kurs durch die &uuml;berpr&uuml;fung zahlreicher Bedingungen f&uuml;r den Anwender der Software so einfach wie m&ouml;glich und fehlerfrei gestalten. Auch die einfache und schnelle Erfassung von Teilnehmernachweisen und Abschlussbewertungen inklusive Ausdruck eines Zertifikats waren Bestandteil des Beitrags.<\/p>\n<p>In einer der folgenden Ausgaben wird die Schulungsverwaltung um Berichte und Auswertungen erg&auml;nzt. Sie lernen, wie Sie<\/p>\n<li>Teilnehmerlisten drucken,<\/li>\n<li>Anmeldebest&auml;tigungen per Brief oder E-Mail verschicken,<\/li>\n<li>Kurslisten mit den Terminen eines bestimmten Zeitraumes drucken und<\/li>\n<li>die Kurs&uuml;bersicht eines Mitarbeiters mit allen Kursen und Versuchen ausgeben.<\/li>\n<p>Ferner erstellen Sie eine Auslastungs&uuml;bersicht, bei der alle Kurse mit Teilnehmerzahl, Verh&auml;ltnis der Zahl der Teilnehmer zur maximalen Teilnehmerzahl und der durchschnittlichen Teilnehmerzahl pro Kurs aufgef&uuml;hrt werden.<\/p>\n<p>In einer Erfolgs&uuml;bersicht geben Sie die Kursliste eines Mitarbeiters mit Durchschnittsnote und der Erfolgsquote (Bestanden\/Nicht bestanden) aus.<\/p>\n<p>Neben den Berichten und Auswertungen wird eine Kursleiter- und Raumplanung erstellt, die eine Doppelbuchung eines Trainers oder Raumes verhindert. Als Nebenprodukte fallen dabei ein Stundenzettel f&uuml;r den Trainer und ein Raumbelegungsplan ab.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Schulungsdatenbank2000.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/5191784C-0C44-4CEA-A586-D8430939BF4E\/aiu_111.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Weiterbildung und Qualifizierung von Mitarbeitern ist einerseits ein wichtiger Faktor zur Sicherung des Know-hows eines Unternehmens und andererseits ein Motivationsfaktor f&uuml;r die Mitarbeiter. Die Verwaltung der Schulungsma&szlig;nahmen kann dabei mit steigender Mitarbeiter- und Kurszahl sehr komplex ausfallen, insbesondere dann, wenn Kurse aufeinander aufbauen oder vorgegebene Noten erzielt werden m&uuml;ssen. Der folgende Beitrag zeigt Ihnen, wie Sie eine Schulungsverwaltung erstellen, mit der Sie komfortabel Teilnehmer zu Kursen anmelden, die Teilnahme kontrollieren und Zertifikate bei Abschluss drucken.<\/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":[662003,66032003,44000027],"tags":[],"class_list":["post-55000111","post","type-post","status-publish","format-standard","hentry","category-662003","category-66032003","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Schulungen und Kurse verwalten - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Schulungen und Kurse verwalten\" \/>\n<meta property=\"og:description\" content=\"Die Weiterbildung und Qualifizierung von Mitarbeitern ist einerseits ein wichtiger Faktor zur Sicherung des Know-hows eines Unternehmens und andererseits ein Motivationsfaktor f&uuml;r die Mitarbeiter. Die Verwaltung der Schulungsma&szlig;nahmen kann dabei mit steigender Mitarbeiter- und Kurszahl sehr komplex ausfallen, insbesondere dann, wenn Kurse aufeinander aufbauen oder vorgegebene Noten erzielt werden m&uuml;ssen. Der folgende Beitrag zeigt Ihnen, wie Sie eine Schulungsverwaltung erstellen, mit der Sie komfortabel Teilnehmer zu Kursen anmelden, die Teilnahme kontrollieren und Zertifikate bei Abschluss drucken.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-14T13:40:23+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"32\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Schulungen und Kurse verwalten\",\"datePublished\":\"2020-09-14T13:40:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/\"},\"wordCount\":5963,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/1e9bccaef117449c95b1afa5ede294c1\",\"articleSection\":[\"2003\",\"3\\\/2003\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/\",\"name\":\"Schulungen und Kurse verwalten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/1e9bccaef117449c95b1afa5ede294c1\",\"datePublished\":\"2020-09-14T13:40:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/1e9bccaef117449c95b1afa5ede294c1\",\"contentUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/1e9bccaef117449c95b1afa5ede294c1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Schulungen_und_Kurse_verwalten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Schulungen und Kurse verwalten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Schulungen und Kurse verwalten - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/","og_locale":"de_DE","og_type":"article","og_title":"Schulungen und Kurse verwalten","og_description":"Die Weiterbildung und Qualifizierung von Mitarbeitern ist einerseits ein wichtiger Faktor zur Sicherung des Know-hows eines Unternehmens und andererseits ein Motivationsfaktor f&uuml;r die Mitarbeiter. Die Verwaltung der Schulungsma&szlig;nahmen kann dabei mit steigender Mitarbeiter- und Kurszahl sehr komplex ausfallen, insbesondere dann, wenn Kurse aufeinander aufbauen oder vorgegebene Noten erzielt werden m&uuml;ssen. Der folgende Beitrag zeigt Ihnen, wie Sie eine Schulungsverwaltung erstellen, mit der Sie komfortabel Teilnehmer zu Kursen anmelden, die Teilnahme kontrollieren und Zertifikate bei Abschluss drucken.","og_url":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-09-14T13:40:23+00:00","og_image":[{"url":"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"32\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Schulungen und Kurse verwalten","datePublished":"2020-09-14T13:40:23+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/"},"wordCount":5963,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1","articleSection":["2003","3\/2003","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/","url":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/","name":"Schulungen und Kurse verwalten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1","datePublished":"2020-09-14T13:40:23+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#primaryimage","url":"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1","contentUrl":"http:\/\/vg04.met.vgwort.de\/na\/1e9bccaef117449c95b1afa5ede294c1"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Schulungen_und_Kurse_verwalten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Schulungen und Kurse verwalten"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000111"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000111\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}