{"id":55001209,"date":"2019-10-01T00:00:00","date_gmt":"2020-05-13T20:56:51","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1209"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ticketsystem_Teil_V","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/","title":{"rendered":"Ticketsystem, Teil V"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>In den vorherigen Teilen dieser Beitragsreihe haben wir den Aufbau einiger Funktionen eines Ticketsystems beschrieben. Es fehlt noch der letzte Feinschliff: Wir wollen die erneuten Antworten von Kunden auf unsere als Antwort versendeten E-Mails automatisch in die Ticketverwaltung aufnehmen. Bevor wir das im n&auml;chsten Teil erledigen k&ouml;nnen, haben wir in diesem Teil noch einige Feinheiten erg&auml;nzt und werfen au&szlig;erdem noch einmal einen zusammenfassenden Blick &uuml;ber die bisher programmierten Funktionen und die Inbetriebnahme der Ticketverwaltung inklusive der Einrichtung in Outlook. Au&szlig;erdem f&uuml;gen wir noch einen Dialog zur Verwaltung der Optionen der L&ouml;sung hinzu.<\/b><\/p>\n<h2>Einrichtung des Ticketsystems<\/h2>\n<p>Um das Ticketsystem einzurichten, ben&ouml;tigen Sie zun&auml;chst die Access-Datenbank aus dem Download zu diesem Beitrag namens <b>Ticketsystem.accdb<\/b>. Au&szlig;erdem sind kleine Anpassungen an Outlook erforderlich, genau genommen am VBA-Projekt von Outlook.<\/p>\n<h2>Einrichtung in Outlook<\/h2>\n<p>Es gibt einen kurzen und einen etwas umst&auml;ndlicheren Weg, die f&uuml;r das Ticketsystem n&ouml;tigen Elemente in Outlook zu integrieren. Dabei brauchen wir einige Module. Diese k&ouml;nnen Sie einzeln zum aktuellen VBA-Projekt von Outlook hinzuf&uuml;gen. Das bietet sich an, wenn Sie bereits &Auml;nderungen am VBA-Projekt von Outlook vorgenommen haben. Wenn Sie jedoch eine jungfr&auml;uliche Instanz von Outlook nutzen, k&ouml;nnen Sie auch das komplette VBA-Projekt austauschen gegen das aus dem Download zu diesem Beitrag.<\/p>\n<h2>Outlook-VBA-Projekt austauschen<\/h2>\n<p>Wenn Sie das komplette VBA-Projekt f&uuml;r die Ticketverwaltung nutzen wollen, gehen Sie wie folgt vor:<\/p>\n<ul>\n<li>Navigieren Sie zur Datei <b>VbaProject.OTM<\/b>. Diese finden Sie beispielsweise im Ordner <b>C:UsersUserAppDataRoamingMicrosoftOutlook<\/b>.<\/li>\n<li>Benennen Sie die Datei <b>VbaProject.OTM <\/b>um, beispielsweise in <b>_VbaProject.OTM<\/b>.<\/li>\n<li>F&uuml;gen Sie dann die Datei <b>VbaProject.OTM <\/b>aus dem Download zu diesem Beitrag in das angegebene Verzeichnis ein.<\/li>\n<li>Anschlie&szlig;end starten Sie Outlook und fahren wie weiter unten unter <b>Outlook starten <\/b>beschrieben fort.<\/li>\n<\/ul>\n<h2>Module einzeln zu bestehendem VBA-Projekt hinzuf&uuml;gen<\/h2>\n<p>Wenn Sie Outlook starten und dann die Tastenkombination <b>Alt + F11 <\/b>dr&uuml;cken, &ouml;ffnet sich der VBA-Editor von Outlook.   In diesem finden Sie, wenn der Projekt-Explorer ge&ouml;ffnet ist, ein Projekt mit einem Unterordner <b>Microsoft Outlook Objekte<\/b>. Dieser Ordner stellt das Klassenmodul <b>This-OutlookSession <\/b>bereit. In diesem legen Sie eine neue Prozedur an, die wie in Bild 1 aussieht. Das erledigen Sie am einfachsten, indem Sie aus dem linken Kombinationsfeld des Codefensters den Eintrag <b>Application <\/b>und aus dem rechten <b>Startup <\/b>ausw&auml;hlen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_001.png\" alt=\"Anlegen der Prozedur, die beim Start von Outlook ausgel&ouml;st wird\" width=\"649,559\" height=\"398,7657\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Anlegen der Prozedur, die beim Start von Outlook ausgel&ouml;st wird<\/span><\/b><\/p>\n<p>Die einzige Anweisung dieser Prozedur soll eine weitere Prozedur namens <b>Application_Startup_Ticketverwaltung <\/b>aufrufen. Diese haben wir der Zip-Datei mit den Beispieldateien unter dem Namen <b>mdlTicketverwaltung.bas <\/b>untergebracht. Kopieren Sie dieses Modul aus der Zip-Datei mit den Beispieldateien in das VBA-Projekt von Outlook, damit die Prozedur <b>Application_Startup_Ticketverwaltung<\/b> beim Start von Outlook aufgerufen werden kann.<\/p>\n<p>Sie ben&ouml;tigen noch weitere Module im VBA-Projekt von Outlook, und zwar <b>mdlTicketverwaltung.bas, mdlTicketverwaltung_Folders.bas<\/b>, <b>mdlTicketverwaltung_Global.bas <\/b>und <b>mdlTicketverwaltung_Outlook.bas<\/b>.<\/p>\n<p>Schlie&szlig;lich ben&ouml;tigen Sie noch das Klassenmodul <b>clsFolderArchiv.cls<\/b>, das Sie in der Zip-Datei mit den Beispieldateien finden. Sie k&ouml;nnen dieses ebenso wie die anderen Module einfach aus dem Windows Explorer in den Projekt-Explorer des VBA-Editors von Outlook ziehen.<\/p>\n<h2>Verweise zum VBA-Projekt von Outlook hinzuf&uuml;gen<\/h2>\n<p>Im VBA-Editor stellen Sie nun noch zwei Verweise ein, und zwar f&uuml;r die Bibliotheken <b>Microsoft Access 16.0 Object Library <\/b>und <b>Microsoft Office 16.0 Access Database Engine Object Library<\/b>.<\/p>\n<p>Danach k&ouml;nnen Sie Outlook einmal neu starten. Es erscheint dann direkt der Dateiauswahl-Dialog namens <b>Datenbankpfad ausw&auml;hlen<\/b>. Hier w&auml;hlen Sie die Datenbank <b>Ticketsystem.accdb <\/b>aus.<\/p>\n<h2>Outlook starten<\/h2>\n<p>Wenn Sie Outlook nun starten, wird die Ereignismethode <b>Application_Startup <\/b>ausgel&ouml;st. Diese ruft die Prozedur <b>Application_Startup_Ticketverwaltung <\/b>auf, die mit der Funktion <b>DatenbankpfadHolen <\/b>pr&uuml;ft, ob der Pfad zur Datenbank bereits in einer UserProperty innerhalb von Outlook gespeichert ist &#8211; und ob die angegebene Datei vorhanden ist. Falls nicht, erscheint ein Dateiauswahl-Dialog, mit dem der Benutzer die Datei <b>Ticketsystem.accdb <\/b>ausw&auml;hlen kann (siehe Bild 2). In diesem Fall wird der Pfad zur Ticketmanager-Datenbank in der <b>UserProperty <\/b>gespeichert, wo er beim n&auml;chsten Start von Outlook wieder ausgelesen werden kann.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_007.png\" alt=\"Ausw&auml;hlen der Datei Ticketsystem.accdb\" width=\"649,559\" height=\"379,2506\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Ausw&auml;hlen der Datei Ticketsystem.accdb<\/span><\/b><\/p>\n<p>Die Prozedur <b>Application_Startup_Ticketverwaltung <\/b>&ouml;ffnet nun die Datenbank und liest den Inhalt der Tabelle <b>tblOptionen <\/b>ein, die wir weiter unten noch beschreiben.<\/p>\n<p>Die Tabelle enth&auml;lt im Wesentlichen Informationen dar&uuml;ber, welche Verzeichnisse in Outlook zum Sammeln der Kunden-E-Mails zur Bearbeitung im Ticketsystem verwendet werden sollen.<\/p>\n<p>Hier sind beim ersten Aufruf in der Regel noch keine Outlook-Verzeichnisse festgelegt und somit auch noch keine Datens&auml;tze in der Tabelle <b>tblOptionen<\/b>. Dementsprechend bietet die Prozedur dem Benutzer nun die M&ouml;glichkeit, einen Outlook-Ordner auszuw&auml;hlen und diesen zur Tabelle <b>tblOptionen <\/b>hinzuzuf&uuml;gen. Damit der Benutzer wei&szlig;, was auf ihn zukommt, erscheint nun zun&auml;chst die Meldung aus Bild 5.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_008.png\" alt=\"Hinweis auf das anstehende Ausw&auml;hlen eines Verzeichnisses in Outlook\" width=\"424,7115\" height=\"151,6086\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Hinweis auf das anstehende Ausw&auml;hlen eines Verzeichnisses in Outlook<\/span><\/b><\/p>\n<p>Anschlie&szlig;end erscheint der Dialog <b>Ordner ausw&auml;hlen<\/b> von Outlook. Dieser zeigt alle in Outlook verf&uuml;gbaren Ordner an. Wir w&auml;hlen hier den daf&uuml;r vorbereiteten Ordner <b>Ticketsystem<\/b> aus (siehe Bild 3). Danach wird Outlook wie gewohnt gestartet und auch bei nachfolgenden Startvorg&auml;ngen m&uuml;ssen die Informationen nicht erneut eingegeben werden.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_003.png\" alt=\"Auswahl des zu trackenden Outlook-Ordners\" width=\"349,7625\" height=\"295,7991\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Auswahl des zu trackenden Outlook-Ordners<\/span><\/b><\/p>\n<p>Sollten Sie den Ordner f&uuml;r die E-Mails f&uuml;r die Ticketverwaltung noch nicht angelegt haben, k&ouml;nnen Sie das nachtr&auml;glich erledigen &#8211; und zwar direkt im Dialog <b>Ordner ausw&auml;hlen <\/b>von Outlook. Dazu klicken Sie dort auf die Schaltfl&auml;che <b>Neu&#8230; <\/b>und legen dann mit dem Dialog aus Bild 4 einen neuen Outlook-Ordner f&uuml;r E-Mails an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_004.png\" alt=\"Anlegen eines neuen Ordners in Outlook\" width=\"349,7625\" height=\"458,2331\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Anlegen eines neuen Ordners in Outlook<\/span><\/b><\/p>\n<h2>&Auml;ndern des Ordners in Outlook oder in der Datenbank<\/h2>\n<p>Es kann sein, dass Sie den Ordner in Outlook umbenennen oder das der Wert des Feldes Verzeichnis in der Tabelle <b>tblOptionen <\/b>so ge&auml;ndert werden, dass beide nicht mehr &uuml;bereinstimmen. In diesem Fall findet die Prozedur <b>Application_Startup_Ticketverwaltung <\/b>den Outlook-Ordner nicht und zeigt die Meldung aus Bild 6 an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_002.png\" alt=\"Es fehlt ein Ordner, der vom Ticketsystem getrackt werden soll.\" width=\"499,6607\" height=\"235,92\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Es fehlt ein Ordner, der vom Ticketsystem getrackt werden soll.<\/span><\/b><\/p>\n<p>Diese Funktion war in der ersten Version der Prozedur <b>Application_Startup_Ticketverwaltung <\/b>noch nicht enthalten. Die erweiterte Version finden Sie in Listing 1.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Application_Startup_Ticketverwaltung()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database, rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>objFolder<span style=\"color:blue;\"> As <\/span>Outlook.Folder, objFolderArchiv<span style=\"color:blue;\"> As <\/span>clsFolderArchiv, strTicketsystemDatenbank<span style=\"color:blue;\"> As String<\/span>\r\n     strTicketsystemDatenbank = DatenbankpfadHolen(\"Ticketsystem\", \"Datenbankpfad\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strTicketsystemDatenbank) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Verbindung zur Ticketdatenbank konnte nicht hergestellt werden.\"\r\n         <span style=\"color:blue;\">Exit Sub<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = DBEngine.OpenDatabase(strTicketsystemDatenbank, , <span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblOptionen\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> colFolders = <span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">If <\/span>rst.EOF<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Sie k&ouml;nnen nun ein Verzeichnis in Outlook ausw&auml;hlen, dessen E-Mails automatisch in das \" _\r\n             & \"Ticketsystem eingelesen werden.\"\r\n         <span style=\"color:blue;\">Set<\/span> objFolderArchiv = <span style=\"color:blue;\">New<\/span> clsFolderArchiv\r\n         <span style=\"color:blue;\">With<\/span> objFolderArchiv\r\n             <span style=\"color:blue;\">Set<\/span> objFolder = Outlook.GetNamespace(\"MAPI\").PickFolder\r\n             <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> objFolder Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n                 rst.Add<span style=\"color:blue;\">New<\/span>\r\n                 rst!Verzeichnis = objFolder.FolderPath\r\n                 rst.Update\r\n                 <span style=\"color:blue;\">Set<\/span> .Folder = objFolder\r\n                 <span style=\"color:blue;\">Set<\/span> .Database = db\r\n                 colFolders.Add objFolderArchiv\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n             <span style=\"color:blue;\">Set<\/span> objFolderArchiv = <span style=\"color:blue;\">New<\/span> clsFolderArchiv\r\n             <span style=\"color:blue;\">With<\/span> objFolderArchiv\r\n                 <span style=\"color:blue;\">Set<\/span> objFolder = GetFolderByPath(rst!Verzeichnis)\r\n                 <span style=\"color:blue;\">If <\/span>objFolder Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n                     <span style=\"color:blue;\">MsgBox<\/span> \"Der in der Export-Datenbank ''\" & strTicketsystemDatenbank & \"'' angegebene Outlook-Ordner ''\" _\r\n                          & rst!Verzeichnis & \"'' ist nicht in Outlook vorhanden. W&auml;hlen Sie diesen nun erneut aus.\"\r\n                     <span style=\"color:blue;\">Set<\/span> objFolder = Outlook.GetNamespace(\"MAPI\").PickFolder\r\n                     rst.Edit\r\n                     Verzeichnis = objFolder.FolderPath\r\n                     rst.Update\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n                 <span style=\"color:blue;\">Set<\/span> .Folder = objFolder\r\n                 .AnlagenSpeichern = rst!AnlagenSpeichern\r\n                 <span style=\"color:blue;\">Set<\/span> .Database = db\r\n                 .NeuEinlesen = rst!NeuEinlesen\r\n                 .Groesse = Nz(rst!Groesse)\r\n             End <span style=\"color:blue;\">With<\/span>\r\n             colFolders.Add objFolderArchiv\r\n             <span style=\"color:blue;\">If <\/span>rst!Rekursiv<span style=\"color:blue;\"> Then<\/span>\r\n                 UnterordnerInstanzieren objFolder, db, Nz(rst!Groesse), rst!NeuEinlesen, rst!AnlagenSpeichern, colFolders\r\n             <span style=\"color:blue;\">End If<\/span>\r\n             rst.Move<span style=\"color:blue;\">Next<\/span>\r\n         <span style=\"color:blue;\">Loop<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Die Prozedur Application_Startup_Ticketverwaltung<\/span><\/b><\/p>\n<p>Zur Erinnerung: Die Prozedur ermittelt zun&auml;chst &uuml;ber die Funktion <b>DatenbankpfadHolen <\/b>den aktuell in einer <b>UserProperty <\/b>in Outlook gespeicherten Pfad der Datenbank, also in unserem Fall der Datei <b>Ticketverwaltung.accdb<\/b>. Wenn dies eine leere Zeichenkette liefert, wird eine Meldung angezeigt, dass die Verbindung zur Ticket-verwaltung nicht hergestellt werden konnte und die Prozedur beendet.<\/p>\n<p>Anderenfalls f&uuml;llt die Prozedur eine <b>Database<\/b>-Variable mit einem Verweis auf die angegebene Datenbank, und zwar &uuml;ber die <b>OpenDatabase<\/b>-Methode. Dann &ouml;ffnet sie ein Recordset auf Basis der Tabelle <b>tblOptionen<\/b> und referenziert dieses mit der Variablen <b>rst<\/b>.<\/p>\n<p>Die Tabelle enth&auml;lt keinen, einen oder mehrere Eintr&auml;ge mit Angabe von Outlook-Verzeichnissen, in die der Benutzer Kunden-E-Mails verschieben kann, damit auf ihrer Basis ein Ticket in der Ticketverwaltung angelegt wird. Hier pr&uuml;ft die Prozedur zun&auml;chst, ob &uuml;berhaupt ein Datensatz vorliebt (<b>rst.EOF<\/b>).<\/p>\n<p>Ist das der Fall, erscheint die Meldung, dass nun ein Outlook-Verzeichnis ausgew&auml;hlt werden kann, das als Auffangbeh&auml;lter f&uuml;r die Kunden-E-Mails dienen soll. Dieses Verzeichnis wird dann mit dem &uuml;ber die <b>PickFolder<\/b>-Methode ge&ouml;ffneten Dialog <b>Ordner ausw&auml;hlen <\/b>selektiert. Hat der Benutzer einen Ordner ausgew&auml;hlt, wird ein neuer Datensatz in der Tabelle <b>tblOptionen <\/b>angelegt und mit dem Verzeichnisnamen aus Outlook gef&uuml;llt. Au&szlig;erdem wird das <b>Folder<\/b>-Objekt der Collection aus <b>colFolders <\/b>hinzugef&uuml;gt.<\/p>\n<p>Sollte <b>rst.EOF <\/b>den Wert <b>False <\/b>zur&uuml;ckliefern, enth&auml;lt die Tabelle <b>tblOptionen <\/b>mindestens einen Datensatz. In diesem Fall durchl&auml;uft die Prozedur in einer <b>Do While<\/b>-Schleife alle Eintr&auml;ge der Tabelle und versucht jeweils &uuml;ber die Funktion <b>GetFolderByPath <\/b>ein <b>Folder<\/b>-Objekt auf Basis der Pfadangabe zu erhalten &#8211; also etwa &uuml;ber <b>\\OutlookPosteingangTicketsystem<\/b>. Eingebettet sind diese Anweisungen in das Erstellen eines neuen Objekts auf Basis der Klasse <b>clsFolderArchiv<\/b>, dem das <b>Folder<\/b>-Objekt und die Datenbank als Eigenschaften zugewiesen werden. Diese Klasse enth&auml;lt die Automatismen, die daf&uuml;r sorgen, dass eine in ein damit referenziertes <b>Folder<\/b>-Objekt eingef&uuml;gten Mails automatisch in die Ticketverwaltungs-Datenbank eingetragen und auf spezielle Art markiert werden &#8211; n&auml;mlich durch Voranstellen der Zeichenfolge <b>[Ticket x]<\/b>, wobei <b>x <\/b>der Nummer des Datensatzes entspricht.<\/p>\n<p>Kann kein <b>Folder<\/b>-Objekt zu diesem Verzeichnis gefunden werden, erscheint die Meldung, dass der Outlook-Ordner nicht vorhanden ist und dass der Benutzer einen neuen Ordner ausw&auml;hlen soll. Dies geschieht dann wiederum &uuml;ber den Dialog <b>Ordner ausw&auml;hlen<\/b>.<\/p>\n<p>Der so ausgew&auml;hlte Ordner wird dann in das Feld <b>Verzeichnis <\/b>des aktuellen Datensatzes eingetragen. Au&szlig;erdem werden auch hier das <b>Folder<\/b>-Objekt und die Referenz auf die Datenbank in ein neu erstelltes Objekt des Typs <b>clsFolderArchiv <\/b>eingetragen. Dieser Vorgang kann auch f&uuml;r mehr als einen Outlook-Ordner erfolgen, sofern dieser in der Tabelle <b>tblOptionen <\/b>eingetragen ist. Hier werden dann auch noch weitere Eigenschaften zum neu erstellten Objekt <b>objFolderArchiv <\/b>hinzugef&uuml;gt, die in der nachfolgend beschriebenen Tabelle <b>tblOptionen <\/b>gespeichert werden.<\/p>\n<p>Sollte das Feld <b>Rekursiv <\/b>des Datensatzes der Tabelle <b>tblOptionen <\/b>den Wert <b>True <\/b>aufweisen, ruft die Prozedur noch die Routine <b>UnterordnerInstanzieren <\/b>auf, welche alle unterhalb des angegebenen Outlook-Verzeichnisses enthaltenen Verzeichnisse mit jeweils einem <b>clsFolderArchiv<\/b>-Objekt referenziert und zur Auflistung <b>colFolders <\/b>hinzuf&uuml;gt.<\/p>\n<h2>Die Tabelle tblOptionen<\/h2>\n<p>Noch nicht im Detail beschrieben wurde die Tabelle <b>tblOptionen<\/b>. Diese ist wie in Bild 7 aufgebaut und enth&auml;lt mehr Optionen als nur die Einstellung der Folder aus Outlook, aus denen die E-Mails der Kunden eingelesen werden sollen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_005.png\" alt=\"Entwurf der Tabelle tblOptionen\" width=\"649,559\" height=\"447,207\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Entwurf der Tabelle tblOptionen<\/span><\/b><\/p>\n<p>Die Felder haben folgende Bedeutung:<\/p>\n<ul>\n<li><b>OptionID<\/b>: Autowert\/Prim&auml;rschl&uuml;sselfeld der Tabelle<\/li>\n<li><b>Verzeichnis<\/b>: Verzeichnis in Outlook, dessen Daten eingelesen werden sollen<\/li>\n<li><b>Rekursiv<\/b>: Gibt an, ob untergeordnete Verzeichnisse ebenfalls untersucht werden sollen.<\/li>\n<li><b>VorhandeneLoeschen<\/b>: Gibt an, ob vorhandene Tickets beim Einlesen gel&ouml;scht werden sollen.<\/li>\n<li><b>Groesse<\/b>: Maximale Gr&ouml;&szlig;e der E-Mail<\/li>\n<li><b>NeuEinlesen<\/b>: Gibt an, ob E-Mails neu eingelesen werden sollen.<\/li>\n<li><b>AnlagenSpeichern<\/b>: Gibt an, ob die Anlagen der E-Mail gespeichert werden sollen.<\/li>\n<\/ul>\n<p>Der soeben beim ersten &Ouml;ffnen von Outlook mit den implementierten Funktionen unserer L&ouml;sung angelegte Datensatz sieht etwa wie in Bild 8 aus. Auch wenn theoretisch die M&ouml;glichkeit besteht, hier mehrere Ordner anzugeben, wollen wir nur diesen einen verwenden.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_006.png\" alt=\"Beispieldatensatz in der Tabelle tblOptionen\" width=\"700\" height=\"146,3236\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Beispieldatensatz in der Tabelle tblOptionen<\/span><\/b><\/p>\n<p>Sie haben ja immerhin die M&ouml;glichkeit, die Option <b>Rekursiv <\/b>auf <b>True <\/b>einzustellen und damit auch die untergeordneten Ordner des in Verzeichnis angegebenen Outlook-Ordners einzulesen.<\/p>\n<h2>Formular zum Verwalten der Optionen<\/h2>\n<p>Mit der bisherigen Vorgehensweise zum Festlegen des Outlook-Ordners beim ersten &Ouml;ffnen von Outlook nach dem Hinzuf&uuml;gen des neuen Outlook-VBA-Projekts beziehungsweise kann der Benutzer nur das Outlook-Verzeichnis angeben, aber keine weiteren Parameter. Er kann also beispielsweise nicht festlegen, dass die untergeordneten Verzeichnisse auch noch eingelesen werden sollen.<\/p>\n<p>Also stellen wir dem Benutzer noch einen Dialog zum Verwalten der Optionen zur Verf&uuml;gung. Diesen bilden wir mit einem Formular ab, das wir <b>frmOptionen <\/b>nennen. F&uuml;r das Formular legen wir die Tabelle <b>tblOptionen <\/b>als Datensatzquelle fest. Auch wenn die Tabelle mehr als ein Verzeichnis aufnehmen und auch die in Outlook vorgesehenen Prozeduren mehrere Verzeichnisse f&uuml;r Leseranfragen verwalten k&ouml;nnte, wollen wir uns auf ein Verzeichnis beschr&auml;nken &#8211; der Benutzer kann ja aktivieren, dass Unterverzeichnisse ber&uuml;cksichtigt werden.<\/p>\n<p>Deshalb stellen wir die Eigenschaft <b>Zyklus <\/b>auf <b>Aktueller Datensatz <\/b>ein und entfernen durch Einstellen der Eigenschaft <b>Navigationsschaltfl&auml;chen <\/b>auf den Wert <b>Nein <\/b>die Steuer-elemente, mit denen der Benutzer andere Datens&auml;tze ansteuern k&ouml;nnte. Au&szlig;erdem legen wir noch f&uuml;r die Eigenschaften <b>Datensatzmarkierer<\/b>, <b>Bildlaufleisten <\/b>und <b>Trennlinien <\/b>auf <b>Nein <\/b>ein und <b>Automatisch zentrieren <\/b>auf <b>Ja<\/b>.<\/p>\n<p>Schlie&szlig;lich f&uuml;gen wir noch eine Schaltfl&auml;che neben dem Textfeld f&uuml;r das Feld <b>Verzeichnis <\/b>ein und eine <b>OK<\/b>-Schaltfl&auml;che. Das Ergebnis sieht dann wie in Bild 9 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_010.png\" alt=\"Dialog zum Verwalten der Optionen\" width=\"424,7115\" height=\"200,3531\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Dialog zum Verwalten der Optionen<\/span><\/b><\/p>\n<p>Wenn der Benutzer auf die Schaltfl&auml;che <b>cmdOutlookordner <\/b>klickt, soll der Dialog zum Ausw&auml;hlen eines Outlook-Ordners erscheinen. Das erreichen wir durch den Aufruf der Funktion <b>GetFolder<\/b>, deren Ergebnis wir in Form der Eigenschaft <b>FolderPath <\/b>in das Textfeld <b>Verzeichnis <\/b>eintragen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdOutlookordner_Click()\r\n     Me!Verzeichnis = GetFolder.FolderPath\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Schaltfl&auml;che <b>cmdOK <\/b>soll den Optionen-Dialog schlie&szlig;en:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdOK_Click()\r\n     DoCmd.Close acForm, Me.Name\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Schlie&szlig;lich wollen wir dem Ribbon noch eine Schaltfl&auml;che hinzuf&uuml;gen, damit der Benutzer den Optionen-Dialog komfortabel aufrufen kann. Dazu erweitern wir die Definition des Ribbons <b>Main <\/b>in der Tabelle <b>USysRibbons <\/b>wie folgt:<\/p>\n<pre>&lt;customUI ... onLoad=\"OnLoad_Main\" loadImage=\"loadImage\"&gt;\r\n   &lt;ribbon startFromScratch=\"true\"&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab id=\"tabMails\" label=\"TICKETSYSTEM\"&gt;\r\n         &lt;group id=\"grpOptionen\" label=\"Optionen\"&gt;\r\n           &lt;button image=\"tools\" label=\"Optionen\" \r\n                   id=\"btnOptionen\" onAction=\"onAction\" \r\n                   size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/tab&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n   ...\r\n&lt;\/customUI&gt;<\/pre>\n<p>Und auch der Prozedur <b>onAction <\/b>f&uuml;gen wir einen neuen Zweig zur <b>Select Case<\/b>-Bedingung hinzu:<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>onAction(Control<span style=\"color:blue;\"> As <\/span>IRibbonControl)\r\n     ...\r\n     Select Case Control.ID\r\n         ...\r\n         <span style=\"color:blue;\">Case <\/span>\"btnOptionen\"\r\n             DoCmd.OpenForm \"frmOptionen\"\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit erscheint das Ribbon dann wie in Bild 10.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_009.png\" alt=\"Neuer Ribbon-Eintrag zum Aufrufen des Optionen-Dialogs\" width=\"649,559\" height=\"197,7896\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Neuer Ribbon-Eintrag zum Aufrufen des Optionen-Dialogs<\/span><\/b><\/p>\n<p>Da sich die &Auml;nderungen an den Optionen erst auswirken, wenn Outlook neu gestartet wurde, zeigen wir dies dem Benutzer noch per Meldungsfenster an.<\/p>\n<p>Dieses erscheint, wenn der Datensatz ge&auml;ndert wurde und der Benutzer den Dialog schlie&szlig;en m&ouml;chte:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>Me.Dirty<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Wenn Sie &Auml;nderungen vorgenommen haben,  m&uuml;ssen Sie Outlook neu starten, damit diese  wirksam werden.\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Antworten des Kunden erfassen<\/h2>\n<p>Wenn der Kunde eine E-Mail sendet, die der Benutzer in das Verzeichnis f&uuml;r das Ticketsystem verschiebt, wird dem Betreff das Pr&auml;fix <b>[Ticket_x] <\/b>vorangestellt. Au&szlig;erdem wird ein entsprechender Datensatz in der Tabelle <b>tblMailItems <\/b>angelegt.<\/p>\n<p>Im Formular <b>frmOffeneEMails <\/b>hat der Benutzer nun die Gelegenheit, aus der E-Mail ein Ticket zu erstellen. Dazu erledigt er folgende Schritte (siehe Bild 11):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_011.png\" alt=\"Anlegen eines neuen Tickets\" width=\"700\" height=\"371,875\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Anlegen eines neuen Tickets<\/span><\/b><\/p>\n<ul>\n<li>Markieren der E-Mail, deren Inhalt dadurch in die Felder unter dem Listenfeld wird,<\/li>\n<li>Ausw&auml;hlen des Kunden, falls dieser bereits in der Datenbank gespeichert ist, oder Anlegen eines neuen Kunden durch Ausw&auml;hlen des Kombinationsfeldeintrags <b><Neuer Kunde><\/b>,<\/li>\n<li>&Uuml;bertragen der gew&uuml;nschten Inhalte aus dem Betreff und dem Inhalt der Mail. Dazu markieren des Zielfeldes des neuen Tickets (also <b>Bezeichnung <\/b>oder <b>Inhalt<\/b>). Dann den gew&uuml;nschten Inhalt in den Feldern <b>Betreff <\/b>und <b>Body <\/b>der E-Mail durch einfaches Markieren direkt in das Zielfeld &uuml;bertragen.<\/li>\n<li>Schlie&szlig;lich Anlegen des Tickets durch einen Mausklick auf die Schaltfl&auml;che <b>Anlegen<\/b>.<\/li>\n<\/ul>\n<p>Das Formular wird dann geschlossen, sofern keine weiteren offenen Kundenanfragen vorhanden sind.<\/p>\n<p>Dann &ouml;ffnen Sie die Ticket&uuml;bersicht &uuml;ber den entsprechenden Ribbon-Eintrag und w&auml;hlen das zu bearbeitende Ticket aus (siehe Bild 12). Ein Klick auf die Schaltfl&auml;che <b>Bearbeiten<\/b> &ouml;ffnet das Ticket.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_012.png\" alt=\"Aufrufen des neuen Tickets\" width=\"649,559\" height=\"345,3706\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Aufrufen des neuen Tickets<\/span><\/b><\/p>\n<p>Hier finden Sie dann vor allem die M&ouml;glichkeit, durch die Auswahl eines der Eintr&auml;ge des Kombinationsfeldes <b>Neue Aktion: <\/b>auf die Anfrage des Kunden zu reagieren (siehe Bild 13). In der vorherigen Version gab es beim Erstellen einer Antwort einen Fehler, weil wir dort nicht ber&uuml;cksichtigt haben, dass wir zu jedem Kunden mehrere E-Mail-Adressen speichern, um von verschiedenen Adressen gesendete Leseranfragen automatisch dem entsprechenden Kunden zuordnen zu k&ouml;nnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_05\/pic_1209_013.png\" alt=\"Erstellen einer Antwort\" width=\"549,6265\" height=\"514,777\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Erstellen einer Antwort<\/span><\/b><\/p>\n<p>Dies haben wir in der aktuellen Version korrigiert, indem wir eine Abfrage namens <b>qryKundenAnredenEMail <\/b>erstellt haben und diese in der Prozedur <b>cboNeueAktion_AfterUpdate <\/b>verwenden. Diese Prozedur ist daf&uuml;r verantwortlich, die Antwort an den Kunden und gegebenenfalls weitere E-Mails zu erstellen und die enthaltenen Platzhalter mit den notwendigen Informationen zu dem Kunden und aus den E-Mail-Vorlagen zu f&uuml;llen.<\/p>\n<p>Der aus dem Kombinationsfeld <b>Neue Aktion <\/b>gew&auml;hlte Eintrag wie etwa <b>Neue Rechnung <\/b>oder <b>Fehlende Lieferung <\/b>wird im Formular <b>frmAktionsgruppe<\/b> bearbeitet, wo sie einen oder mehrere Aktionstypen aus dem Formular <b>frmAktionstyp <\/b>zusammenstellen k&ouml;nnen. Aktionstypen sind aktuell nur E-Mails, die wir dann zu Aktionsgruppen zusammenstellen.<\/p>\n<h2>&Auml;nderungen an der Datenbank<\/h2>\n<p>Wenn Sie &Auml;nderungen am Entwurf der Ticketverwaltung vornehmen m&ouml;chten, kann es sein, dass Access meldet, dass die Datenbank nicht exklusiv ge&ouml;ffnet ist.<\/p>\n<p>In diesem Fall ist vermutlich gerade Outlook ge&ouml;ffnet und hat eine Verbindung zur Datenbank hergestellt. Sie m&uuml;ssen dann erst Outlook schlie&szlig;en und die Datenbank erneut &ouml;ffnen, um &Auml;nderungen an der Datenbank vorzunehmen.<\/p>\n<h2>Outlook &ouml;ffnen, wenn die Datenbank ge&ouml;ffnet ist<\/h2>\n<p>Wenn die Datenbank bereits ge&ouml;ffnet ist (in der Regel exklusiv) und Sie dann Outlook &ouml;ffnen, kann es zu Fehlern kommen &#8211; zum Beispiel, wenn die Tabelle <b>tblOptionen <\/b>gerade in der Entwurfsansicht ge&ouml;ffnet ist.<\/p>\n<p>Das sollte nicht geschehen, wenn die Datenbankobjekte in der normalen Ansicht ge&ouml;ffnet sind, also nicht in der Entwurfsansicht.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Im letzten Teil der Beitragsreihe werden wir in der folgenden Ausgabe von <b>Access im Unternehmen <\/b>das Formular <b>frmTicket <\/b>vervollst&auml;ndigen.<\/p>\n<p>Hier sind noch folgende Dinge zu erledigen:<\/p>\n<ul>\n<li>Zu den einzelnen per <b>Neue Aktion <\/b>hinzugef&uuml;gten Aktionen soll es m&ouml;glich sein, die entsprechenden E-Mails in Outlook anzuzeigen.<\/li>\n<li>Die Antworten des Benutzers sollen erkannt werden. Dazu soll der Benutzer die Markierung im Betreff (etwa <b>[Ticketx] <\/b>mit <b>x <\/b>f&uuml;r die Nummer des Tickets) in der Antwort beibehalten. Solche E-Mails sollen dann ebenfalls in den Ticketverwaltungs-Ordner von Outlook verschoben werden, wo sie dann direkt dem jeweiligen Ticket zugeordnet werden.<\/li>\n<li>Au&szlig;erdem wollen wir das Formular <b>frmTickets <\/b>noch so anpassen, dass Sie nach Tickets filtern k&ouml;nnen &#8211; nach verschiedenen Kriterien wie dem Kunden, der Bezeichnung, dem Inhalt, dem Datum oder auch dem Status.<\/li>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Ticketsystem.accdb<\/p>\n<p>clsFolderArchiv.cls<\/p>\n<p>mdlTicketverwaltung.bas<\/p>\n<p>mdlTicketverwaltung_Folders.bas<\/p>\n<p>mdlTicketverwaltung_Global.bas<\/p>\n<p>mdlTicketverwaltung_Outlook.bas<\/p>\n<p>VbaProject.OTM<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/A188278F-553D-4DD3-B098-C1CF12736CB8\/aiu_1209.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In den vorherigen Teilen dieser Beitragsreihe haben wir den Aufbau einiger Funktionen eines Ticketsystems beschrieben. Es fehlt noch der letzte Feinschliff: Wir wollen die erneuten Antworten von Kunden auf unsere als Antwort versendeten E-Mails automatisch in die Ticketverwaltung aufnehmen. Bevor wir das im n&auml;chsten Teil erledigen k&ouml;nnen, haben wir noch einige Feinheiten erg&auml;nzt und werfen au&szlig;erdem noch einmal einen zusammenfassenden Blick &uuml;ber die bisher programmierten Funktionen und die Inbetriebnahme der Ticketverwaltung inklusive der Einrichtung in Outlook. Au&szlig;erdem f&uuml;gen wir noch einen Dialog zur Verwaltung der Optionen der L&ouml;sung hinzu.<\/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":[662019,66052019,44000027],"tags":[],"class_list":["post-55001209","post","type-post","status-publish","format-standard","hentry","category-662019","category-66052019","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ticketsystem, Teil V - 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\/Ticketsystem_Teil_V\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ticketsystem, Teil V\" \/>\n<meta property=\"og:description\" content=\"In den vorherigen Teilen dieser Beitragsreihe haben wir den Aufbau einiger Funktionen eines Ticketsystems beschrieben. Es fehlt noch der letzte Feinschliff: Wir wollen die erneuten Antworten von Kunden auf unsere als Antwort versendeten E-Mails automatisch in die Ticketverwaltung aufnehmen. Bevor wir das im n&auml;chsten Teil erledigen k&ouml;nnen, haben wir noch einige Feinheiten erg&auml;nzt und werfen au&szlig;erdem noch einmal einen zusammenfassenden Blick &uuml;ber die bisher programmierten Funktionen und die Inbetriebnahme der Ticketverwaltung inklusive der Einrichtung in Outlook. Au&szlig;erdem f&uuml;gen wir noch einen Dialog zur Verwaltung der Optionen der L&ouml;sung hinzu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T20:56:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404\" \/>\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=\"16\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Ticketsystem, Teil V\",\"datePublished\":\"2020-05-13T20:56:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/\"},\"wordCount\":2931,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6dba9892cb884027ac0fcf275abf3404\",\"articleSection\":[\"2019\",\"5\\\/2019\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/\",\"name\":\"Ticketsystem, Teil V - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6dba9892cb884027ac0fcf275abf3404\",\"datePublished\":\"2020-05-13T20:56:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6dba9892cb884027ac0fcf275abf3404\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6dba9892cb884027ac0fcf275abf3404\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_V\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ticketsystem, Teil V\"}]},{\"@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":"Ticketsystem, Teil V - 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\/Ticketsystem_Teil_V\/","og_locale":"de_DE","og_type":"article","og_title":"Ticketsystem, Teil V","og_description":"In den vorherigen Teilen dieser Beitragsreihe haben wir den Aufbau einiger Funktionen eines Ticketsystems beschrieben. Es fehlt noch der letzte Feinschliff: Wir wollen die erneuten Antworten von Kunden auf unsere als Antwort versendeten E-Mails automatisch in die Ticketverwaltung aufnehmen. Bevor wir das im n&auml;chsten Teil erledigen k&ouml;nnen, haben wir noch einige Feinheiten erg&auml;nzt und werfen au&szlig;erdem noch einmal einen zusammenfassenden Blick &uuml;ber die bisher programmierten Funktionen und die Inbetriebnahme der Ticketverwaltung inklusive der Einrichtung in Outlook. Au&szlig;erdem f&uuml;gen wir noch einen Dialog zur Verwaltung der Optionen der L&ouml;sung hinzu.","og_url":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T20:56:51+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"16\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Ticketsystem, Teil V","datePublished":"2020-05-13T20:56:51+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/"},"wordCount":2931,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404","articleSection":["2019","5\/2019","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/","url":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/","name":"Ticketsystem, Teil V - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404","datePublished":"2020-05-13T20:56:51+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/6dba9892cb884027ac0fcf275abf3404"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_V\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Ticketsystem, Teil V"}]},{"@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\/55001209","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=55001209"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001209\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}