{"id":55000084,"date":"2002-10-01T00:00:00","date_gmt":"2021-02-10T20:17:30","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=84"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Projektverwaltung_mit_Access_Teil_2","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/","title":{"rendered":"Projektverwaltung mit Access, Teil 2"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Autor: Andr&eacute; Minhorst, Duisburg<\/p>\n<p><\/b>!<\/p>\n<p><b>Das Management von Projekten ist eine recht komplexe Aufgabe &#8211; so komplex, dass Sie in der vorliegenden Ausgabe von Access im Unternehmen den zweiten Teil zu der Projektverwaltung aus Ausgabe 2\/2002 finden. Die Projektverwaltung erh&auml;lt eine neue Funktion zur Eingabe und Auswertung der f&uuml;r die einzelnen Projekte aufgewendeten menschlichen Ressourcen &#8211; sprich: Welche Mitarbeiter haben eigentlich wie viel Zeit mit welchen Projekten verbracht Diese und weitere Informationen k&ouml;nnen Sie mit der hier vorgestellten Erweiterung der bestehenden Projektverwaltung &uuml;bersichtlich in Form geeigneter Berichte ausgeben.<\/b><\/p>\n<p><IMG height=\"229\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Datenmodell der Projektverwaltung<\/span><\/b><\/p>\n<p>Der zweite Teil der Projektverwaltung bringt zwei neue Features sowie damit in Zusammenhang stehende &auml;nderungen des Datenmodells mit sich.<\/p>\n<h3>Hinweis<\/h3>\n<p>Den ersten Teil dieser Beitragsreihe finden Sie auf der Heft-CD. Die Beispieldatenbanken mit den neuen Versionen der Projektverwaltung finden Sie ebenfalls auf der Heft-CD unter den Dateinamen Projektverwaltung97.mdb sowie Projektverwaltung2000.mdb. <\/p>\n<p>Bei den zwei neuen Features handelt es sich um die M&ouml;glichkeit zur Eingabe von Arbeitszeiten der einzelnen Mitarbeiter sowie die Auswertung der eingegebenen Arbeitszeiten. <\/p>\n<p>Die Eingabe der Arbeitszeiten erfolgt in halbst&uuml;ndigen Intervallen und ist streng projektbezogen. Das erm&ouml;glicht die Auswertung der Arbeitszeiten bezogen auf Mitarbeiter und Projekte.<\/p>\n<p>Neben der Ausgabe der Arbeitszeiten je Mitarbeiter und Projekt in Form von Berichten erm&ouml;glicht ein spezielles Formular einen Tages&uuml;berblick &uuml;ber die Arbeitszeiten von Mitarbeitern &#8211; entweder bezogen auf alle oder nur die an einem ausgew&auml;hlten Projekt beteiligten Mitarbeiter.<\/p>\n<p>Das Datenmodell besteht im Wesentlichen aus den Tabellen tblProjekte, tblProjektphasen und tblTaetigkeiten. Die Tabellen sind jeweils durch 1:n-Beziehungen miteinander verkn&uuml;pft (siehe Bild 1).<\/p>\n<h3>Ebene der Projekte<\/h3>\n<p>Die Tabelle tblProjekte beinhaltet die einzelnen Projekte als oberste Ebene der Hierarchie des Datenmodells. Die Tabelle enth&auml;lt ein Feld zur Angabe einer Projektbezeichnung sowie zwei Felder mit dem Start- und dem Enddatum des Projektes.<\/p>\n<p>Jedes Projekt ist mit je einem Eintrag der Tabellen tblMitarbeiter und tblKunden verkn&uuml;pft. Die Verkn&uuml;pfung zur Tabelle tblMitarbeiter dient der Festlegung des Projektleiters. Mit dem Verweis auf die Tabelle tblKunden legen Sie den Kunden fest, f&uuml;r den Sie das Projekt durchf&uuml;hren.<\/p>\n<h3>Ebene der Phasen<\/h3>\n<p>Die n&auml;chste Ebene unter einem Projekt sind die einzelnen Projektphasen. Die Tabelle tblProjektphasen beinhaltet Informationen zu den Phasen wie die Bezeichnung und den Start- und den Endtermin.<\/p>\n<p>Genau wie die Tabelle tblProjekte enth&auml;lt auch die Tabelle tblProjektphasen einen Verweis auf die Tabelle tblMitarbeiter, um den f&uuml;r die Projektphase verantwortlichen Mitarbeiter festzulegen. Das Feld ProjektID dient zur Auswahl eines Projektes aus der Tabelle tblProjekte, zu dem die Projektphase geh&ouml;rt.<\/p>\n<h3>Hinweis<\/h3>\n<p>Bei den Projekten finden Sie eine der &auml;nderungen im Datenmodell gegen&uuml;ber der Projektverwaltung des ersten Teils: Es ist nunmehr nicht mehr m&ouml;glich, zu den einzelnen Projektphasen Unterphasen anzulegen. Die Anzeige der Projekte wurde entsprechend angepasst. <\/p>\n<h3><\/h3>\n<h3>Speicherung von T&auml;tigkeiten<\/h3>\n<p>Die n&auml;chste Ebene des Datenmodells bilden die einzelnen T&auml;tigkeiten. Die Informationen zu den T&auml;tigkeiten befinden sich in der Tabelle tblTaetigkeiten. Genau wie die Tabellen tblProjekte und tblProjektphasen hat auch diese Tabelle einen Verweis auf die Tabelle tblMitarbeiter. Er dient allerdings nicht zur Auswahl des Verantwortlichen, sondern des Ausf&uuml;hrenden der T&auml;tigkeit.<\/p>\n<p>Weitere Felder dienen zur Angabe der ausgef&uuml;hrten T&auml;tigkeit, des Datums der T&auml;tigkeit sowie des Zeitraums. Die Angabe des Zeitraums erfolgt durch die Auswahl der Start- und der Endzeit aus einer separaten Tabelle namens tblUhrzeiten. Die Tabelle enth&auml;lt alle Tageszeiten in halbst&uuml;ndigen Abst&auml;nden.<\/p>\n<h3>Kategorisieren der T&auml;tigkeiten<\/h3>\n<p>Die einzelnen T&auml;tigkeiten k&ouml;nnen Sie &uuml;ber eine Verkn&uuml;pfung zur Tabelle tblTaetigkeitsarten grob kategorisieren. Die Tabelle enth&auml;lt neben dem Namen der T&auml;tigkeitsart noch einen Farb-code. Das Formular zur Anzeige der T&auml;tigkeiten eines Tages verwendet die Farbangaben zu deren &uuml;bersichtlicheren Darstellung.<\/p>\n<h3>Mitarbeiter und Arbeitszeiten<\/h3>\n<p>Die Tabelle tblMitarbeiter ist um zwei Felder erweitert worden: ArbeitszeitVon und ArbeitszeitBis. Diese Informationen ben&ouml;tigen Sie, um im Formular der T&auml;tigkeiten eines Mitarbeiters direkt die Zeiten zu markieren, in denen der Mitarbeiter nicht verf&uuml;gbar ist.<\/p>\n<p>Da es im Vergleich zu der im ersten Teil des vorliegenden Beitrages beschriebenen Musterl&ouml;sung nun nicht mehr nur die Projekte und deren Phasen, sondern auch noch die T&auml;tigkeiten der Mitarbeiter eines Tages und einige Berichte zur Anzeige von Informationen gibt, ben&ouml;tigen Sie ein Hauptformular zur Auswahl der gew&uuml;nschten Darstellungsart (siehe Bild 2).<\/p>\n<p><IMG height=\"378\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic002.png\" width=\"432\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Hauptmen&uuml; der Projektverwaltung<\/span><\/b><\/p>\n<p>Das Hauptmen&uuml; bietet vier Optionen. Die unterschiedlichen Optionen f&uuml;hren zu folgenden Ansichten:<\/p>\n<li>Alle Projekte: zeigt eine Auflistung der wichtigsten Projektdaten aller Projekte an und dient zur Auswahl, Neuanlage und Bearbeitung von Projekten<\/li>\n<li>Tagesansicht: enth&auml;lt einen &uuml;berblick &uuml;ber alle an dem angegebenen Tag durchgef&uuml;hrten T&auml;tigkeiten aller oder der an dem ausgew&auml;hlten Projekt beteiligten Mitarbeiter<\/li>\n<li>Projektdaten: enth&auml;lt das bereits im ersten Teil des vorliegenden Beitrags beschriebene Formular zur Darstellung eines Projektes und seiner Detaildaten<\/li>\n<li>Auswertungen: zeigt eine projekt- oder mitarbeiterbezogene Auswertung der T&auml;tigkeiten in dem gew&auml;hlten Zeitraum an<\/li>\n<p><IMG height=\"241\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Anzeige der T&auml;tigkeiten eines Tages<\/span><\/b><\/p>\n<p>Da die Aufrufe teilweise eng mit den Funktionen verkn&uuml;pft sind, folgt deren Beschreibung mit den jeweiligen Funktionen.<\/p>\n<p>Die Verwaltung von Projekten ist nicht zuletzt die Kunst, mit minimaler Mitarbeiteranzahl eine gro&szlig;e Menge Projekte in m&ouml;glichst kurzer Zeit abzuarbeiten &#8211; und dabei nicht den &uuml;berblick zu verlieren. Daher ist es nicht nur sinnvoll, nach der Durchf&uuml;hrung eines Projektes einen R&uuml;ckblick auf die eingesetzten Ressourcen zu werfen, sondern auch w&auml;hrend der Projekte genau zu wissen, welcher Mitarbeiter wann an welchem Projekt arbeitet.<\/p>\n<p><b>Formular zur Anzeige vonT&auml;tigkeiten<\/b><\/p>\n<p>Zu diesem Zweck erstellen Sie nun ein Formular, mit dem Sie f&uuml;r jeweils einen Kalendertag alle Mitarbeiter und deren T&auml;tigkeiten anzeigen k&ouml;nnen.<\/p>\n<p>Das Formular hat einen &auml;hnlichen Aufbau wie das Formular zur Anzeige von Projekten aus dem ersten Teil der Beitragsserie.<\/p>\n<p>Im Kopf des Formular legen Sie vier Steuerelemente an &#8211; zwei Textfelder und zwei Schaltfl&auml;chen.<\/p>\n<p>Das erste Textfeld namens txtDatum zeigt das Datum des Tages an, f&uuml;r den die T&auml;tigkeiten aufgelistet werden sollen.<\/p>\n<p>Das zweite Textfeld namens txtProjekt zeigt an, ob die Mitarbeiter zu einem bestimmten Projekt oder alle Mitarbeiter angezeigt werden. <\/p>\n<p>Die beiden Schaltfl&auml;chen cmdTagZurueck und cmdTagVor dienen zum Vor- und Zur&uuml;ckbl&auml;ttern des angezeigten Datums.<\/p>\n<p>Das Formular enth&auml;lt jeweils eine Zeile in Form eines Unterformulars f&uuml;r jeden Mitarbeiter. Jede Zeile enth&auml;lt den Namen des Mitarbeiters, je ein K&auml;stchen f&uuml;r jede halbe Stunde des Kalendertages sowie eine Schaltfl&auml;che zum &ouml;ffnen des Formulars zur Anzeige der T&auml;tigkeiten des Mitarbeiters (siehe Bild 3).<\/p>\n<p><IMG height=\"231\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic004.png\" width=\"489\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Aufruf der Tagesansicht &uuml;ber das Formular frmUebersicht<\/span><\/b><\/p>\n<p>Die dunklen Felder zeigen Zeiten an, dass der Mitarbeiter nicht zur Verf&uuml;gung steht &#8211; entweder weil sie nicht in seiner Arbeitszeit liegen oder weil er einen als au&szlig;er Dienst bezeichneten T&auml;tigkeitszeitraum festgelegt hat.<\/p>\n<p>Die wei&szlig;en Felder zeigen Zeiten ohne Zuordnung irgendeiner T&auml;tigkeit an. S&auml;mtliche anders eingef&auml;rbten Felder entsprechen den in der Legende angegebenen T&auml;tigkeitsarten.<\/p>\n<p><b>Aufbau des Formulars<\/b><\/p>\n<p>&auml;hnlich wie das Formular zur Anzeige ganzer Projekte verwendet auch dieses Formular eine Reihe von Unterformularen, um die Daten f&uuml;r die einzelnen Mitarbeiter anzuzeigen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Zur Erinnerung: Unter Access 97 ist es gar nicht und unter Access 2000 nur eingeschr&auml;nkt m&ouml;glich, Daten in Endlosformularen unterschiedlich zu formatieren. Daher verwenden Sie Unterformulare zur Anzeige der mit unterschiedlichen Farben markierten Zeitr&auml;ume. <\/p>\n<p>Im ersten Teil der Beitragsreihe verwendeten Sie eine feste Anzahl von Unterformularen, um die unterschiedlichen Projektphasen anzuzeigen. Das hatte zwei Nachteile: Wenn die tats&auml;chliche Anzahl von Datens&auml;tzen kleiner als die Anzahl der angezeigten Unterformulare war, verschenkten Sie unn&ouml;tig Platz. War die tats&auml;chliche Anzahl gr&ouml;&szlig;er, konnten nur die ersten n Phasen angezeigt werden.<\/p>\n<p>Das Formular zur Anzeige der T&auml;tigkeiten der einzelnen Mitarbeiter soll dieses Problem umgehen. Dazu wird die ben&ouml;tigte Anzahl von Unterformularen vor dem &ouml;ffnen des Formulars ermittelt. Anschlie&szlig;end erstellt eine Prozedur dynamisch die ben&ouml;tigte Anzahl Unterformulare &#8211; also f&uuml;r jeden beteiligten Mitarbeiter eines.<\/p>\n<p><b>Aufruf des Formulars<\/b><\/p>\n<p>Das Hinzuf&uuml;gen von Steuerelementen zur Laufzeit erfordert das &ouml;ffnen des gew&uuml;nschten Objektes &#8211; in diesem Fall eines Formulars &#8211; in der Entwurfsansicht. In der Formularansicht ist kein Hinzuf&uuml;gen oder Entfernen von Elementen des Formulars m&ouml;glich.<\/p>\n<p>Da die Ereignisse eines Formulars nur zur Laufzeit des Formulars ausgel&ouml;st werden k&ouml;nnen, kann die Erstellung der ben&ouml;tigten Steuerelemente nicht durch die Ereignisse des Formulars selbst erfolgen.<\/p>\n<p>Die Erstellung der ben&ouml;tigten Unterformulare erfolgt im aufrufenden Formular frmUebersicht.<\/p>\n<p>Bild 4 zeigt den Bereich des Formulars frmUebersicht in der Entwurfsansicht, mit dem Sie nach der Auswahl der gew&uuml;nschten Parameter die Tages&uuml;bersicht aufrufen k&ouml;nnen.<\/p>\n<p>Mit der Optionsgruppe optgrpMitarbeiter legen Sie fest, ob alle Mitarbeiter oder nur die an einem bestimmten Projekt beteiligten Mitarbeiter angezeigt werden sollen. Dabei legen Sie mit dem Kombinationsfeld cboProjekt das gew&uuml;nschte Projekt fest. <\/p>\n<p>Mit der Schaltfl&auml;che cmdTagesansicht starten Sie das Ereignis zum Anpassen des Formulars zur Anzeige der T&auml;tigkeiten. Dazu legen Sie die Prozedur aus Quellcode 1 f&uuml;r die Ereigniseigenschaft Beim Klicken der Schaltfl&auml;che an.<\/p>\n<p>Die Prozedur ermittelt, ob Sie die T&auml;tigkeiten aller oder nur die der an dem ausgew&auml;hlten Projekt beteiligten Mitarbeiter ausgeben m&ouml;chten. Wenn Sie alle Mitarbeiter in die Anzeige einbeziehen m&ouml;chten, setzt die Prozedur die globale Variable AlleMitarbeiter auf den Wert True. Falls nicht, erh&auml;lt die Variable den Wert False. Au&szlig;erdem erh&auml;lt die Variable AktuellesProjekt die ID des ausgew&auml;hlten Projektes.<\/p>\n<p>Die globalen Variablen legen Sie bitte in einen neuen Klassenmodul namens mdlGlobal an.<\/p>\n<p>Die Prozedur TagesansichtAktualisieren (s. Quellcode 2) legen Sie in einem neuen Standardmodul namens mdlTagesansicht an. Der Grund liegt darin, dass Sie die Prozedur zur Anzeige der Tages&uuml;bersichten sp&auml;ter noch von weiteren Formularen aus aufrufen.<\/p>\n<p>Die Prozedur fragt nach dem Deklarationsteil zun&auml;chst die soeben gesetzten globalen Variablen ab. Wenn der Anwender die Anzeige der T&auml;tigkeiten aller Mitarbeiter gew&auml;hlt hat, dient die komplette Tabelle tblMitarbeiter als Grundlage f&uuml;r die zu erstellenden Unterformulare.<\/p>\n<p><!--30percent--><\/p>\n<p><IMG height=\"317\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Entwurfsansicht der Abfrage zur Ermittlung von Mitarbeitern und deren Projekten<\/span><\/b><\/p>\n<pre>Private Sub cmdTagesansicht_Click()\r\n    Dim ProjektID As Integer\r\n    If Me.optgrpMitarbeiter = 1 Then\r\n        AlleMitarbeiter = True\r\n        TagesansichtAktualisieren\r\n    Else\r\n        AlleMitarbeiter = False\r\n        If Not IsNull(Me.cboProjekte) Then\r\n            AktuellesProjekt = Me.cboProjekte\r\n            TagesansichtAktualisieren\r\n        Else\r\n            MsgBox \"Projekt ausw&auml;hlen!\", _\r\n            vbOKOnly + vbExclamation, _\r\n            \"Projektverwaltung\"\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<p>Falls das Formular nur die T&auml;tigkeiten von Mitarbeitern anzeigen soll, die an einem bestimmten Projekt beteiligt sind, muss es diese zun&auml;chst ermitteln.<\/p>\n<pre>Public Sub TagesansichtAktualisieren()\r\n    Dim objFormular As Form\r\n    Dim i As Integer\r\n    Dim strSQL As String\r\n    Dim objUnterformular As Control\r\n    Dim db As Database\r\n    Dim rst As Recordset\r\n    If AlleMitarbeiter = True Then\r\n        strSQL = \"tblMitarbeiter\"\r\n    Else\r\n        If IsNull(AktuellesProjekt) Then\r\n            MsgBox \"Kein Projekt ausgew&auml;hlt!\", _\r\n                vbExclamation + vbOKOnly\r\n            Exit Sub\r\n        End If\r\n        strSQL = \"SELECT DISTINCT MitarbeiterID FROM \" _\r\n            & \"qryMitarbeiterProjekte\"\r\n        If Not IsNull(AktuellesProjekt) Then\r\n            strSQL = strSQL & \" WHERE ProjektID = \" & _\r\n            AktuellesProjekt & \" GROUP BY MitarbeiterID\"\r\n        End If\r\n    End If\r\n    DoCmd.OpenForm \"frmTagesplan\", acDesign\r\n    Set objFormular = Forms!frmTagesplan\r\n    For i = objFormular.Controls.Count - 1 To 0 Step -1\r\n        If Left(objFormular.Controls.Item(i).Name, 3) _\r\n            = \"sfm\" Then\r\n            DeleteControl objFormular.Name, _\r\n                objFormular.Controls.Item(i).Name\r\n        End If\r\n    Next i\r\n    Set db = CurrentDb\r\n    Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)\r\n    i = 1\r\n    Do While Not rst.EOF\r\n        Set objUnterformular = _\r\n        CreateControl(objFormular.Name, acSubform, _\r\n        acDetail, , , 0, (i - 1) * 300, 12000, 300)\r\n        With objUnterformular\r\n            .SourceObject = \"sfmTagesplan\"\r\n            .SpecialEffect = 0\r\n            .BorderStyle = 0\r\n            .Name = \"sfm\" & rst!MitarbeiterID\r\n        End With\r\n        i = i + 1\r\n        rst.MoveNext\r\n    Loop\r\n    DoCmd.RunCommand acCmdSave\r\n    DoCmd.OpenForm \"frmTagesplan\", acNormal\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<p>Dazu dient eine Abfrage, die alle Mitarbeiter und deren Projekte ermittelt. Aus dem Ergebnis diese Abfrage wiederum filtert die Prozedur alle Datens&auml;tze heraus, die zu dem angegebenen Projekt geh&ouml;ren.<\/p>\n<p>Das Aussehen der Abfrage k&ouml;nnen Sie Bild 5 entnehmen. Sie enth&auml;lt vier Tabellen, von denen allerdings nur zwei die Informationen f&uuml;r das Ergebnis liefern.<\/p>\n<p><b>Anlegen derUnterformular-Steuerelemente<\/b><\/p>\n<p>Im Anschluss an die Ermittlung der betroffenen Mitarbeiter wird es interessant: Die Prozedur &ouml;ffnet das Formular frmTagesplan in der Entwurfsansicht.<\/p>\n<p>In der anschlie&szlig;enden For Next-Schleife entfernt die Prozedur zun&auml;chst alle zuvor verwendeten Unterformular-Steuerelemente. Dabei durchl&auml;uft die Prozedur alle Steuerelemente dem Index nach. Dieser Durchlauf muss r&uuml;ckw&auml;rts erfolgen, da ein Entfernen von Steuerelementen immer eine neue Indexierung der anderen Steuerelemente zur Folge hat. Die Anweisungen innerhalb der Schleife &uuml;berpr&uuml;fen, ob der Name des Steuerelementes mit sfm beginnt, und entfernen es dann gegebenenfalls.<\/p>\n<p>Nachdem alle Unterformulare entfernt sind, k&ouml;nnen die neuen Unterformulare erstellt werden. Dabei durchl&auml;uft die Prozedur in einer Do While-Schleife alle Datens&auml;tze der ermittelten Datensatzgruppe der Mitarbeiter.<\/p>\n<pre>Private Sub Form_Current()\r\n    If IsNull(Forms!frmUebersicht!cboProjekte) Then\r\n        Me.txtProjekt = \"Alle Projekte\"\r\n    Else\r\n        AktuellesProjekt = _\r\n            Forms!frmUebersicht!cboProjekte\r\n        Me.txtProjekt = _\r\n            Forms!frmUebersicht!cboProjekte.Column(1)\r\n    End If\r\n    If TagTaetigkeit = \"30.12.1899\" Then\r\n        Me.txtDatum = Date\r\n    Else\r\n        Me.txtDatum = TagTaetigkeit\r\n    End If\r\n    TagesplanAktualisieren\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<pre>Sub TagesplanAktualisieren()\r\n    Dim ctl As Control\r\n    Dim db As Database\r\n    Dim rstM, rstT As Recordset\r\n    Dim Start, Ende, i, MitarbeiterID As Integer\r\n    Dim Datum As Date\r\n    Dim strM, strT As String\r\n    Set db = CurrentDb<\/pre>\n<p><b>Quellcode 4 (erster Teil)<\/b><\/p>\n<p>Mit der CreateControl-Funktion erstellt die Prozedur die neuen Unterformulare und vergr&ouml;&szlig;ert den Wert der vertikalen Position der Formulare jeweils so, dass alle Unterformulare genau untereinander positioniert werden.<\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Entwurfsansicht der Abfrage qryTaetigkeiten<\/span><\/b><\/p>\n<p>Anschlie&szlig;end werden einige Eigenschaften festgelegt: Das Formular sfmTagesplan wird zum Herkunftsobjekt des neuen Unterformular-Steuerelements, die Eigenschaft Spezialeffekt wird auf Flach und die Eigenschaft Rahmenart auf den Wert Keine eingestellt. Au&szlig;erdem erh&auml;lt das Unterformular-Steuerelement einen Namen, der sich aus der Zeichenfolge frm und der Mit-arbeiterID zusammensetzt. Schlie&szlig;lich wird das Formular in der Formularansicht ge&ouml;ffnet.<\/p>\n<p><b>Anlegen desUnterformularssfmTagesplan<\/b><\/p>\n<p>Die frisch angelegten Unterformular-Steuerelemente warten nun auf die anzuzeigenden Daten. Das Anzeigen der Daten ist jedoch nicht ohne ein entsprechendes Unterformular m&ouml;glich.<\/p>\n<pre>    If AlleMitarbeiter = True Then\r\n        strM = \"tblMitarbeiter\"\r\n    Else\r\n        strM = \"SELECT DISTINCT MitarbeiterID, Nachname, ArbeitszeitVon, \" _\r\n            & \"ArbeitszeitBis FROM qryMitarbeiterProjekte WHERE ProjektID = \" & _\r\n            AktuellesProjekt\r\n    End If\r\n    Set rstM = db.OpenRecordset(strM, dbOpenDynaset)\r\n    Do While Not rstM.EOF\r\n        MitarbeiterID = rstM!MitarbeiterID\r\n        With Me(\"sfm\" & MitarbeiterID)\r\n            .Form.txtMitarbeiterID = rstM!MitarbeiterID\r\n            .Form.txtMitarbeiter = rstM!Nachname\r\n            .Form(\"cmdBearbeiten\").OnClick = \"=TaetigkeitenBearbeiten(\" _\r\n                & rstM!MitarbeiterID & \", \"\"\" & Me.txtDatum & \"\"\")\"\r\n            For i = 1 To 48\r\n                .Form(\"lbl\" & i).BackColor = 8421504\r\n            Next i\r\n            For i = rstM!ArbeitszeitVon To rstM!ArbeitszeitBis\r\n                .Form(\"lbl\" & i).BackColor = 16777215\r\n            Next i\r\n            strT = \"SELECT * FROM qryTaetigkeiten WHERE MitarbeiterID = \" _\r\n                & MitarbeiterID & \" AND Datum = \" & ISODatum(Me.txtDatum)\r\n            If Not IsNull(Forms!frmUebersicht!cboProjekte) Then\r\n                strT = strT & \" AND ProjektID = \" & Forms!frmUebersicht!cboProjekte\r\n            End If\r\n            Set rstT = db.OpenRecordset(strT, dbOpenDynaset)\r\n            Do While Not rstT.EOF\r\n                Start = rstT!Start\r\n                Ende = rstT!Ende\r\n                For i = Start To Ende - 1\r\n                    .Form(\"lbl\" & i).BackColor = rstT!Farbcode\r\n                    .Form(\"lbl\" & i).ControlTipText = \"\" & rstT!Taetigkeit\r\n                Next i\r\n                rstT.MoveNext\r\n            Loop\r\n        End With\r\n        rstM.MoveNext\r\n    Loop\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4 (Fortsetzung)<\/b><\/p>\n<p>Legen Sie daher ein neues Formular an und speichern es unter dem Namen sfmTagesplan. Das Formular enth&auml;lt zwei Textfelder zur Anzeige von MitarbeiterID und Mitarbeitername namens txtMitarbeiterID und txtMitarbeiter sowie 48 Textfelder f&uuml;r die Anzeige des Tagesverlaufs.<\/p>\n<p>Die Namen der Textfelder setzen sich aus den Buchstaben lbl sowie der laufenden Nummer von 1 bis 48 zusammen. Schlie&szlig;lich fehlt noch eine Schaltfl&auml;che zum Aufrufen eines Formulars, mit dem der Anwender die Daten bearbeiten kann &#8211; sie hei&szlig;t cmdBearbeiten. <\/p>\n<p><IMG height=\"230\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Entwurfsansicht des Unterformulars sfmTagesplan<\/span><\/b><\/p>\n<p>Nachdem Sie das Unterformular erstellt haben, k&ouml;nnen Sie das Formular frmTagesplan bereits &ouml;ffnen und die entsprechende Anzahl Unterformularsteuerelemente automatisch erstellen lassen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Wenn Ihnen davor graut, 48 Textfelder exakt gleicher Gr&ouml;&szlig;e und mit akkurater Positionierung anzulegen und diese auch noch zu benennen, k&ouml;nnen Sie sich den Beitrag Steuerelemente vom Flie&szlig;band zu Gem&uuml;te f&uuml;hren. Sie finden ihn auf der Heft-CD <\/p>\n<p><b>Aktivieren desFormularsfrmTagesplan<\/b><\/p>\n<p><IMG height=\"126\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic007.png\" width=\"400\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Anzeige der T&auml;tigkeit per ControlTipText<\/span><\/b><\/p>\n<pre>Private Sub txtDatum_AfterUpdate()\r\n    TagesplanAktualisieren\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<pre>Private Sub cmdTagVor_Click()\r\n    txtDatum = CDate(txtDatum) + 1\r\n    TagesplanAktualisieren\r\nEnd Sub<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<pre>Private Sub cmdTagZurueck_Click()\r\n    txtDatum = CDate(txtDatum) - 1\r\n    TagesplanAktualisieren\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<pre>Private Sub txtDatum_DblClick(Cancel As Integer)\r\n    DoCmd.OpenForm \"frmKalender\", _         Windowmode:=acDialog, OpenArgs:=Me.txtDatum\r\n    Me.txtDatum = Forms!frmKalender!ctlKalender\r\n    DoCmd.Close acForm, \"frmKalender\"\r\n    TagesplanAktualisieren\r\nEnd Sub<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<p>Nun ist der Moment gekommen, das Formular frmTagesplan mit Leben zu f&uuml;llen.<\/p>\n<p>Dazu dient die Prozedur aus Quellcode 3, die Sie f&uuml;r die Ereigniseigenschaft Beim &ouml;ffnen des Formulars hinterlegen.<\/p>\n<p>Die Prozedur &uuml;berpr&uuml;ft, ob im Kombinationsfeld cboProjekte des aufrufenden Formulars frmUebersicht ein Projekt ausgew&auml;hlt ist. Falls nicht, erscheint im Textfeld txtProjekt der Text Alle Projekte, anderenfalls erscheint dort der Name des ausgew&auml;hlten Projekts. Das Textfeld txtDatum zeigt das aktuelle Datum an. <\/p>\n<p>Anschlie&szlig;end ruft die Ereignisprozedur die Prozedur TagesplanAktualisieren auf (s. Quellcode 4). <\/p>\n<p>Nach dem Deklarationsteil ermittelt die Prozedur wie in der bereits zuvor beschriebenen Prozedur die Mitarbeiter, deren Daten angezeigt werden sollen.<\/p>\n<p><IMG height=\"162\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic008.png\" width=\"482\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Entwurfsansicht des Formulars frmTaetigkeitenBearbeiten<\/span><\/b><\/p>\n<pre>Public Function TaetigkeitenBearbeiten(MitarbeiterID _    As Integer, Datum As Date)\r\n    Dim Kriterium As String\r\n    Kriterium = \"MitarbeiterID = \" & MitarbeiterID _        & \" AND Datum = \" & ISODatum(Datum)\r\n    DoCmd.OpenForm \"frmTaetigkeitenBearbeiten\", _        WhereCondition:=Kriterium, _        OpenArgs:=MitarbeiterID\r\nEnd Function<\/pre>\n<p><b>Quellcode 9<\/b><\/p>\n<p>Anschlie&szlig;end durchl&auml;uft die Prozedur zwei ineinander geschachtelte Schleifen. Die &auml;u&szlig;ere Schleife durchl&auml;uft alle betroffenen Datens&auml;tze der Tabelle tblMitarbeiter. Sie schreibt die Inhalt der Felder MitarbeiterID und Nachname in die entsprechenden Textfelder txtMitarbeiterID und txtMitarbeiter der Unterformulare.<\/p>\n<p>Ein wichtiger Punkt ist die Zuweisung des Namen einer Funktion an die Eigenschaft OnClick der Schaltfl&auml;che cmdBearbeiten des Unterformulars. Diese Funktion soll ein Formular aufrufen, dass die T&auml;tigkeiten des Mitarbeiters anzeigt, zu dessen Unterformular die Schaltfl&auml;che geh&ouml;rt. Normalerweise w&uuml;rden Sie diese Funktion direkt beim Erstellen des Unterformulars f&uuml;r die Ereigniseigenschaft eintragen. Die Funktion ben&ouml;tigt aber z. B. die MitarbeiterID des entsprechenden Mitarbeiters, um nur dessen T&auml;tigkeiten anzeigen zu k&ouml;nnen. Daher kann der Funktionsaufruf erst zur Laufzeit zugewiesen werden.<\/p>\n<p>Die beiden Felder ArbeitszeitVon und ArbeitszeitBis werden so in die Unterformulare eingearbeitet, dass all diejenigen der 48 Textfelder wei&szlig; gef&auml;rbt werden, die zwischen den beiden Zeitpunkten liegen.<\/p>\n<p>Anschlie&szlig;end durchl&auml;uft die innere Schleife alle Datens&auml;tze der Tabelle tblTaetigkeiten, die zu dem aktuellen Mitarbeiter, dem gew&uuml;nschten Tag und ggf. dem aktuellen Projekt geh&ouml;ren. Zur Ermittlung dieser Datens&auml;tze ben&ouml;tigen Sie eine Abfrage namens qryTaetigkeiten mit den entsprechenden Datens&auml;tzen (siehe Bild 6).<\/p>\n<p>Dabei passiert mit jedem Datensatz das gleiche wie mit den Arbeitszeiten: Die Textfelder, die dem Zeitraum einer T&auml;tigkeit entsprechen, werden in der Farbe der entsprechenden T&auml;tigkeitsart eingef&auml;rbt.<\/p>\n<p>Zus&auml;tzlich erhalten alle Textfelder den Inhalt des Feldes Taetigkeit des aktuellen Datensatzes der Tabelle tblTaetigkeiten als Wert der Eigenschaft ControlTipText eingesetzt. Auf diese Weise kann durch Positionieren des Mauszeigers direkt der Inhalt der T&auml;tigkeit ermittelt werden (siehe Bild 8).<\/p>\n<p><b>&auml;ndern des Datums<\/b><\/p>\n<p>Das Formular soll drei M&ouml;glichkeiten bieten, um ein anderes als das aktuell angezeigte Datum auszuw&auml;hlen.<\/p>\n<p>Die erste M&ouml;glichkeit ist die direkte Eingabe des Datums von Hand. Damit die angezeigten Daten nach der Eingabe des Datums aktualisiert werden, legen Sie f&uuml;r die Ereigniseigenschaft Nach Aktualisierung die Prozedur aus Quellcode 5 an. Die Prozedur ruft lediglich die bereits erw&auml;hnte Prozedur TagesplanAktualisieren auf.<\/p>\n<p>Die zweite M&ouml;glichkeit ist das Vor- und Zur&uuml;ckbl&auml;ttern um jeweils einen Tag mit den beiden Schaltfl&auml;chen cmdTagVor und cmdTagZurueck. Dazu legen Sie zwei Prozeduren f&uuml;r die Ereigniseigenschaften Beim Klicken der beiden Schaltfl&auml;chen an (Quellcode 6 und Quellcode 7).<\/p>\n<pre>Private Sub cmdSpeichern_Click()\r\n    If MsgBox(\"M&ouml;chten Sie die &auml;nderungen wirklich speichern\", _        vbYesNo + vbExclamation, \"Projektverwaltung\") = vbYes Then\r\n        If IsNull(Me.ProjektphaseID) Then\r\n            MsgBox \"Projektphase ausw&auml;hlen!\", _\r\n                vbOKOnly + vbExclamation, _\r\n                \"Projektverwaltung\"\r\n            Exit Sub\r\n        End If\r\n        If IsNull(Me.TaetigkeitstypID) Then\r\n            MsgBox \"T&auml;tigkeitstyp ausw&auml;hlen!\", _\r\n            vbOKOnly + vbExclamation, \"Projektverwaltung\"\r\n            Exit Sub\r\n        End If\r\n        DoCmd.RunCommand acCmdSaveRecord\r\n        TagesansichtAktualisieren\r\n        DoCmd.Close acForm, Me.Name\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 10<\/b><\/p>\n<pre>Private Sub cmdAbbrechen_Click()\r\n    If MsgBox(\"M&ouml;chten Sie die &auml;nderungen wirklich verwerfen\", _        vbYesNo + vbExclamation, \"Projektverwaltung\") = vbYes Then\r\n        If Me.Dirty Then\r\n            Me.Undo\r\n        End If\r\n        DoCmd.Close acForm, Me.Name\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 11<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Genauere Informationen zum Umgang mit dem Kalendersteuerelement finden Sie im Beitrag Datumeingabe mit dem Kalendersteuerelement auf der Heft-CD. <\/p>\n<p>Die dritte und letzte M&ouml;glichkeit ist die Auswahl des gew&uuml;nschten Datums mit dem Kalendersteuerelement. Die Prozedur aus Quellcode 8 &ouml;ffnet ein Formular, in dem sich das Kalendersteuerelement befindet.<\/p>\n<p><b>Anlegen und Bearbeiten neuerT&auml;tigkeiten<\/b><\/p>\n<p>Leider entstehen durch das Betrachten des nun fast fertigen Formulars zur Anzeige von T&auml;tigkeiten nicht automatisch auch die entsprechenden Eintr&auml;ge. <\/p>\n<p>Dazu ben&ouml;tigen Sie noch ein Formular, das &uuml;ber die Schaltfl&auml;che cmdBearbeiten ge&ouml;ffnet wird. Die Schaltfl&auml;che selbst enth&auml;lt &#8211; wie weiter oben beschrieben &#8211; den Namen der aufzurufenden Funktion TaetigkeitenBearbeiten als Wert der Ereigniseigenschaft Beim Klicken.<\/p>\n<p>Die Prozedur setzt aus der MitarbeiterID und dem Datum ein Kriterium zusammen, das im anschlie&szlig;enden Aufruf des Formulars frmTaetigkeitenBearbeiten f&uuml;r den Parameter WhereCondition &uuml;bermittelt wird (s. Quellcode 9).<\/p>\n<p><IMG height=\"276\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic009.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10:  Auswahl einer Projektphase<\/span><\/b><\/p>\n<p><IMG height=\"194\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic010.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11:  Das Formular frmUebersicht in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Bild 9 zeigt die Entwurfsansicht des Formulars. Die Datenherkunft des Formulars ist wiederum eine Abfrage und enth&auml;lt nahezu alle Felder der drei Tabellen tblProjekte, tblProjektphasen und tblTaetigkeiten. Dem entsprechen auch die zum gr&ouml;&szlig;ten Teil an diese Datenherkunft gebundenen Steuerelemente. Damit Sie nach der Bearbeitung der Daten wieder zum aufrufenden Formular zur&uuml;ckkehren k&ouml;nnen und direkt die aktualisierten Daten vorfinden, legen Sie f&uuml;r die Ereigniseigenschaft Beim Klicken der Schaltfl&auml;che cmdSpeichern die Prozedur aus Quellcode 10 an. Die Prozedur speichert den Datensatz, aktualisiert die Anzeige des Formulars frmTagesplan und schlie&szlig;t das Formular frmTaetigkeitenBearbeiten.<\/p>\n<p>Falls der Benutzer den neuen oder den zuletzt bearbeiteten Datensatz nicht &uuml;bernehmen m&ouml;chte, stellen Sie ihm eine Schaltfl&auml;che zum Abbrechen der Bearbeitung zur Verf&uuml;gung. Die Schaltfl&auml;che l&ouml;st beim Klicken die Prozedur aus Quellcode 11 aus.<\/p>\n<p>Das Kombinationsfeld zur Anzeige der Projektphasen soll nur diejenigen Projektphasen anzeigen, die zu dem im dar&uuml;ber liegenden Kombinationsfeld ausgew&auml;hlten Datensatz geh&ouml;ren. Dazu wird bei jeder Auswahl eines Projektes die globale Variable AktuellesProjekt auf den entsprechenden Wert gesetzt.<\/p>\n<p>Die beiden Hauptformulare der Projektverwaltung zur Anzeige der Detaildaten eines Projektes sowie der Tages&uuml;bersicht &uuml;ber die T&auml;tigkeiten aller Mitarbeiter sind vorwiegend zur Eingabe und weniger zur Vermittlung eines &uuml;berblicks &uuml;ber die geleisteten Arbeitsstunden geeignet. Um beispielsweise alle T&auml;tigkeiten der unterschiedlichen Phasen eines Projektes &uuml;bersichtlich anzeigen zu k&ouml;nnen, verwenden Sie einen Bericht.<\/p>\n<p><b>Aufruf des Berichts<\/b><\/p>\n<p>Der Bericht bezieht sich auf ein zuvor mit einem geeigneten Formular auszuw&auml;hlenden Projekt. Hierzu verwenden Sie das bereits zum Aufruf der anderen Ansichten erstellten Formular frmUebersicht (siehe Bild 11). Das Kombinationsfeld cboProjekteBericht dient zur Auswahl des gew&uuml;nschten Projektes. Die Optionsgruppe, in der sich das Kombinationsfeld befindet, hat derzeit nur eine Option. M&ouml;glicherweise m&ouml;chten Sie selbst noch weitere Optionen hinzuf&uuml;gen, wie z. B. die Anzeige einer mitarbeiterspezifischen Ausgabe der T&auml;tigkeiten.<\/p>\n<pre>Private Sub cmdAuswertungen_Click()\r\n    If IsNull(Me.cboProjekteBericht) Then\r\n        MsgBox \"Bitte w&auml;hlen Sie das gew&uuml;nschte \" _            & \"Projekt aus.\", vbOKOnly + _            vbExclamation, \"Projektverwaltung\"\r\n        Exit Sub\r\n    End If\r\n    DoCmd.OpenReport \"repProjekte\", acViewPreview, _        WhereCondition:=\"ProjektID = \" _\r\n        & Me.cboProjekteBericht\r\nEnd Sub<\/pre>\n<p><b>Quellcode 12<\/b><\/p>\n<p><IMG height=\"442\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic011.png\" width=\"475\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 12:  Bericht zur Ausgabe der Auswertung eines Projektes in der Vorschau<\/span><\/b><\/p>\n<p>Die Schaltfl&auml;che cmdAuswertungen dient dem Aufruf des Berichts zur Anzeige der Auswertung. F&uuml;r die Ereigniseigenschaft Beim Klicken der Schaltfl&auml;che hinterlegen Sie die Prozedur aus Quellcode 12. Die Prozedur &uuml;berpr&uuml;ft zun&auml;chst, ob der Benutzer mit dem Kombinationsfeld cboProjekteBericht ein Projekt ausgew&auml;hlt hat. Falls nicht, erscheint eine entsprechende Meldung und die Prozedur wird mit der Anweisung Exit Sub beendet.<\/p>\n<p>Falls der Benutzer ein Projekt ausgew&auml;hlt hat, &ouml;ffnet die folgende Anweisung den Bereicht repProjekte in der Vorschauansicht und &uuml;bergibt f&uuml;r den Parameter WhereCondition den Inhalt des Kombinationsfelds.<\/p>\n<p><b>Erstellen desBerichts<\/b><\/p>\n<p>Der Bericht dient zur Anzeige aller Informationen zu einem Projekt, die mit der Projektverwaltung in der vorliegenden Version verwaltet werden k&ouml;nnen.<\/p>\n<p>Dabei orientiert sich die Darstellung haupts&auml;chlich an der im Formular zur Anzeige der Projektdetails und -phasen verwendeten Struktur. Die &uuml;bergeordnete Sortierung erfolgt also nach der Projektphase. In der zweiten Ebene werden die T&auml;tigkeiten jeder einzelnen Projektphase angezeigt (siehe Bild 12).<\/p>\n<p>Als Datenherkunft dient eine Abfrage, die alle Tabellen der Projektverwaltung enth&auml;lt. Sie finden die Abfrage in den Beispieldatenbanken unter dem Namen qryRepProjekte.<\/p>\n<p>Der Bericht besteht aus den &uuml;blichen Bereichen plus zwei Gruppierungen nach den Projekten, den Projektphasen und den T&auml;tigkeiten (siehe Bild 13). Die Gruppierungen legen Sie im Dialog Gruppieren und Sortieren fest (siehe Bild 14).<\/p>\n<p>F&uuml;r die Gruppierungen ben&ouml;tigen Sie noch einige weitere Berichtsbereiche. F&uuml;r die Projekte verwenden Sie einen zus&auml;tzlichen Fu&szlig;bereich, der zur Anzeige der Gesamtsumme der in das Projekt investierten Arbeitsstunden dient.<\/p>\n<p><IMG height=\"393\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic012.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 13:  Der Bericht repProjekte in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Die einzelnen Projektphasen erhalten einen Kopf- und einen Fu&szlig;bereich zur Anzeige der Projektphasendetails sowie der Gesamtzeit des Projekts.<\/p>\n<p><IMG height=\"368\" src=\"..\/fileadmin\/_temp_\/{9834CE5C-CFF0-4710-A9F2-9AD87878B15A}\/pic013.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 14:  Gruppierungen und Sortierungen des Berichts repProjekte<\/span><\/b><\/p>\n<p>Die Informationen zu den einzelnen T&auml;tigkeiten ben&ouml;tigen keinen weiteren Bereich. Sie k&ouml;nnen im Detailbereich des Berichtes angezeigt werden und sind nach den Kriterien Datum und Startzeit sortiert.<\/p>\n<h3>Hinweis<\/h3>\n<p>In der folgenden Ausgabe von Access im Unternehmen finden Sie weitere Informationen zur Erstellung von komplexeren Berichten mit mehreren Gruppierungen, Unterberichten und unterschiedlichen Berechnungen. <\/p>\n<p>Die Projektverwaltung bietet eine unz&auml;hlige Menge an Erweiterungsm&ouml;glichkeiten, deren Beschreibung leicht ein eigenes Praxishandbuch f&uuml;llen k&ouml;nnte. Falls Sie weitere Vorschl&auml;ge und W&uuml;nsche zu Erweiterungen der Projektverwaltung haben, k&ouml;nnen Sie diese gerne an die folgende E-Mail-Adresse senden:<\/p>\n<p>minhorst@planet-access.de<\/p>\n<p>Bei entsprechender Resonanz folgt in einer der n&auml;chsten Ausgaben ein weiterer Teil der Projektverwaltung.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Projektverwaltung_2_00.mdb<\/p>\n<p>Projektverwaltung_2_97.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/046961B7-4D9D-4C23-B332-B73748836AEC\/aiu_84.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Management von Projekten ist eine recht komplexe Aufgabe &#8211; so komplex, dass Sie in der vorliegenden Ausgabe von Access im Unternehmen den zweiten Teil zu der Projektverwaltung aus Ausgabe 2\/2002 finden. Die Projektverwaltung erh&auml;lt eine neue Funktion zur Eingabe und Auswertung der f&uuml;r die einzelnen Projekte aufgewendeten menschlichen Ressourcen &#8211; sprich: Welche Mitarbeiter haben eigentlich wie viel Zeit mit welchen Projekten verbracht Diese und weitere Informationen k&ouml;nnen Sie mit der hier vorgestellten Erweiterung der bestehenden Projektverwaltung &uuml;bersichtlich in Form geeigneter Berichte ausgeben.<\/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":[662002,66052002,44000027],"tags":[],"class_list":["post-55000084","post","type-post","status-publish","format-standard","hentry","category-662002","category-66052002","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>Projektverwaltung mit Access, Teil 2 - 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\/Projektverwaltung_mit_Access_Teil_2\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Projektverwaltung mit Access, Teil 2\" \/>\n<meta property=\"og:description\" content=\"Das Management von Projekten ist eine recht komplexe Aufgabe - so komplex, dass Sie in der vorliegenden Ausgabe von Access im Unternehmen den zweiten Teil zu der Projektverwaltung aus Ausgabe 2\/2002 finden. Die Projektverwaltung erh&auml;lt eine neue Funktion zur Eingabe und Auswertung der f&uuml;r die einzelnen Projekte aufgewendeten menschlichen Ressourcen - sprich: Welche Mitarbeiter haben eigentlich wie viel Zeit mit welchen Projekten verbracht Diese und weitere Informationen k&ouml;nnen Sie mit der hier vorgestellten Erweiterung der bestehenden Projektverwaltung &uuml;bersichtlich in Form geeigneter Berichte ausgeben.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-10T20:17:30+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8\" \/>\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=\"22\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Projektverwaltung mit Access, Teil 2\",\"datePublished\":\"2021-02-10T20:17:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/\"},\"wordCount\":3834,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/445e13e9c99a43f088e0550d2a1294d8\",\"articleSection\":[\"2002\",\"5\\\/2002\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/\",\"name\":\"Projektverwaltung mit Access, Teil 2 - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/445e13e9c99a43f088e0550d2a1294d8\",\"datePublished\":\"2021-02-10T20:17:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/445e13e9c99a43f088e0550d2a1294d8\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/445e13e9c99a43f088e0550d2a1294d8\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Projektverwaltung_mit_Access_Teil_2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projektverwaltung mit Access, Teil 2\"}]},{\"@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":"Projektverwaltung mit Access, Teil 2 - 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\/Projektverwaltung_mit_Access_Teil_2\/","og_locale":"de_DE","og_type":"article","og_title":"Projektverwaltung mit Access, Teil 2","og_description":"Das Management von Projekten ist eine recht komplexe Aufgabe - so komplex, dass Sie in der vorliegenden Ausgabe von Access im Unternehmen den zweiten Teil zu der Projektverwaltung aus Ausgabe 2\/2002 finden. Die Projektverwaltung erh&auml;lt eine neue Funktion zur Eingabe und Auswertung der f&uuml;r die einzelnen Projekte aufgewendeten menschlichen Ressourcen - sprich: Welche Mitarbeiter haben eigentlich wie viel Zeit mit welchen Projekten verbracht Diese und weitere Informationen k&ouml;nnen Sie mit der hier vorgestellten Erweiterung der bestehenden Projektverwaltung &uuml;bersichtlich in Form geeigneter Berichte ausgeben.","og_url":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-10T20:17:30+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"22\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Projektverwaltung mit Access, Teil 2","datePublished":"2021-02-10T20:17:30+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/"},"wordCount":3834,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8","articleSection":["2002","5\/2002","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/","url":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/","name":"Projektverwaltung mit Access, Teil 2 - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8","datePublished":"2021-02-10T20:17:30+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/445e13e9c99a43f088e0550d2a1294d8"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Projektverwaltung_mit_Access_Teil_2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Projektverwaltung mit Access, Teil 2"}]},{"@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\/55000084","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=55000084"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000084\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}