{"id":55000829,"date":"2012-04-01T00:00:00","date_gmt":"2020-05-22T21:53:56","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=829"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Aufgabenverwaltung_per_Berichtsansicht","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/","title":{"rendered":"Aufgabenverwaltung per Berichtsansicht"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Mit Access 2007 hat Microsoft die etwas unscheinbare Berichtsansicht als weitere Ansicht f&uuml;r Berichte eingef&uuml;hrt. Auch wenn diese Ansicht nicht direkt zur Dateneingabe verwendet werden kann, ist sie dennoch ein m&auml;chtiges Werkzeug &#8211; vor allem, wenn es um die Darstellung hierarchischer Daten geht. Der vorliegende Beitrag zeigt, wie Sie damit interaktiv Projekte, Aufgaben und T&auml;tigkeiten verwalten und sogar noch die Arbeitszeit protokollieren.<\/b><\/p>\n<p><b>Die L&ouml;sung<\/b><\/p>\n<p>Die fertige L&ouml;sung liefert die wesentlichen Funktionen in Form eines Access-Berichts in der Berichtsansicht. Diese Ansicht ist eine Mischung aus der Berichtsvorschau und einem Formular in der Endlosansicht.<\/p>\n<p>Von der Berichtsvorschau erbt die Berichtsansicht die M&ouml;glichkeit, durch entsprechende Gruppierungen Daten hierarchisch anzeigen zu k&ouml;nnen. Die Formulare steuern die Interaktivit&auml;t bei: Zwar k&ouml;nnen Sie in der Berichtsvorschau keine Textfelder ausf&uuml;llen oder Daten aus Kombinationsfeldern ausw&auml;hlen, daf&uuml;r lassen sich aber Schaltfl&auml;chen und andere Steuerelemente mit einer <b>Beim Klicken<\/b>-Ereignisprozedur versehen. Wie aber sollen Sie in der Berichtsansicht Daten verwalten, wenn doch die Eingabe nicht m&ouml;glich ist Kein Problem: &Uuml;ber das <b>Beim Klicken<\/b>-Ereignis &ouml;ffnen Sie zum Eingeben und Bearbeiten von Daten einfach entsprechende Formulare.<\/p>\n<p>Die fertige L&ouml;sung dieses Beitrags sieht &uuml;brigens wie in Bild 1 aus. Im unteren Bereich zur Darstellung der Daten finden Sie die hierarchische Anzeige von Projekten, Aufgaben und T&auml;tigkeiten. Zus&auml;tzlich erscheinen dort Schaltfl&auml;chen, mit denen sich neue Elemente anlegen und vorhandene bearbeiten oder l&ouml;schen lassen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Die Aufgabenverwaltung im Einsatz<\/span><\/b><\/p>\n<p>Ganz rechts finden sich schlie&szlig;lich noch Symbole, welche die aktuell in Bearbeitung befindliche T&auml;tigkeit markieren. Im oberen Teil zeigt das Formular eine Schaltfl&auml;che <b>Projekt ausw&auml;hlen <\/b>an, mit der Sie einen Dialog zum Ein- und Ausblenden aller in der Datenbank gespeicherten Projekte anzeigen k&ouml;nnen. <\/p>\n<p>Dieses Formular wird als modaler Dialog angezeigt und zeigt alle aktuell im Bericht dargestellten Projekte schwarz hinterlegt an (s. Bild 2). Durch einfaches Anklicken werden die Eintr&auml;ge sowohl im Listenfeld als auch in der Berichtsansicht ein- und ausblendet.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Ein- und Ausblenden der aktuell in Arbeit befindlichen Projekte<\/span><\/b><\/p>\n<p>Das Kontrollk&auml;stchen <b>Erledigte T&auml;tigkeiten anzeigen <\/b>blendet eine weitere Ebene ein, die zu jeder T&auml;tigkeit ein Kontrollk&auml;stchen anzeigt &#8211; entweder mit oder ohne Haken (s. Bild 3). Durch einen Klick auf eine dieser Schaltfl&auml;chen aktivieren beziehungsweise deaktivieren Sie eine T&auml;tigkeit. Ist die Option <b>Erledigte T&auml;tigkeiten anzeigen <\/b>nicht aktiviert, werden alle abgehakten T&auml;tigkeiten ausgeblendet.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Anzeige erledigter T&auml;tigkeiten<\/span><\/b><\/p>\n<p>Die &uuml;brigen Schaltfl&auml;chen dienen dem Anlegen, Bearbeiten und L&ouml;schen von Elementen. In der obersten Ebene befindet sich nur eine Schaltfl&auml;che, mit der Sie ein Projekt anlegen k&ouml;nnen. Dies &ouml;ffnet den Dialog aus Bild 4. Hier tragen Sie einfach nur den Namen des Projekts ein und speichern diesen mit einem Klick auf die <b>OK<\/b>-Schaltfl&auml;che. Der gleiche Dialog erscheint &uuml;brigens, wenn Sie auf das <b>Bearbeiten<\/b>-Symbol eines bereits vorhandenen Projekts klicken. Damit k&ouml;nnen Sie dann die Bezeichnung eines Projekts &auml;ndern.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Dialog zum Anlegen eines neuen Projekts<\/span><\/b><\/p>\n<p>Eine Ebene darunter befinden sich die Aufgaben eines Projekts. Diese legen Sie im Dialog aus Bild 5 an, den Sie f&uuml;r ein neues Projekt mit einem Klick auf die entsprechende Schaltfl&auml;che anzeigen. Auch dieser Dialog eignet sich zum Bearbeiten bestehender Elemente. Im Gegensatz zum Formular zum Anzeigen der Projektdetails liefert dieser noch ein weiteres Steuerelement, mit dem Sie die Aufgabe einem Projekt zuweisen k&ouml;nnen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Anlegen und Bearbeiten von Aufgaben<\/span><\/b><\/p>\n<p>Fehlen noch die eigentlichen T&auml;tigkeiten: Auch diesen Dialog haben wir relativ einfach gehalten. Er erlaubt die Eingabe einer T&auml;tigkeitsbezeichnung und die Auswahl der Aufgabe, zu der die T&auml;tigkeit geh&ouml;rt (s. Bild 6).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Mit diesem Dialog legen Sie T&auml;tigkeiten an.<\/span><\/b><\/p>\n<p>F&uuml;r alle drei Dialoge gilt: Wir haben sie so einfach wie m&ouml;glich gehalten. Lassen Sie Ihrer Fantasie freien Lauf, wenn Sie eigene Eigenschaften zu den zugrunde liegenden Tabellen und zu den entsprechenden Formularen hinzuf&uuml;gen.<\/p>\n<p><b>Zeiterfassung<\/b><\/p>\n<p>Ein weiteres Feature ist die Zeiterfassung. Diese erfolgt auf denkbar einfachem Wege: Sie klicken einfach auf die rote Stopp-Schaltfl&auml;che, woraufhin sich diese in ein Play-Symbol umwandelt. Dadurch wird auch die Stoppuhr oben im Bericht gestartet und eine entsprechende Aufzeichnung der Startzeit der T&auml;tigkeit durchgef&uuml;hrt.<\/p>\n<p>Klicken Sie anschlie&szlig;end erneut auf die Play-Schaltfl&auml;che, &auml;ndert sich das Symbol wieder und die Endzeit dieser T&auml;tigkeit wird in die entsprechende Tabelle eingetragen. Ein Klick auf das Stopp-Symbol einer anderen T&auml;tigkeit startet die Aufzeichnung eines Zeitraums f&uuml;r diese T&auml;tigkeit und beendet die zuvor markierte.<\/p>\n<p><b>Datenmodell<\/b><\/p>\n<p>Das Datenmodell ist relativ einfach gehalten. Die Projekte, Aufgaben und T&auml;tigkeiten werden in den drei Tabellen <b>tblProjekte<\/b>, <b>tblAufgaben <\/b>und <b>tblTaetigkeiten <\/b>erfasst, deren Feldlisten und Beziehungen Sie Bild 7 entnehmen k&ouml;nnen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic007.png\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Datenmodell der L&ouml;sung<\/span><\/b><\/p>\n<p>Alle Beziehungen sind mit referenzieller Integrit&auml;t und L&ouml;schweitergabe definiert. Die Tabelle <b>tblAufgaben <\/b>enth&auml;lt ein Fremdschl&uuml;sselfeld namens <b>ProjektID<\/b>, mit dem Sie eine Aufgabe einem Projekt zuordnen k&ouml;nnen.<\/p>\n<p>Die Tabelle <b>tblTaetigkeiten <\/b>wird entsprechend &uuml;ber das Feld <b>AufgabeID <\/b>mit der Tabelle <b>tblAufgaben <\/b>verkn&uuml;pft.<\/p>\n<p>Neben dem Prim&auml;rschl&uuml;sselfeld, dem Feld mit der Bezeichnung des jeweiligen Elements und dem Fremdschl&uuml;sselfeld enthalten die Tabellen noch einige wenige weitere Felder, von denen einige nur als Vorbereitung f&uuml;r weitere Ausbaustufen dienen. Interessant sind in der mit diesem Beitrag ver&ouml;ffentlichten Beispieldatenbank nur zwei Felder:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Das Feld <b>ProjektSichtbar <\/b>der Tabelle <b>tblProjekte <\/b>speichert, ob ein Objekt beim &Ouml;ffnen des Berichts <b>rptAufgaben <\/b>eingeblendet werden soll oder nicht.<\/li>\n<li class=\"aufz-hlung\">Das Feld <b>TaetigkeitAktiv <\/b>der Tabelle <b>tblTaetigkeiten <\/b>speichert, ob eine T&auml;tigkeit im Bericht als erledigt markiert wurde. &auml;hnliche Felder sind auch in den Tabellen <b>tblProjekte <\/b>und <b>tblAufgaben <\/b>vorhanden, aus Gr&uuml;nden der &Uuml;bersichtlichkeit werden diese jedoch in der Beispieldatenbank nicht verwendet.<\/li>\n<\/ul>\n<p>Diese beiden Felder sowie die &uuml;brigen <b>Ja\/Nein<\/b>-Felder der drei Tabellen <b>tblProjekte<\/b>, <b>tblAufgaben <\/b>und <b>tblTaetigkeiten <\/b>sind mit dem Standardwert <b>Wahr <\/b>ausgestattet.<\/p>\n<p>Generell l&auml;sst sich zu diesen drei Tabellen sagen, dass Sie die Hierarchie beliebig &auml;ndern, umbenennen oder erweitern k&ouml;nnen, wenn sie sich nicht an Ihre eigene Arbeitsweise anpassen l&auml;sst.<\/p>\n<p>Es gibt noch zwei weitere Tabellen. Die erste hei&szlig;t <b>tblOptionen <\/b>und speichert einige Einstellungen des Hauptberichts, damit der Benutzer diese beim n&auml;chsten Aufruf nicht erneut vornehmen muss. Dabei handelt es sich um die aktuell aktive T&auml;tigkeit sowie ein <b>Ja\/Nein<\/b>-Feld namens <b>ErledigteTaetigkeitenAnzeigen<\/b>, das angibt, ob abgehakte T&auml;tigkeiten angezeigt werden sollen (s. Bild 8).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic009.png\" alt=\"pic009.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9: Protokollierung von Arbeitszeiten<\/span><\/b><\/p>\n<p>Die Tabelle <b>tblArbeitszeiten<\/b> schlie&szlig;lich speichert bei der Arbeit mit dem Hauptbericht aufgezeichnete Arbeitszeiten f&uuml;r die einzelnen T&auml;tigkeiten. Dazu sind nur drei Felder n&ouml;tig: die Startzeit, die Endzeit sowie ein Verweis auf die T&auml;tigkeit, die w&auml;hrend des angegebenen Zeitraums durchgef&uuml;hrt wurde (s. Bild 9).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Tabelle zum Speichern von Anwendungsoptionen<\/span><\/b><\/p>\n<p><b>Der Bericht rptAufgaben<\/b><\/p>\n<p>Der Hauptbericht dieser Anwendung, der in der Berichtsansicht angezeigt wird und zur Steuerung s&auml;mtlicher Funktionen der Anwendung dient, zeigt viele M&ouml;glichkeiten der Berichtsansicht auf.<\/p>\n<p>Die Datenherkunft beim &Ouml;ffnen des Berichts sieht wie in Bild 10 aus. Sie enth&auml;lt fast alle Felder der drei Tabellen <b>tblProjekte<\/b>, <b>tblAufgaben <\/b>und <b>tblTaetigkeiten <\/b>(allein die Fremdschl&uuml;sselfelder wurden weggelassen, da deren Werte ja bereits in den Prim&auml;rschl&uuml;sselfeldern der entsprechenden referenzierten Tabellen vorliegen).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic011.png\" alt=\"pic011.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10: Datenherkunft des Berichts rptAufgaben<\/span><\/b><\/p>\n<p>Dabei wurde f&uuml;r das Feld <b>ProjektSichtbar <\/b>als Bedingung der Wert <b>True <\/b>festgelegt, damit nur ausgew&auml;hlte Projekte angezeigt werden.<\/p>\n<p>Das Besondere an dieser Abfrage ist, dass die Eigenschaften der Beziehungen zwischen den Tabellen so festgelegt wurden, dass Projektdatens&auml;tze auch angezeigt werden, wenn es keine passenden Aufgaben-Datens&auml;tze gibt. Auf die gleiche Weise sollen Projekte mit Aufgaben angezeigt werden, f&uuml;r die es keine T&auml;tigkeits-Datens&auml;tze gibt.<\/p>\n<p>Der Bericht enth&auml;lt zwei Gruppierungen nach den Feldern <b>ProjektID <\/b>und <b>AufgabeID<\/b>, die jeweils mit Gruppenk&ouml;pfen ausgestattet sind.<\/p>\n<p>Diese legen Sie unter Access 2007 und j&uuml;nger im Bereich <b>Gruppieren, Sortieren und Summe <\/b>im Fu&szlig; des Access-Fensters fest, den Sie mit dem Ribbon-Eintrag <b>Entwurf|Gruppierung und Summen|Gruppieren und Sortieren <\/b>einblenden (s. Bild 11).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic012.png\" alt=\"pic012.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11: Anlegen der Gruppierungen im Bericht rptAufgaben<\/span><\/b><\/p>\n<p>Im ersten Schritt f&uuml;gen Sie au&szlig;erdem bereits die Felder <b>ProjektID<\/b>, <b>Projekt<\/b>, <b>AufgabeID<\/b>, <b>Aufgabe<\/b>, <b>TaetigkeitID <\/b>und <b>Taetigkeit <\/b>der Datenherkunft zu den einzelnen Bereichen wie in der Abbildung hinzu.<\/p>\n<p>Die Beschriftungsfelder k&ouml;nnen Sie gleich wieder l&ouml;schen und die Prim&auml;rschl&uuml;sselfelder mit dem Wert <b>Nein <\/b>f&uuml;r die Eigenschaft <b>Sichtbar <\/b>ausblenden &#8211; diese Felder dienen nur als Bedingungen f&uuml;r die Anzeige verschiedener weiterer Elemente. F&uuml;r eine bessere Optik verschieben Sie die Felder <b>Projekt<\/b>, <b>Aufgabe <\/b>und <b>Taetigkeit <\/b>nun an den oberen Rand der jeweiligen Bereiche, verkleinern die H&ouml;he der Bereiche und r&uuml;cken die Felder entsprechend der Hierarchie ein wenig ein.<\/p>\n<p>Au&szlig;erdem versehen Sie die Textfelder mit unterschiedlichen Textgr&ouml;&szlig;en und gestalten diese teilweise in fetter Schrift &#8211; etwa so wie in Bild 12.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic013.png\" alt=\"pic013.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 12: Anordnen und Layouten der Steuerelemente<\/span><\/b><\/p>\n<p>Hier nicht sichtbar, f&uuml;r eine bessere Optik aber dennoch sinnvoll: Stellen Sie die Eigenschaft <b>Rahmenart <\/b>der Textfelder auf <b>Transparent <\/b>ein und passen Sie die Eigenschaft <b>Alternative Hintergrundfarbe <\/b>dem Wert f&uuml;r die Eigenschaft <b>Hintergrundfarbe <\/b>an (der Hintergrund soll durchg&auml;ngig wei&szlig; sein).<\/p>\n<p>Das Ergebnis ist ein bereits ansprechend aussehender Bericht wie in Bild 13.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic014.png\" alt=\"pic014.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 13: Bericht noch ohne Steuerelemente<\/span><\/b><\/p>\n<p><b>Schaltfl&auml;chen<\/b><\/p>\n<p>F&uuml;r die Darstellung der Schaltfl&auml;chen halten einige Tricks her. Erstens einmal enthalten die Gruppierungen und der Detailbereich &uuml;berhaupt keine Schaltfl&auml;chen, sondern lediglich Bildsteuerelemente, die beim Anklicken das <b>Beim Klicken<\/b>-Ereignis ausl&ouml;sen.<\/p>\n<p>Warum das Nun: Die Steuerelemente sollen je nach dem Inhalt des Datensatzes gegebenenfalls ausgeblendet werden und teilweise sogar verschiedene Icons anzeigen. Dies ist mit herk&ouml;mmlichen Schaltfl&auml;chen nicht m&ouml;glich: Diese weisen immer f&uuml;r alle Datens&auml;tze die gleichen Eigenschaften auf und es werden immer die zuletzt per VBA zugewiesenen Werte f&uuml;r die Eigenschaften verwendet. Es gibt also keine M&ouml;glichkeit, einer Schaltfl&auml;che einmal ein Play-Symbol und einmal ein Stopp-Symbol zuzuweisen, wie es etwa zur Markierung der aktuellen T&auml;tigkeit n&ouml;tig ist.<\/p>\n<p>Seit Access 2007 jedoch bieten Bildsteuerelemente die M&ouml;glichkeit, per Steuerelementinhalt ein in einem Anlagefeld befindliches Bild zu referenzieren. Mit Access 2010 wurde dies noch weiter vereinfacht: Sie brauchen nur noch den Namen eines in einer separaten Tabelle namens <b>MSysResources <\/b>gespeicherten Bildes anzugeben.<\/p>\n<p>Daher sind f&uuml;r Access 2007 und Access 2010 leider verschiedene Techniken zur Anzeige der Bilder n&ouml;tig, die im Detail im Beitrag <b>Bedingte Schaltfl&auml;chen <\/b>(<b>www.access-im-unternehmen.de\/824<\/b>) beschrieben werden. Wir beschreiben im Folgenden die unter Access 2010 durchgef&uuml;hrten Schritte, die Version f&uuml;r Access 2007 finden Sie als Download zu diesem Beitrag.<\/p>\n<p><b>Schaltfl&auml;chen anlegen<\/b><\/p>\n<p>Grunds&auml;tzlich sind die Schaltfl&auml;chen zum Anlegen, Bearbeiten und L&ouml;schen von Projekten, Aufgaben und T&auml;tigkeiten ja f&uuml;r jedes entsprechende Objekt immer eingeblendet. Die &uuml;brigen Bilder jedoch sollen in Abh&auml;ngigkeit von bestimmten Feldinhalten mit verschiedenen Icons best&uuml;ckt werden:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Play-Icon f&uuml;r die aktuell bearbeitete T&auml;tigkeit, Stopp f&uuml;r alle anderen<\/li>\n<li class=\"aufz-hlung\">Kontrollk&auml;stchen-Icon mit und ohne Haken f&uuml;r erledigte und nicht erledigte T&auml;tigkeiten<\/li>\n<\/ul>\n<p>Beginnen wir mit der Schaltfl&auml;che zum Anlegen eines neuen Projekts. Diese landet im Prozedurkopf. Wenn Sie mit eigenen Icons arbeiten m&ouml;chten, f&uuml;gen Sie dieses nun wie im obigen erw&auml;hnten Beitrag beschrieben zur Datenbank hinzu.<\/p>\n<p>Anschlie&szlig;end k&ouml;nnen Sie das Bild aufgrund seines Namens in der Tabelle <b>MSysResources <\/b>f&uuml;r die Eigenschaft <b>Bild <\/b>des Bild-Steuerelements ausw&auml;hlen. Nennen Sie das Bild-Steuerelement <b>picNeuesProjekt<\/b>, stellen Sie die Eigenschaft <b>Gr&ouml;&szlig;enanpassung <\/b>f&uuml;r dieses und alle im Folgenden angelegten Bildsteuerelemente auf <b>Abschneiden <\/b>ein und nennen Sie das Steuerelement <b>picNeuesProjekt<\/b>. Danach hinterlegen Sie f&uuml;r die Ereigniseigenschaft <b>Beim Klicken <\/b>die folgende Ereignisprozedur:<\/p>\n<pre>Private Sub picNeuesProjekt_Click()\r\n    DoCmd.OpenForm &quot;frmProjektdetails&quot;, Datamode:=acFormAdd, WindowMode:=acDialog\r\n    Aktualisieren\r\nEnd Sub<\/pre>\n<p>Diese Prozedur &ouml;ffnet das sp&auml;ter beschriebene Formular <b>frmProjektdetails <\/b>zum Eingeben eines neuen Projektdatensatzes. Anschlie&szlig;end ruft sie die Routine <b>Aktualisieren <\/b>auf, die so aussieht:<\/p>\n<pre>Private Sub Aktualisieren()\r\n    Me.Requery\r\n    If IstFormularGeoeffnet(&quot;frmProjektauswahl&quot;) Then\r\n        Forms!frmProjektauswahl!lstProjekte.Requery\r\n    End If\r\nEnd Sub<\/pre>\n<p><!--30percent--><\/p>\n<p>Dies aktualisiert nach dem Schlie&szlig;en des Formulars zur Eingabe der Projektbezeichnung den Bericht in der Berichtsansicht. Au&szlig;erdem wird das Listenfeld des Formulars zum Ein- und Ausblenden der Projekte aktualisiert, sofern dieses aktuell ge&ouml;ffnet ist &#8211; auch dieses Formular beschreiben wir weiter unten.<\/p>\n<p>F&uuml;gen Sie nun auf die oben beschriebene Weise drei Bild-Steuerelemente zum Gruppenkopf <b>ProjektID <\/b>hinzu und nennen Sie diese <b>picAufgabeAnlegen<\/b>, <b>picProjektBearbeiten <\/b>und <b>picProjektLoeschen<\/b> (s. Bild 14).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic016.png\" alt=\"pic016.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 14: Anlegen der drei Bild-Steuerelemente auf Projektebene<\/span><\/b><\/p>\n<p>Das Bild-Steuerelement <b>picAufgabeAnlegen <\/b>f&uuml;hrt beim Anklicken die folgende Prozedur aus:<\/p>\n<pre>Private Sub picAufgabeAnlegen_Click()\r\n    DoCmd.OpenForm &quot;frmAufgabendetails&quot;, Datamode:=acFormAdd, OpenArgs:=Me!ProjektID, WindowMode:=acDialog\r\n    Aktualisieren\r\nEnd Sub<\/pre>\n<p>Dabei wird das Formular <b>frmAufgabendetails <\/b>zum Anlegen eines neuen Datensatzes der Tabelle <b>tblAufgaben <\/b>ge&ouml;ffnet. Als zus&auml;tzlicher Parameter wird mit <b>OpenArgs <\/b>die ID des &uuml;bergeordneten Projekts &uuml;bergeben. Diese <b>ProjektID <\/b>wird als Wert des Fremdschl&uuml;sselfeldes f&uuml;r den neuen Datensatz der Tabelle <b>tblAufgaben <\/b>ben&ouml;tigt.<\/p>\n<p>Zum Bearbeiten eines Projekts klickt der Benutzer auf das Bild-Steuerelement <b>picProjektBearbeiten<\/b>.<\/p>\n<p>Dieses &ouml;ffnet das bereits zum Anlegen des Projekts verwendete Formular <b>frmProjektdetails <\/b>und filtert dieses nach der <b>ProjektID <\/b>des Datensatzes, auf dessen Bild-Steuerelement der Benutzer geklickt hat:<\/p>\n<pre>Private Sub picProjektBearbeiten_Click()\r\n    DoCmd.OpenForm &quot;frmProjektdetails&quot;, Datamode:=acFormEdit, WhereCondition:=&quot;ProjektID = &quot; _\r\n    &amp; Me!ProjektID, WindowMode:=acDialog\r\n    Aktualisieren\r\nEnd Sub<\/pre>\n<p>Das L&ouml;schen eines Projekts erfolgt schlie&szlig;lich &uuml;ber die Prozedur aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-61-anchor\">Listing 1<\/a><\/span>, die durch einen Klick auf das Bild-Steuerelement <b>picProjektLoeschen<\/b> ausgel&ouml;st wird.<\/p>\n<p class=\"listingueberschrift\">Listing 1: L&ouml;schen eines Projekts per Klick auf das Bildsteuerelement picProjektLoeschen<\/p>\n<pre>Private Sub picProjektLoeschen_Click()\r\n    Dim db As DAO.Database\r\n    If MsgBox(&quot;Projekt wirklich l&ouml;schen&quot;, vbOKCancel, &quot;Projekt l&ouml;schen&quot;) = vbOK Then\r\n        Set db = CurrentDb\r\n        db.Execute &quot;DELETE FROM tblProjekte WHERE ProjektID = &quot; &amp; Me!ProjektID\r\n        Aktualisieren\r\n        Set db = Nothing\r\n    End If\r\nEnd Sub<\/pre>\n<p>Diese Prozedur fragt noch kurz nach, ob das Projekt wirklich gel&ouml;scht werden soll. Ist dies der Fall, l&ouml;scht die Prozedur das Projekt und aktualisiert die Steuerelemente durch einen Aufruf der <b>Aktualisieren<\/b>-Prozedur.<\/p>\n<p><b>Schaltfl&auml;chen f&uuml;r die Aufgabe anlegen<\/b><\/p>\n<p>Die drei als Schaltfl&auml;chen missbrauchten Bild-Steuerelemente f&uuml;r die Ebene, die nach dem Feld <b>AufgabeID <\/b>gruppiert ist, sehen ganz &auml;hnlich aus (s. Bild 15). Allerdings hei&szlig;en sie <b>picTaetigkeitAnlegen<\/b>, <b>picAufgabeBearbeiten <\/b>und <b>picAufgabeLoeschen<\/b>.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic017.png\" alt=\"pic017.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 15: Anlegen der drei Bild-Steuerelemente auf Aufgaben<\/span><\/b><\/p>\n<p>Das Bildsteuerelement <b>picTaetigkeitAnlegen <\/b>l&ouml;st die folgende Prozedur aus:<\/p>\n<pre>Private Sub picTaetigkeitAnlegen_Click()\r\n    If Not IsNull(Me!AufgabeID) Then\r\n        DoCmd.OpenForm &quot;frmTaetigkeitdetails&quot;, Datamode:=acFormAdd, WindowMode:=acDialog, OpenArgs:=Me!AufgabeID\r\n        Aktualisieren\r\n    End If\r\nEnd Sub<\/pre>\n<p>Diese &ouml;ffnet das Formular <b>frmTaetigkeitsdetails <\/b>als modalen Dialog zur Eingabe der Bezeichnung der T&auml;tigkeit. Nach dem Schlie&szlig;en des Formulars aktualisiert die Prozedur <b>Aktualisieren <\/b>den Bericht. Das Bearbeiten einer Aufgabe wird durch einen Klick auf das Bild-Steuerelement <b>picAufgabeBearbeiten <\/b>initiiert und verl&auml;uft &auml;hnlich wie das Bearbeiten eines Projekts:<\/p>\n<pre>Private Sub picAufgabeBearbeiten_Click()\r\n    If Not IsNull(Me!AufgabeID) Then\r\n        DoCmd.OpenForm &quot;frmAufgabendetails&quot;, Datamode:=acFormEdit, WhereCondition:=&quot;AufgabeID = &quot; _\r\n        &amp; Me!AufgabeID, WindowMode:=acDialog\r\n        Aktualisieren\r\n    End If\r\nEnd Sub<\/pre>\n<p>Schlie&szlig;lich sorgt das Anklicken des Bild-Steuerelements <b>picAufgabeLoeschen <\/b>f&uuml;r das Entfernen einer Aufgabe &#8211; nat&uuml;rlich nicht ohne R&uuml;ckfrage, ob diese auch tats&auml;chlich gel&ouml;scht werden soll (siehe <span class=\"verweis-ohneumbruch\"><a href=\"#anker-63-anchor\">Listing 2<\/a><\/span>).<\/p>\n<p class=\"listingueberschrift\">Listing 2: L&ouml;schen einer Aufgabe per Klick auf das Bildsteuerelement picAufgabeLoeschen<\/p>\n<pre>Private Sub picAufgabeLoeschen_Click()\r\n    Dim db As DAO.Database\r\n    If Not IsNull(Me!AufgabeID) Then\r\n        If MsgBox(&quot;Aufgabe wirklich l&ouml;schen&quot;, vbOKCancel, &quot;Aufgabe l&ouml;schen&quot;) = vbOK Then\r\n            Set db = CurrentDb\r\n            db.Execute &quot;DELETE FROM tblAufgaben WHERE AufgabeID = &quot; &amp; Me!AufgabeID\r\n            Aktualisieren\r\n            Set db = Nothing\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Bilder ohne Datensatz<\/b><\/p>\n<p>Wenn Sie den Bericht nun in der Berichtsansicht &ouml;ffnen, gibt es leider einen unerwarteten Effekt: Wenn sich unter einem Projekt noch keine Aufgaben befinden, zeigt der Bericht dennoch die drei Schaltfl&auml;chen an (s. Bild 16).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic018.png\" alt=\"pic018.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 16: Bild-Steuerelemente, wo keine Datens&auml;tze sind<\/span><\/b><\/p>\n<p>Das ist erstens unn&ouml;tig und zweitens verwirrt es den Anwender. Der Grund f&uuml;r die Anzeige dieser Steuerelemente ist, dass die Berichtsansicht wie &uuml;bliche Formulare einen neuen, leeren Datensatz anzeigt &#8211; was aber nat&uuml;rlich nichts bringt, da man dort ohnehin nicht direkt einen neuen Datensatz anzeigen kann.<\/p>\n<p>Auch wenn die Berichtsansicht-Forschung noch nicht am Ende angelangt ist: Hier hilft anscheinend nur das Ersetzen der drei Bilder durch komplett wei&szlig;e Icons.<\/p>\n<p>Also erstellen Sie ein wei&szlig;es Icon mit der Gr&ouml;&szlig;e der &uuml;brigen Icons (hier 24 x 24 Pixel) und f&uuml;gen es unter dem Namen <b>white.png <\/b>zur Liste der Icons der Datenbankanwendung hinzu.<\/p>\n<p>Wie aber soll dieses nun statt der &uuml;brigen Icons angezeigt werden Dank der M&ouml;glichkeiten von Access 2010 l&auml;sst sich dies recht leicht l&ouml;sen. Sie k&ouml;nnen ja f&uuml;r die Eigenschaft <b>Steuerelementinhalt <\/b>den Namen eines der in der Tabelle <b>MSysResources <\/b>gespeicherten Icons angeben.<\/p>\n<p>Es gibt keine Regel, die untersagt, dass dieser Name dort hartcodiert eingetragen werden muss. Warum also nicht einfach eine Funktion verwenden, die pr&uuml;ft, ob das Prim&auml;rschl&uuml;sselfeld des aktuellen Datensatzes Null ist, und in diesem Falle das Icon mit der Bezeichnung <b>white <\/b>anzeigen &#8211; und im anderen Falle das tats&auml;chlich anzuzeigende Icon Der folgende Ausdruck bewirkt genau das:<\/p>\n<pre>=Wenn(IstNull([AufgabeID]);&quot;white&quot;;&quot;breakpoint_add&quot;)<\/pre>\n<p>Er pr&uuml;ft, ob <b>AufgabeID <\/b>leer ist, und gibt in diesem Fall den Wert <b>white <\/b>zur&uuml;ck, sonst <b>breakpoint_add <\/b>(der Name der tats&auml;chlich verwendeten Bilddatei).<\/p>\n<p>Damit Sie den Unterschied erkennen, haben wir die Eigenschaft <b>Rahmenart<\/b> der drei betroffenen Bild-Steuerelemente auf <b>Durchgezogen <\/b>eingestellt (s. Bild 17). Wo kein Datensatz vorhanden ist, bleiben die Rahmen leer.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic019.png\" alt=\"pic019.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 17: Nun werden die Bilder nur angezeigt, wenn tats&auml;chlich ein Datensatz vorhanden ist. Anderenfalls erscheint ein wei&szlig;es Icon.<\/span><\/b><\/p>\n<p><b>Schaltfl&auml;chen f&uuml;r die T&auml;tigkeiten<\/b><\/p>\n<p>Da unterhalb der T&auml;tigkeiten keine weiteren Elemente angelegt werden sollen, ben&ouml;tigen Sie hier nur noch zwei Schaltfl&auml;chen zum Bearbeiten und L&ouml;schen der aktuellen T&auml;tigkeit.<\/p>\n<p>Die beiden Bild-Steuerelemente hei&szlig;en <b>picTaetigkeitBearbeiten <\/b>und <b>picTaetigkeitLoeschen<\/b>. Ein Klick auf das Bild-Steuerelement zum Bearbeiten einer T&auml;tigkeit l&ouml;st die folgende Prozedur aus:<\/p>\n<pre>Private Sub picTaetigkeitBearbeiten_Click()\r\n    If Not IsNull(Me!TaetigkeitID) Then\r\n        DoCmd.OpenForm &quot;frmTaetigkeitdetails&quot;, Datamode:=acFormEdit, WhereCondition:=&quot;TaetigkeitID = &quot; _\r\n            &amp; Me!TaetigkeitID, WindowMode:=acDialog\r\n        Aktualisieren\r\n    End If\r\nEnd Sub<\/pre>\n<p>Damit &ouml;ffnen Sie das Formular <b>frmTaetigkeitsdetails <\/b>(siehe unten) als modalen Dialog und zeigen darin den aktuellen Datensatz der Tabelle <b>tblTaetigkeiten <\/b>an. Die Schaltfl&auml;che beziehungsweise das Bild-Steuerelement zum L&ouml;schen einer T&auml;tigkeit wiederum l&ouml;st die Prozedur aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-66-anchor\">Listing 3<\/a><\/span> aus.<\/p>\n<p class=\"listingueberschrift\">Listing 3: L&ouml;schen einer T&auml;tigkeit per Klick auf das Bildsteuerelement picTaetigkeitLoeschen<\/p>\n<pre>Private Sub picTaetigkeitLoeschen_Click()\r\n    Dim db As DAO.Database\r\n    If Not IsNull(Me!TaetigkeitID) Then\r\n        If MsgBox(&quot;T&auml;tigkeit wirklich l&ouml;schen&quot;, vbOKCancel, &quot;T&auml;tigkeit l&ouml;schen&quot;) = vbOK Then\r\n            Set db = CurrentDb\r\n            db.Execute &quot;DELETE FROM tblTaetigkeiten WHERE TaetigkeitID = &quot; &amp; Me!TaetigkeitID\r\n            Aktualisieren\r\n            Set db = Nothing\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>T&auml;tigkeiten starten und beenden<\/b><\/p>\n<p>Die L&ouml;sung soll es auch erlauben, die f&uuml;r einzelne T&auml;tigkeiten aufgewendete Zeit zu dokumentieren. Dies soll m&ouml;glichst einfach gehalten werden, und zwar durch das Anklicken einer Start\/Stopp-Taste rechts neben der aktuell durchgef&uuml;hrten T&auml;tigkeit. Dazu f&uuml;gen Sie dort zun&auml;chst ein weiteres Bildsteuerelement ein und nennen es <b>picPlay<\/b>. Der Ausdruck zum Anzeigen des gew&uuml;nschten Icons sieht so aus:<\/p>\n<pre>=Wenn(IstNull([TaetigkeitID]);&quot;white&quot;;Wenn([TaetigkeitAktiv];&quot;media_play_green&quot;;&quot;media_stop&quot;))<\/pre>\n<p>Dieser Ausdruck ber&uuml;cksichtigt zun&auml;chst, ob der Datensatz eine T&auml;tigkeit anzeigt oder ob es sich um einen leeren Datensatz handelt. Im Falle einer T&auml;tigkeit wird gepr&uuml;ft, ob das Feld <b>TaetigkeitAktiv <\/b>den Wert <b>True<\/b> enth&auml;lt. In diesem Fall soll das Bild-Steuerelement das Play-Icon anzeigen, sonst das Stopp-Icon (s. Bild 18).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic020.png\" alt=\"pic020.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 18: Aktive und nicht aktive T&auml;tigkeit<\/span><\/b><\/p>\n<p>Nun fehlen nur noch ein paar Zeilen Code, damit Sie die gew&uuml;nschte T&auml;tigkeit an- und abschalten k&ouml;nnen. Dieser wird komplett &uuml;ber das Anklicken des Bild-Steuerelements <b>picPlay <\/b>gesteuert und sieht wie in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-67-anchor\">Listing 4<\/a><\/span> aus.<\/p>\n<p class=\"listingueberschrift\">Listing 4: Aktivieren der aktuellen T&auml;tigkeit<\/p>\n<pre>Private Sub picPlay_Click()\r\n    Dim db As DAO.Database\r\n    Dim lngAktuelleTaetigkeitID As Long\r\n    lngAktuelleTaetigkeitID = Nz(DLookup(&quot;TaetigkeitID&quot;, &quot;tblArbeitszeiten&quot;, &quot;Ende IS NULL&quot;), 0)\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblArbeitszeiten SET Ende = &quot; &amp; ISODatum(Now) &amp; &quot; WHERE TaetigkeitID = &quot; _\r\n        &amp; lngAktuelleTaetigkeitID, dbFailOnError\r\n    db.Execute &quot;UPDATE tblTaetigkeiten SET TaetigkeitAktiv = 0&quot;, dbFailOnError\r\n    If Not Me!TaetigkeitID = lngAktuelleTaetigkeitID Then\r\n        db.Execute &quot;UPDATE tblTaetigkeiten SET TaetigkeitAktiv = -1 WHERE TaetigkeitID = &quot; &amp; Me!TaetigkeitID\r\n        db.Execute &quot;INSERT INTO tblArbeitszeiten(Start, TaetigkeitID) VALUES(&quot; &amp; ISODatum(Now) _\r\n            &amp; &quot;, &quot; &amp; Me!TaetigkeitID &amp; &quot;)&quot;, dbFailOnError\r\n    End If\r\n    Aktualisieren\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Die Prozedur ermittelt zun&auml;chst die aktuell ausgef&uuml;hrte T&auml;tigkeit. Dies kann auf zwei Arten geschehen: entweder &uuml;ber die Tabelle <b>tblTaetigkeiten<\/b>, wo die aktuelle T&auml;tigkeit im Feld <b>TaetigkeitAktiv <\/b>markiert ist, oder &uuml;ber die Tabelle <b>tblArbeitszeiten<\/b>, in der sich nur maximal ein Eintrag befinden sollte, dessen Feld <b>Ende <\/b>keinen Wert enth&auml;lt.<\/p>\n<p>Damit speichern wir zwar eigentlich redundante Daten: Normalerweise sollte es reichen, die aktive T&auml;tigkeit &uuml;ber die Tabelle <b>tblArbeitszeiten <\/b>zu ermitteln. Allerdings soll die aktuelle T&auml;tigkeit ja auch im Bericht hervorgehoben werden, und dies w&uuml;rde bedeuten, dass das Feld <b>Ende <\/b>der Tabelle <b>tblArbeitszeiten <\/b>in die Datenherkunft des Berichts integriert werden m&uuml;sste &#8211; und das ist nicht unbedingt trivial. Die Entscheidung, die aktuelle T&auml;tigkeit redundant an zwei Stellen zu speichern, wurde also zur Reduzierung der Komplexit&auml;t gef&auml;llt. Nach dem Ermitteln der aktuellen T&auml;tigkeit ermittelt die Routine zun&auml;chst den Datensatz der Tabelle <b>tblArbeitszeiten<\/b>, dessen Feld <b>Ende <\/b>noch leer ist, und stellt diesen auf die aktuelle Zeit ein (gegebenenfalls betrifft dies keinen Datensatz, falls zuvor einfach nur die aktuelle T&auml;tigkeit beendet wurde). Au&szlig;erdem wird das Feld <b>TaetigkeitAktiv <\/b>f&uuml;r alle Datens&auml;tze der Tabelle <b>tblTaetigkeiten <\/b>auf <b>False <\/b>eingestellt.<\/p>\n<p>Danach pr&uuml;ft die Routine, ob der Benutzer die Schaltfl&auml;che f&uuml;r eine andere als die aktive T&auml;tigkeit bet&auml;tigt hat und somit eine neue T&auml;tigkeit beginnen m&ouml;chte. Falls ja, stellt die Routine das Feld <b>TaetigkeitAktiv <\/b>des Datensatzes mit der angeklickten T&auml;tigkeit auf den Wert <b>True <\/b>ein.<\/p>\n<p>Au&szlig;erdem wird ein neuer Datensatz in der Tabelle <b>tblArbeitszeiten <\/b>angelegt, der mit der aktuellen <b>TaetigkeitID <\/b>und der aktuellen Zeit versehen wird. Schlie&szlig;lich ruft auch diese Routine noch die Prozedur <b>Aktualisieren <\/b>auf.<\/p>\n<p><b>Erledigte T&auml;tigkeiten abhaken<\/b><\/p>\n<p>Damit der Bericht nicht &uuml;berf&uuml;llt wirkt, nehmen wir noch zwei Erweiterungen vor. Die erste soll es dem Benutzer erm&ouml;glichen, erledigte T&auml;tigkeiten abzuhaken und auszublenden, die zweite soll das Ein- und Ausblenden von Projekten erlauben.<\/p>\n<p>Zum Abhaken der T&auml;tigkeiten k&ouml;nnten wir einfach ein Kontrollk&auml;stchen zum Bericht hinzuf&uuml;gen, aber da wir schon dabei sind, diesen mit schicken Icons auszustatten, verwenden wir auch hier ein Icon. Dieses f&uuml;gen Sie rechts von den bereits im Detailbereich vorhandenen Bild-Steuerelementen an. Der Steuerelementinhalt lautet diesmal:<\/p>\n<pre>=Wenn(IstNull([TaetigkeitID]);&quot;white&quot;;Wenn([TaetigkeitErledigt];&quot;checkbox&quot;;&quot;checkbox_unchecked&quot;))<\/pre>\n<p>Damit wird zun&auml;chst gepr&uuml;ft, ob es sich &uuml;berhaupt um eine Zeile mit einer T&auml;tigkeit handelt. Danach untersucht der Ausdruck den Wert des Feldes <b>TaetigkeitErledigt <\/b>der Tabelle <b>tblTaetigkeiten<\/b>. Abh&auml;ngig vom Ergebnis wird wie in Bild 19 entweder ein abgehaktes oder ein jungfr&auml;uliches Kontrollk&auml;stchen angezeigt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic021.png\" alt=\"pic021.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 19: Zus&auml;tzliches Icon, um T&auml;tigkeiten als erledigt zu kennzeichnen<\/span><\/b><\/p>\n<p>Fehlt noch der Mechanismus, mit dem Sie eine T&auml;tigkeit als erledigt markieren k&ouml;nnen. Dies soll der Benutzer mit einem Klick auf das Kontrollk&auml;stchen-Symbol erledigen k&ouml;nnen. Dazu hinterlegen Sie die Prozedur aus Bild 19 f&uuml;r die Ereigniseigenschaft <b>Beim Klicken <\/b>des entsprechenden Bild-Steuerelements.<\/p>\n<p><b>Erledigte T&auml;tigkeiten ein- und ausblenden<\/b><\/p>\n<p>Wenn Sie T&auml;tigkeiten nur als erledigt markieren, diese aber dann nicht von der Liste verschwinden, erhalten Sie einen Vor- und einen Nachteil. Der Vorteil ist, dass Sie immer sehen, wie viel Sie bereits erledigt haben.<\/p>\n<p>Der Nachteil ist: Sie sehen irgendwann nicht mehr, was zu tun ist. Also sehen wir noch eine M&ouml;glichkeit vor, um die erledigten T&auml;tigkeiten auszublenden. Das kann nicht schwer sein: Wir m&uuml;ssen nur die Datenherkunft des Berichts nach dem Feld <b>TaetigkeitErledigt <\/b>filtern und legen zum Ein- und Ausblenden der erledigten Aufgaben ein entsprechendes Kontrollk&auml;stchen im Kopf des Berichts an (s. Bild 20).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic022.png\" alt=\"pic022.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 20: Kontrollk&auml;stchen zum Ein- und Ausblenden erledigter T&auml;tigkeiten<\/span><\/b><\/p>\n<p>Dabei gibt es jedoch ein paar Hindernisse. Das erste ist die Auswertung des besagten Kombinationsfeldes. Wenn Sie n&auml;mlich wie in der folgenden Ereignisprozedur beim Anklicken des Kontrollk&auml;stchens dessen Wert abfragen, erhalten Sie gleich zwei Werte &#8211; den vor und den nach dem Mausklick:<\/p>\n<pre>Private Sub chkErledigteTaetigkeitenAnzeigen_Click()\r\n    Debug.Print chkErledigteTaetigkeitenAnzeigen\r\nEnd Sub<\/pre>\n<p>Wir ben&ouml;tigen aber nur den Wert nach dem Anklicken des Kontrollk&auml;stchens und wollen auch nur dann einen entsprechenden Filter setzen. Also legen wir eine modulweit deklarierte Variable fest, die wir auf <b>True <\/b>setzen, wenn die <b>Beim Klicken<\/b>-Prozedur des Kontrollk&auml;stchens erstmals angeklickt wurde:<\/p>\n<pre>Private bolErledigtEinAus As Boolean<\/pre>\n<p>Diese Variable stellen wir in die betroffene Prozedur ein:<\/p>\n<pre>Private Sub chkErledigteTaetigkeitenAnzeigen_Click()\r\n    If bolErledigtEinAus = False Then\r\n        bolErledigtEinAus = True\r\n    Else\r\n        bolErledigtEinAus = False\r\n        Debug.Print Me!chkErledigteTaetigkeitenAnzeigen\r\n    End If\r\nEnd Sub<\/pre>\n<p>Der Wert des Kontrollk&auml;stchens wird nun nur noch beim zweiten Ausl&ouml;sen der Ereignisprozedur ausgegeben.<\/p>\n<p>Weiterhin f&auml;llt auf, dass das Kontrollk&auml;stchen beim &Ouml;ffnen des Formulars weder aktiviert noch deaktiviert ist, sondern den Wert <b>Null <\/b>enth&auml;lt. Dies &auml;ndern Sie, indem Sie den Wert im Ereignis <b>Beim Laden <\/b>des Berichts auf den Wert <b>False <\/b>einstellen:<\/p>\n<pre>Private Sub Report_Load()\r\n    Me!chkErledigteTaetigkeitenAnzeigen = False\r\n    End Sub<\/pre>\n<p>Als Folge dessen zeigt der Bericht nun nicht mehr die korrekten Daten an, denn die als erledigt markierten Eintr&auml;ge sollten ja nun ausgeblendet werden.<\/p>\n<p>Das zweite Problem taucht beim Setzen des Filters mit folgendem Code auf:<\/p>\n<pre>Private Sub chkErledigteTaetigkeitenAnzeigen_Click()\r\n    If bolErledigtEinAus = False Then\r\n        bolErledigtEinAus = True\r\n    Else\r\n        bolErledigtEinAus = False\r\n        If Me!chkErledigteTaetigkeitenAnzeigen = False Then\r\n            Me.Filter = &quot;TaetigkeitErledigt = False&quot;\r\n            Me.FilterOn = True\r\n        Else\r\n            Me.Filter = &quot;&quot;\r\n            Me.FilterOn = True\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p>Diese Prozedur blendet zwar alle Datens&auml;tze aus, deren Feld <b>TaetigkeitErledigt <\/b>den Wert <b>True <\/b>enth&auml;lt. Allerdings werden interessanterweise auch solche Datens&auml;tze ausgeblendet, f&uuml;r die gar keine T&auml;tigkeit angelegt wurde. Dies liegt an der Inklusionsverkn&uuml;pfung der Abfrage, die als Datenherkunft f&uuml;r den Bericht dient.<\/p>\n<p>Dieses zeigt ja beispielsweise auch Projekte an, f&uuml;r die gar keine T&auml;tigkeit angelegt wurde. Das muss auch so sein, das Sie ja sonst auch gar kein Projekt anlegen k&ouml;nnten. Wenn Sie sich die von dieser Abfrage gelieferten Daten einmal in Bild 21 ansehen, f&auml;llt Ihnen sicher schnell auf, warum der Filter f&uuml;r alle Datens&auml;tze, deren Feld <b>TaetigkeitErledigt <\/b>den Wert <b>False <\/b>enth&auml;lt, zwar das richtige Ergebnis liefert, welches aber nicht Ihren Vorstellungen entspricht: Bei Datens&auml;tzen, die keine T&auml;tigkeiten enthalten, enth&auml;lt dieses Feld n&auml;mlich weder den Wert <b>True <\/b>noch <b>False<\/b>, sondern den Wert <b>Null<\/b>. Wir m&uuml;ssen die Filterbedingung also einfach nur umformulieren, dass alle Datens&auml;tze angezeigt werden, deren Feld <b>TaetigkeitErledigt <\/b>den Wert <b>False <\/b>oder <b>Null<\/b> enth&auml;lt:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic023.png\" alt=\"pic023.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 21: Datensatz der Datenherkunft, der keine T&auml;tigkeit enth&auml;lt<\/span><\/b><\/p>\n<pre>Me.Filter = &quot;TaetigkeitErledigt = False OR TaetigkeitErledigt IS NULL&quot;<\/pre>\n<p>Auf diese Weise werden die erledigten Aufgaben zuverl&auml;ssig ein- und ausgeblendet.<\/p>\n<p><b>Projekt ein- und ausblenden<\/b><\/p>\n<p>In der Praxis sollten Sie sich nur mit einem Projekt zur gleichen Zeit besch&auml;ftigen, gegebenenfalls ist noch ein weiteres Projekt ge&ouml;ffnet, das allgemeine T&auml;tigkeiten anzeigt, die Sie zwischendurch erledigen m&uuml;ssen. Die L&ouml;sung soll jedoch eine M&ouml;glichkeit bieten, schnell das oder die angezeigten Projekte festzulegen.<\/p>\n<p>Am geeignetsten erschien uns dazu ein Formular, das eine Liste aller Projekte anzeigt und per Mausklick auf die Schaltfl&auml;che im Bericht angezeigt werden kann (diese Schaltfl&auml;che namens <b>cmdProjekteAuswaehlen <\/b>f&uuml;gen Sie wie in Bild 22 gezeigt zum Bericht hinzu). Das &Ouml;ffnen dieses Formulars geschieht mit der folgenden einfachen Prozedur:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic024.png\" alt=\"pic024.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 22: Schaltfl&auml;che zum &Ouml;ffnen eines Dialogs zur Auswahl der anzuzeigenden Projekte<\/span><\/b><\/p>\n<pre>Private Sub cmdProjekteAuswaehlen_Click()\r\n    DoCmd.OpenForm &quot;frmProjektauswahl&quot;\r\nEnd Sub<\/pre>\n<p>Wichtig ist in diesem Zusammenhang, dass Sie die Eigenschaft <b>Popup <\/b>dieses Formulars auf <b>Ja <\/b>einstellen. Nur so bleibt es im Vordergrund, auch wenn Sie zwischenzeitlich die Projekte, Aufgaben und T&auml;tigkeiten im Bericht <b>rptAufgaben <\/b>durchbl&auml;ttern.<\/p>\n<p>Das Formular selbst sieht im Entwurf wie in Bild 23 aus und enth&auml;lt die drei Steuerelemente <b>txtProjektname<\/b>, <b>lstProjekte <\/b>und <b>cmdOK<\/b>.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic025.png\" alt=\"pic025.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 23: Formular zur Projektauswahl in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Das Listenfeld verwendet den folgenden SQL-Ausdruck als Datenherkunft:<\/p>\n<pre>SELECT tblProjekte.ProjektID, tblProjekte.Projekt, tblProjekte.ProjektSichtbar FROM tblProjekte;<\/pre>\n<p>Die Eingabe von Zeichen im Textfeld <b>txtProjektname <\/b>soll die Eintr&auml;ge des Listenfeldes filtern, was wir mit einem Einzeiler erledigen:<\/p>\n<pre>Private Sub txtProjektname_Change()\r\n    Me!lstProjekte.RowSource = &quot;SELECT * FROM tblProjekte WHERE Projekt&quot;&amp; &quot; LIKE ''*&quot; &amp; Me!txtProjektname.Text &amp; &quot;*''&quot;\r\nEnd Sub<\/pre>\n<p>Wenn der Benutzer auf einen der angezeigten Eintr&auml;ge klickt, soll dieser aus- oder abgew&auml;hlt werden und auch das entsprechende Projekt im aufrufenden Bericht ein- oder ausgeblendet werden. Dies erledigt die Prozedur aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-76-anchor\">Listing 6<\/a><\/span>. Die Routine ermittelt zun&auml;chst den zuletzt angeklickten Eintrag des Listenfeldes und speichert dessen <b>ProjektID <\/b>in der Variablen <b>lngProjektID<\/b>. Dann stellt sie die Eigenschaft <b>ProjektSichtbar <\/b>des entsprechenden Datensatzes der Tabelle <b>tblProjekte <\/b>auf den jeweiligen Wert ein. Den Wert (<b>True <\/b>oder <b>False<\/b>) ermittelt die Prozedur dabei aus dem Wert der Eigenschaft <b>Selected <\/b>des jeweiligen Listenfeldeintrags.<\/p>\n<p class=\"listingueberschrift\">Listing 5: Aktuelle T&auml;tigkeit als erledigt markieren<\/p>\n<pre>Private Sub picErledigt_Click()\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblTaetigkeiten SET TaetigkeitErledigt = &quot; &amp; BoolToString( _\r\n        Not Me!TaetigkeitErledigt) &amp; &quot; WHERE TaetigkeitID = &quot; &amp; Me!TaetigkeitID, dbFailOnError\r\n    Aktualisieren\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p class=\"listingueberschrift\">Listing 6: Projekt aus- oder abw&auml;hlen<\/p>\n<pre>Private Sub lstProjekte_Click()\r\n    Dim db As DAO.Database\r\n    Dim lngProjektID As Long\r\n    Set db = CurrentDb\r\n    lngProjektID = Me!lstProjekte.ItemData(Me!lstProjekte.ListIndex)\r\n    db.Execute &quot;UPDATE tblProjekte SET ProjektSichtbar = &quot; &amp; BoolToString(Me!lstProjekte. _\r\n        Selected(Me!lstProjekte.ListIndex)) &amp; &quot; WHERE ProjektID = &quot; &amp; lngProjektID, dbFailOnError\r\n    Reports!rptAufgaben.Requery\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Es fehlt nur noch ein wichtiges Feature: Die Listenfeldeintr&auml;ge sollen beim Laden des Formulars entsprechend den Werten des Feldes <b>ProjektSichtbar <\/b>in der Tabelle <b>tblProjekte <\/b>markiert werden. Daher f&uuml;gen Sie der Ereignisprozedur, die durch das Ereignis <b>Beim Laden <\/b>ausgel&ouml;st wird, die Codezeilen aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-74-anchor\">Listing 7<\/a><\/span> hinzu.<\/p>\n<p class=\"listingueberschrift\">Listing 7: Ausw&auml;hlen aller Eintr&auml;ge des Listenfeldes, deren Feld ProjektSichtbar den Wert True hat<\/p>\n<pre>Private Sub Form_Load()\r\n    Dim db As DAO.Database\r\n    Dim rst As DAO.Recordset\r\n    Dim i As Integer\r\n    Set db = CurrentDb\r\n    Set rst = db.OpenRecordset(&quot;SELECT * FROM tblProjekte&quot;, dbOpenDynaset)\r\n    For i = 0 To Me!lstProjekte.ListCount - 1\r\n        Do While Not rst.EOF\r\n            If rst!ProjektID = CLng(Me!lstProjekte.ItemData(i)) Then\r\n                If rst!ProjektSichtbar Then\r\n                    Me!lstProjekte.Selected(i) = True\r\n                End If\r\n            End If\r\n            rst.MoveNext\r\n        Loop\r\n        rst.MoveFirst\r\n    Next i\r\n    rst.Close\r\n    Set rst = Nothing\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Die Prozedur &ouml;ffnet zun&auml;chst ein Recordset auf Basis der Tabelle <b>tblProjekte<\/b>. Dann durchl&auml;uft sie in einer &auml;u&szlig;eren Schleife jeden einzelnen Eintrag des Listenfelds. Innerhalb dieser Schleife l&auml;uft eine weitere Schleife &uuml;ber alle Eintr&auml;ge der Datensatzgruppe mit den Projekten. Wenn die <b>ProjektID <\/b>dieser Datensatzgruppe mit dem Wert des aktuellen Listenfeldeintrags &uuml;bereinstimmt, pr&uuml;ft die Prozedur, ob das Feld <b>ProjektSichtbar <\/b>der Datensatzgruppe den Wert <b>True <\/b>enth&auml;lt, und stellt in diesem Fall die Eigenschaft <b>Selected <\/b>des aktuellen Eintrags auf <b>True <\/b>ein. Nach jedem Durchlauf der &auml;u&szlig;eren Schleife wird der Datensatzzeiger des Recordsets wieder auf den ersten Datensatz verschoben, damit die Datens&auml;tze f&uuml;r den n&auml;chsten Eintrag des Listenfeldes erneut durchlaufen werden k&ouml;nnen.<\/p>\n<p><b>Formulare zum Bearbeiten von Projekten, Aufgaben und T&auml;tigkeiten<\/b><\/p>\n<p>Weiter oben haben wir bereits erl&auml;utert, wie durch Mausklicks auf die entsprechenden Bild-Steuerelemente im Bericht die Formulare zum Anlegen und Bearbeiten von Projekten, Aufgaben und T&auml;tigkeiten ge&ouml;ffnet werden. Nun stellen wir diese Formular noch vor, wobei das Formular <b>frmProjektdetails <\/b>den Beginn macht.<\/p>\n<p>Dieses Formular sieht im Entwurf wie in Bild 24 aus und verwendet die Tabelle <b>tblProjekte <\/b>als Datenherkunft. Es enth&auml;lt neben dem einzigen gebundenen Steuerelement zur Anzeige des Feldes <b>Projekt<\/b> lediglich zwei Schaltfl&auml;chen zum Schlie&szlig;en des Formulars und zum Abbrechen der Eingabe. Diese l&ouml;sen die folgenden Ereignisprozeduren aus:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic026.png\" alt=\"pic026.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 24: Das Formular zur Anzeige der Projektdetails in der Entwurfsansicht<\/span><\/b><\/p>\n<pre>Private Sub cmdAbbrechen_Click()\r\n    Me.Undo\r\n    DoCmd.Close acForm, Me.Name\r\n    End Sub\r\nPrivate Sub cmdOK_Click()\r\n    DoCmd.Close acForm, Me.Name\r\n    End Sub<\/pre>\n<p>Um eine schnelle Eingabe zu gew&auml;hrleisten, stellen Sie au&szlig;erdem die Eigenschaft <b>Standard <\/b>der Schaltfl&auml;che <b>cmdOK <\/b>und die Eigenschaft <b>Abbrechen <\/b>der Schaltfl&auml;che <b>cmdAbbrechen <\/b>auf den Wert <b>Ja <\/b>ein. Auf diese Weise wird beim Bet&auml;tigen der Eingabetaste die Eingabe &uuml;bernommen und das Formular geschlossen, und wenn der Benutzer die <b>Escape<\/b>-Taste dr&uuml;ckt, wirkt sich dies wie das Anklicken der <b>Abbrechen<\/b>-Schaltfl&auml;che aus.<\/p>\n<p><b>Formular zur Eingabe der Aufgaben<\/b><\/p>\n<p>Das Formular <b>frmAufgabendetails <\/b>ist prinzipiell wie das Formular <b>frmProjektdetails <\/b>aufgebaut, enth&auml;lt aber ein zus&auml;tzliches Feld zur Anzeige und Auswahl des &uuml;bergeordneten Projekts (s. Bild 25). Dieses Feld soll beim Anlegen einer neuen Aufgabe direkt mit dem Projekt gef&uuml;llt werden, f&uuml;r das der Benutzer die entsprechende Schaltfl&auml;che angeklickt hat.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_02\/Aufgabenverwaltung-web-images\/pic027.png\" alt=\"pic027.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 25: Entwurfsansicht des Formulars zur Anzeige der Aufgabendetails<\/span><\/b><\/p>\n<p>Die ID dieses Projekts wird, wie weiter oben beschrieben, mit dem Parameter <b>OpenArgs <\/b>an das Formular <b>frmProjektdetails <\/b>&uuml;bergeben. Um diesen auszuwerten und gleich das richtige Projekt im entsprechenden Kombinationsfeld voreinzustellen, verwendet das Formular die folgende Prozedur f&uuml;r das Ereignis <b>Beim Laden<\/b>:<\/p>\n<pre>Private Sub Form_Load()\r\n    Me!ProjektID.DefaultValue = Nz(Me.OpenArgs)\r\n    End Sub<\/pre>\n<p>Das Formular zum Erfassen von T&auml;tigkeiten ist genau so aufgebaut wie das Formular <b>frmAufgaben<\/b>. Es erh&auml;lt mit dem &Ouml;ffnungsargument jedoch einen Verweis auf die &uuml;bergeordnete Aufgabe.<\/p>\n<p>Beim &Ouml;ffnen der drei Formulare <b>frmProjektdetails<\/b>, <b>frmAufgabendetails <\/b>und <b>frmTaetigkeitsdetails <\/b>wird kein &Ouml;ffnungsargument &uuml;bergeben, sondern ein Wert f&uuml;r den Parameter <b>WhereCondition<\/b>, damit die Formulare direkt nur den zu bearbeitenden Datensatz anzeigen.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die hier vorgestellte L&ouml;sung bietet ein sehr intuitives und schnelles Instrument zur Eingabe und Verwaltung von Projekten, Aufgaben und T&auml;tigkeiten und zur Erfassung der mit der Durchf&uuml;hrung der T&auml;tigkeiten verbrachten Zeitr&auml;ume.<\/p>\n<p>Es l&auml;sst sich noch um einige Funktionen erweitern. So w&auml;re es beispielsweise interessant, die Priorit&auml;t der einzelnen Elemente einzustellen beziehungsweise eine individuelle Sortierung vorzunehmen.<\/p>\n<p>Au&szlig;erdem k&ouml;nnen Sie Formulare und Berichte zur Auswertung der eingetragenen Daten hinzuf&uuml;gen. Im Gro&szlig;en und Ganzen soll das Tool jedoch einfach die technischen M&ouml;glichkeiten der Berichtsansicht von Access 2007 und 2010 vorstellen und ein Werkzeug zur einfachen Verwaltung von Projekten, Aufgaben und T&auml;tigkeiten bieten.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Aufgabenverwaltung.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{9A8F2F92-4ABF-479E-9D48-D63F6BC55A52}\/aiu_829.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Access 2007 hat Microsoft die etwas unscheinbare Berichtsansicht als weitere Ansicht f&uuml;r Berichte eingef&uuml;hrt. Auch wenn diese Ansicht nicht direkt zur Dateneingabe verwendet werden kann, ist sie dennoch ein m&auml;chtiges Werkzeug &#8211; vor allem, wenn es um die Darstellung hierarchischer Daten geht. Der vorliegende Beitrag zeigt, wie Sie damit interaktiv Projekte, Aufgaben und T&auml;tigkeiten verwalten und sogar noch die Arbeitszeit protokollieren.<\/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":[66022012,662012,44000024],"tags":[],"class_list":["post-55000829","post","type-post","status-publish","format-standard","hentry","category-66022012","category-662012","category-Berichte_und_Reporting"],"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>Aufgabenverwaltung per Berichtsansicht - 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\/Aufgabenverwaltung_per_Berichtsansicht\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aufgabenverwaltung per Berichtsansicht\" \/>\n<meta property=\"og:description\" content=\"Mit Access 2007 hat Microsoft die etwas unscheinbare Berichtsansicht als weitere Ansicht f&uuml;r Berichte eingef&uuml;hrt. Auch wenn diese Ansicht nicht direkt zur Dateneingabe verwendet werden kann, ist sie dennoch ein m&auml;chtiges Werkzeug - vor allem, wenn es um die Darstellung hierarchischer Daten geht. Der vorliegende Beitrag zeigt, wie Sie damit interaktiv Projekte, Aufgaben und T&auml;tigkeiten verwalten und sogar noch die Arbeitszeit protokollieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:53:56+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b\" \/>\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=\"31\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Aufgabenverwaltung per Berichtsansicht\",\"datePublished\":\"2020-05-22T21:53:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/\"},\"wordCount\":5357,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7bda157360e34f7fba1714a71674b02b\",\"articleSection\":[\"2\\\/2012\",\"2012\",\"Berichte und Reporting\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/\",\"name\":\"Aufgabenverwaltung per Berichtsansicht - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7bda157360e34f7fba1714a71674b02b\",\"datePublished\":\"2020-05-22T21:53:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7bda157360e34f7fba1714a71674b02b\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/7bda157360e34f7fba1714a71674b02b\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Aufgabenverwaltung_per_Berichtsansicht\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aufgabenverwaltung per Berichtsansicht\"}]},{\"@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":"Aufgabenverwaltung per Berichtsansicht - 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\/Aufgabenverwaltung_per_Berichtsansicht\/","og_locale":"de_DE","og_type":"article","og_title":"Aufgabenverwaltung per Berichtsansicht","og_description":"Mit Access 2007 hat Microsoft die etwas unscheinbare Berichtsansicht als weitere Ansicht f&uuml;r Berichte eingef&uuml;hrt. Auch wenn diese Ansicht nicht direkt zur Dateneingabe verwendet werden kann, ist sie dennoch ein m&auml;chtiges Werkzeug - vor allem, wenn es um die Darstellung hierarchischer Daten geht. Der vorliegende Beitrag zeigt, wie Sie damit interaktiv Projekte, Aufgaben und T&auml;tigkeiten verwalten und sogar noch die Arbeitszeit protokollieren.","og_url":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:53:56+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"31\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Aufgabenverwaltung per Berichtsansicht","datePublished":"2020-05-22T21:53:56+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/"},"wordCount":5357,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b","articleSection":["2\/2012","2012","Berichte und Reporting"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/","url":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/","name":"Aufgabenverwaltung per Berichtsansicht - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b","datePublished":"2020-05-22T21:53:56+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/7bda157360e34f7fba1714a71674b02b"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Aufgabenverwaltung_per_Berichtsansicht\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Aufgabenverwaltung per Berichtsansicht"}]},{"@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\/55000829","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=55000829"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000829\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}