{"id":55001033,"date":"2016-04-01T00:00:00","date_gmt":"2020-05-22T19:02:26","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1033"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ticketsystem_Teil_1","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/","title":{"rendered":"Ticketsystem, Teil 1"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wer Access-Anwendungen entwickelt, erledigt dies in der Regel f&uuml;r seine Kunden oder Benutzer. Ob es nun einer, wenige oder viele Benutzer sind: Fr&uuml;her oder sp&auml;ter meldet sich der eine oder andere mit Fehlermeldungen oder Verbesserungsw&uuml;nschen. Davon ausgehend, dass Sie diese auch ber&uuml;cksichtigen m&ouml;chten, ist hier ein funktionierendes System zur Erfassung und Abarbeitung der Anforderungen gefragt, gegebenenfalls auch f&uuml;r mehrere Benutzer. Wir gehen in diesem Fall von einer reinen E-Mail-Schnittstelle aus und wollen dazu Microsoft Outlook nutzen.<\/b><\/p>\n<h2>Aufgaben des Ticketsystems<\/h2>\n<p>Das Ticketsystem soll eine ganze Reihe von Aufgaben erleichtern. Die erste Aufgabe ist, die per E-Mail eingehenden Anfragen halbautomatisch zu erfassen. Halbautomatisch deshalb, weil eine vollautomatische Erfassung voraussetzen w&uuml;rde, dass alle derartigen Anfragen zumindest an eine eigens daf&uuml;r vorgesehene E-Mail-Adresse gerichtet sind &#8211; was nicht unbedingt immer der Fall ist, wie etwa beim Autor dieser Zeilen.<\/p>\n<p>E-Mails, die eine Anfrage enthalten, die mit dem Ticket-System verarbeitet werden soll, soll der Benutzer in Outlook in einen speziell daf&uuml;r vorgesehenen Outlook-Ordner verschieben. Diesen statten wir nat&uuml;rlich per VBA-Code so aus, dass die E-Mail dann automatisch weiterverarbeitet wird und in der Datenbank des Ticketsystems landet.<\/p>\n<p>E-Mails, die Bedingungen erf&uuml;llen, die auf eine Support-Anfrage hindeuten, k&ouml;nnen nat&uuml;rlich automatisch per Outlook-Regel erfasst und in den daf&uuml;r vorgesehenen Outlook-Ordner verschoben werden, von wo aus die Mail wie oben beschrieben weiterverarbeitet wird.<\/p>\n<p>Wenn eine E-Mail in Form eines Tickets im Ticketsystem angelegt wurde, sollen verschiedene Schritte erfolgen: Zum Beispiel muss die E-Mail so ausgewertet werden, dass sich ein Kunde daraus ableiten l&auml;sst. Die Kunden speichert das Ticketsystem in einer eigenen Tabelle, wobei wir uns hier auf die Daten Anrede, Vorname und Nachname beschr&auml;nken wollen &#8211; und nat&uuml;rlich die E-Mail-Adresse. Hier wird es interessant, denn ein Kunde kann durchaus mehr als eine E-Mail-Adresse verwenden. Also m&uuml;ssen wir die E-Mail-Adressen separat in einer eigenen Tabelle verwalten.<\/p>\n<p>Sobald einmal ein Kundendatensatz f&uuml;r eine E-Mail-Adresse angelegt wurde, sollen eingehende E-Mails mit dieser Absenderadresse automatisch dem Kunden zugeordnet werden.<\/p>\n<p>Bei der Bearbeitung eines Tickets k&ouml;nnen verschiedene Aufgaben anfallen:<\/p>\n<ul>\n<li>das Erstellen einer Notiz,<\/li>\n<li>das Erstellen einer Aufgabe oder<\/li>\n<li>das Beantworten der E-Mail.<\/li>\n<\/ul>\n<p>Notizen haben lediglich informativen Charakter und sollen daf&uuml;r sorgen, dass Informationen nicht verloren gehen. Aufgaben sollen sortiert und bearbeitet werden k&ouml;nnen, damit man sieht, welche Teilschritte zum Fertigstellen eines Tickets n&ouml;tig und welche bereits erledigt sind. E-Mail-Antworten enthalten beispielsweise R&uuml;ckfragen oder aber die Mitteilung, ob und wie das Problem gel&ouml;st werden konnte. Die jeweils erste Antwort zu einem Ticket soll im Betreff mit einer eindeutigen ID ausgestattet werden, die der Kunde in seiner Antwort weiterverwenden soll. Auf diese Weise braucht man nicht mehr die E-Mail-Adresse der Antworten heranzuziehen, um die Antwort zuzuordnen, sondern kann diese direkt dem Ticket zuweisen.<\/p>\n<p>Um auch dem Autor dieses Beitrags den Alltag zu erleichtern, wollen wir f&uuml;r die Antworten auf die Kundenanfragen auch einige Textbausteine vorsehen, die h&auml;ufiger vorkommende Anfragen beantworten. Diese Textbausteine sollen nat&uuml;rlich mit Platzhaltern versehen und mit den Daten des Kunden gef&uuml;llt werden.<\/p>\n<p>Und wenn Sie schon Kundenanfragen annehmen und diese mit einem Ticketsystem verwalten wollen, k&ouml;nnen Sie auch gleich die Reaktionszeiten tracken und entsprechende Statistiken ausgeben lassen.<\/p>\n<p>Den Rahmen eines einzigen Beitrags sprengt diese L&ouml;sung bei Weitem, daher finden Sie die einzelnen Elemente auf verschiedene Beitr&auml;ge aufgeteilt. Wir verweisen von diesem Hauptbeitrag aus auf weiterf&uuml;hrende Beitr&auml;ge.<\/p>\n<h2>E-Mails und Tickets<\/h2>\n<p>Den Ausgangspunkt f&uuml;r ein Ticket bildet eine E-Mail-Anfrage (diese kann beispielsweise direkt per Mail oder auch &uuml;ber ein Kontaktformular erstellt worden sein &#8211; wichtig ist, dass diese als E-Mail in Outlook eingeht und dort im entsprechenden Ordner f&uuml;r die Verarbeitung von E-Mail-Anfragen landet).<\/p>\n<p>Die E-Mail-Anfrage liefert uns einige Daten: die Absender-E-Mail-Adresse, gegebenenfalls den Vor- und den Nachnamen des Kunden sowie einen Text, der die Beschreibung des Problems enth&auml;lt. Aus diesen Informationen m&ouml;chten wir folgende Aktionen ableiten:<\/p>\n<ul>\n<li>Erstellen eines Kundendatensatzes, sofern dieser noch nicht vorhanden ist, oder<\/li>\n<li>Ausw&auml;hlen des Kundendatensatzes, welcher der E-Mail-Adresse des Absenders zugeordnet werden kann,<\/li>\n<li>Anlegen eines Tickets als neuen Datensatz in einer Ticket-Tabelle &#8211; inklusive Verweis auf die Ursprungs-E-Mail, den Kundendatensatz sowie mit einer Bezeichnung und dem Inhalt des Tickets.<\/li>\n<\/ul>\n<h2>Datenmodell<\/h2>\n<p>Das Datenmodell sieht bis hierher wie in Bild 1 aus. Die Tabelle <b>tblKunden <\/b>ist &uuml;ber das Feld <b>AnredeID <\/b>mit der Tabelle <b>tblAnreden <\/b>verkn&uuml;pft. Jedem Kunden k&ouml;nnen beliebig viele E-Mail-Adressen zugeordnet werden, also gibt es eine Tabelle namens <b>tblEMailAdressen<\/b>, die &uuml;ber das Fremdschl&uuml;sselfeld <b>KundeID <\/b>mit der Tabelle <b>tblKunden <\/b>verkn&uuml;pft ist.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_1033_001.png\" alt=\"Datenmodell f&uuml;r den ersten Teil der Beitragsreihe\" width=\"700\" height=\"460,1334\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Datenmodell f&uuml;r den ersten Teil der Beitragsreihe<\/span><\/b><\/p>\n<p>Zu jedem Kunden kann es nat&uuml;rlich auch beliebig viele Tickets geben. Daher ist die Tabelle <b>tblTickets <\/b>ebenfalls &uuml;ber ein Fremdschl&uuml;sselfeld, wieder namens <b>KundeID<\/b>, mit der Tabelle <b>tblKunden <\/b>verkn&uuml;pft.<\/p>\n<p>Diese Tabelle enth&auml;lt neben dem Prim&auml;rschl&uuml;sselfeld und dem Fremdschl&uuml;sselfeld <b>KundeID <\/b>noch folgende weitere Felder:<\/p>\n<ul>\n<li><b>Ticketbezeichnung<\/b>: Nimmt die Bezeichnung des Tickets auf.<\/li>\n<li><b>Ticketinhalt<\/b>: Ist ein Memofeld mit Formatierung <b>Rich-Text<\/b>, um den Inhalt des Tickets zu beschreiben.<\/li>\n<li><b>AngelegtAm<\/b>: Datum, an dem das Ticket angelegt wurde.<\/li>\n<li><b>ErledigtAm<\/b>: Datum, an dem das Ticket abgeschlossen wurde.<\/li>\n<li><b>MailItemID<\/b>: Fremdschl&uuml;sselfeld zu einem Eintrag der Tabelle <b>tblMailItems<\/b>. Speichert den Bezug zu der E-Mail, auf deren Basis das Ticket entstanden ist.<\/li>\n<\/ul>\n<p>Die Tabelle <b>tblMailItems <\/b>kennen Sie vielleicht bereits: Wir haben diese im Beitrag <b>Outlook-Mails nach Empfang archivieren <\/b>(<b>www.access-im-unternehmen.de\/1007<\/b>) vorgestellt. Wir werden auch die dort erl&auml;uterten Techniken zum halbautomatischen Einlesen von E-Mails in diese Tabelle in abgewandelter Form verwenden.<\/p>\n<p>Fehlt noch die Tabelle <b>tblNotizen<\/b>, die wir in diesem Teil noch nicht erl&auml;utern werden, aber die zum Speichern von Notizen zum jeweiligen Ticket verwendet wird. Im Beitrag <b>HTML-Liste mit Access-Daten <\/b>(<b>www.access-im-unternehmen.de\/1029<\/b>) erfahren Sie schon einmal, wie die Notizen sp&auml;ter dargestellt werden sollen.<\/p>\n<h2>Kunden und E-Mail-Adressen<\/h2>\n<p>Wir schauen uns zuerst das Formular an, mit dem wir die Kunden und deren E-Mail-Adressen verwalten. Dieses sieht im Entwurf wie in Bild 2 aus und verwendet die Tabelle <b>tblKunden<\/b> als Datenherkunft. Da das Formular nur jeweils einen Datensatz zum Bearbeiten anzeigen soll beziehungsweise zum Anlegen eines neuen Kunden verwendet werden soll, stellen Sie die Eigenschaften <b>Datensatzmarkierer<\/b>, <b>Navigationsschaltfl&auml;chen<\/b>, <b>Trennlinien <\/b>und <b>Bildlaufleisten <\/b>auf den Wert <b>Nein <\/b>ein. Au&szlig;erdem erh&auml;lt <b>Automatisch zentrieren <\/b>den Wert <b>Ja<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_1033_002.png\" alt=\"Entwurf des Formulars frmKundeDetail\" width=\"424,6255\" height=\"365,5472\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Entwurf des Formulars frmKundeDetail<\/span><\/b><\/p>\n<p>Die E-Mail-Adressen zum jeweiligen Kunden steuert das Unterformular <b>sfmEMailAdressen <\/b>bei. Als Datenherkunft dient hier die Tabelle <b>tblEMailAdressen<\/b>. Das Formular soll seine Daten in der Datenblattansicht darstellen, also verwenden Sie f&uuml;r die Eigenschaft <b>Standardansicht <\/b>den Wert <b>Datenblatt<\/b>.<\/p>\n<p>Wenn Sie das Unterformular <b>sfmEMailAdressen <\/b>aus dem Navigationsbereich in den Entwurf des Hauptformulars <b>frmKundeDetail <\/b>ziehen, sollte Access die Eigenschaften <b>Verkn&uuml;pfen von <\/b>und <b>Verkn&uuml;pfen nach <\/b>des Unterformular-Steuerelements automatisch jeweils auf den Wert <b>KundeID <\/b>einstellen &#8211; falls nicht, holen Sie dies manuell nach.<\/p>\n<h2>Beim &ouml;ffnen der Kundendetails<\/h2>\n<p><!--30percent--><\/p>\n<p>Das Formular <b>frmKundeDetails <\/b>soll entweder zum Anlegen eines neuen Datensatzes oder zum Bearbeiten eines vorhandenen Datensatzes ge&ouml;ffnet werden.<\/p>\n<p>Im Falle des Anlegens sollen gleich ein paar Standardwerte gesetzt werden; au&szlig;erdem gehen wir hier davon aus, dass der Benutzer gleich die E-Mail-Adresse des zu erstellenden Benutzers &uuml;bergibt &#8211; und zwar mit <b>OpenArgs<\/b>-Parameter.<\/p>\n<p>Der Aufruf w&uuml;rde dann etwa so aussehen:<\/p>\n<pre>DoCmd.OpenForm \"frmKundeDetail\", DataMode:=acFormAdd, OpenArgs:=\"andre@minhorst.com\"<\/pre>\n<p>Das Formular sollte sich dann wie in Bild 3 pr&auml;sentieren: Die &uuml;bergebene E-Mail-Adresse ist bereits im Unterformular eingestellt, die Anrede ist mit <b>Herr <\/b>vorbelegt, das Kombinationsfeld aber f&uuml;r eine m&ouml;gliche &auml;nderung bereits ge&ouml;ffnet.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_1033_003.png\" alt=\"Das Formular frmKundeDetail beim Anlegen eines neuen Kunden\" width=\"424,6255\" height=\"332,3612\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Das Formular frmKundeDetail beim Anlegen eines neuen Kunden<\/span><\/b><\/p>\n<p>Damit dies geschieht, sind ein paar Zeilen Code notwendig. Diese finden Sie in Listing 1. Die dortige Prozedur wird durch das Ereignis <b>Beim Laden <\/b>des Formulars ausgel&ouml;st. Die Prozedur pr&uuml;ft zun&auml;chst anhand der nicht dokumentierten Eigenschaft <b>DefaultEditing<\/b>, in welchem Modus das Formular ge&ouml;ffnet wurde, also mit welchem Wert f&uuml;r den Parameter <b>DataMode <\/b>der <b>OpenForm<\/b>-Methode. Hat diese Eigenschaft den Wert <b>1<\/b>, wurde die Konstante <b>acFormAdd<\/b> verwendet, das Formular soll also zum Hinzuf&uuml;gen eines neuen Datensatzes genutzt werden.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     Select Case Me.DefaultEditing\r\n         <span style=\"color:blue;\">Case <\/span>1\r\n             <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(Nz(Me.OpenArgs, \"\")) = 0<span style=\"color:blue;\"> Then<\/span>\r\n                 Me!sfmEMailAdressen.Form!txtEMailadresse.DefaultValue = Chr(34) & Me.OpenArgs & Chr(34)\r\n             <span style=\"color:blue;\">Else<\/span>\r\n                 Me!sfmEMailAdressen.Form!txtEMailadresse.DefaultValue = Chr(34) & \"&lt;E-Mail-Adresse eingeben&gt;\" & Chr(34)\r\n             <span style=\"color:blue;\">End If<\/span>\r\n             Me!AnredeID.SetFocus\r\n             Me!AnredeID.DefaultValue = 1\r\n             Me.Dirty = <span style=\"color:blue;\">True<\/span>\r\n             Me!sfmEMailAdressen.SetFocus\r\n             Me!sfmEMailAdressen.Form!txtEMailadresse.SetFocus\r\n             Me!sfmEMailAdressen.Form.Dirty = <span style=\"color:blue;\">True<\/span>\r\n             Me!sfmEMailAdressen.Form!txtEMailadresse.DefaultValue = Chr(34) & Chr(34)\r\n             Me!AnredeID.SetFocus\r\n             Me!AnredeID.Dropdown\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Laden des Formulars frmKundeDetail<\/span><\/b><\/p>\n<p>In diesem Fall pr&uuml;ft die Prozedur, ob das &ouml;ffnungsargument, also die Eigenschaft <b>OpenArgs<\/b>, einen Wert enth&auml;lt. Dies sollte die E-Mail-Adresse f&uuml;r den anzulegenden Kunden sein. Ist diese vorhanden, tr&auml;gt die Prozedur die E-Mail-Adresse f&uuml;r das Textfeld <b>txtEMailAdresse <\/b>des Unterformulars als Standardwert ein. Diese Eigenschaft kann nur <b>String<\/b>-Werte entgegennehmen, deshalb m&uuml;ssen wir diese explizit in Anf&uuml;hrungszeichen einfassen, was wir mit <b>Chr(34) <\/b>vor und hinter der E-Mail-Adresse erledigen.<\/p>\n<p>Steckt keine E-Mail-Adresse in <b>Me.OpenArgs<\/b>, verwenden wir stattdessen den Ausdruck <b><E-Mail-Adresse eingeben><\/b>. Wir wollen hier sicherstellen, dass das Textfeld <b>EMailAdresse <\/b>einen Standardwert enth&auml;lt. Danach stellen wir f&uuml;r das Feld <b>AnredeID <\/b>den Wert <b>1 <\/b>als Standardwert ein (dies entspricht dem Wert <b>Herr<\/b>).<\/p>\n<p>Das Setzen der Eigenschaft <b>Dirty <\/b>des Formulars auf den Wert <b>True <\/b>sorgt daf&uuml;r, dass der Datensatz im Recordset des Formulars angelegt und mit einer Datensatznummer versehen wird. Damit k&ouml;nnen wir nun auch die E-Mail-Adresse im Unterformular speichern, denn dies w&auml;re nicht sinnvoll, wenn der Prim&auml;rschl&uuml;sselwert im Hauptformular noch den Wert <b>Null <\/b>enth&auml;lt &#8211; wir wollen den Datensatz im Unterformular ja mit dem im Hauptformular verkn&uuml;pfen.<\/p>\n<p>Da dies nun gew&auml;hrleistet ist, k&ouml;nnen wir auch den verkn&uuml;pften Datensatz der Tabelle <b>tblEMailAdressen <\/b>durch Setzen von <b>Dirty <\/b>auf den Wert <b>True <\/b>f&uuml;r das Unterformular anlegen. Zuvor m&uuml;ssen wir allerdings den Fokus auf das Unterformular-Steuerelement und dann auf ein Steuerelement im Unterformular setzen.<\/p>\n<p>Da die E-Mail-Adresse nun im Recordset angelegt ist, &auml;ndern wir noch den Standardwert f&uuml;r das Textfeld <b>txtEMail-Adresse <\/b>auf eine leere Zeichenkette. Schlie&szlig;lich setzen wir den Fokus wieder auf das Kombinationsfeld <b>AnredeID <\/b>und klappen dieses mit der Methode <b>DropDown <\/b>auf.<\/p>\n<h2>Speichern eines Kunden<\/h2>\n<p>Vor dem Speichern eines Kundendatensatzes soll die Prozedur, die durch das Anklicken der Schaltfl&auml;che <b>cmdOK <\/b>ausgel&ouml;st wird, die enthaltenen Daten validieren, damit diese nicht unvollst&auml;ndig sind. Die Prozedur hei&szlig;t <b>cmd-OK_Click<\/b> und sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdOK_Click()\r\n     Me.Visible = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das Ausblenden des Formulars l&ouml;st nun das Ereignis <b>Beim Entladen <\/b>aus, das wir wie in Listing 2 implementiert haben. Dieses nutzt die folgende modulweit deklarierte Variable:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Unload(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>bolCancel = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>Nz(Me!AnredeID) = 0<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Bitte w&auml;hlen Sie eine Anrede aus.\"\r\n             Me!AnredeID.SetFocus\r\n             Me!AnredeID.Dropdown\r\n             bolCancel = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Nz(Me!Vorname)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n                 <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie einen Vornamen ein.\"\r\n                 Me!Vorname.SetFocus\r\n                 bolCancel = <span style=\"color:blue;\">True<\/span>\r\n             <span style=\"color:blue;\">Else<\/span>\r\n                 <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Nz(Me!Nachname)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n                     <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie einen Nachnamen ein.\"\r\n                     Me!Nachname.SetFocus\r\n                     bolCancel = <span style=\"color:blue;\">True<\/span>\r\n                 <span style=\"color:blue;\">Else<\/span>\r\n                     <span style=\"color:blue;\">If <\/span>Me!sfmEMailAdressen.Form.Recordset.RecordCount = 0<span style=\"color:blue;\"> Then<\/span>\r\n                         <span style=\"color:blue;\">MsgBox<\/span> \"Bitte geben Sie eine E-Mail-Adresse ein.\"\r\n                         Me!sfmEMailAdressen.SetFocus\r\n                         Me!sfmEMailAdressen.Form!txtEMailadresse.SetFocus\r\n                         bolCancel = <span style=\"color:blue;\">True<\/span>\r\n                     <span style=\"color:blue;\">End If<\/span>\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         Cancel = bolCancel\r\n         Me.Visible = bolCancel\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     bolCancel = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Validierung vor dem Speichern eines Kundendatensatzes<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>bolCancel<span style=\"color:blue;\"> As Boolean<\/span><\/pre>\n<p>Die Prozedur pr&uuml;ft zuerst, ob <b>bolCancel <\/b>den Wert <b>False <\/b>hat. <b>bolCancel<\/b> wird nur dann auf <b>True <\/b>eingestellt, wenn der Benutzer das Formular &uuml;ber die <b>Abbrechen<\/b>-Schaltfl&auml;che verl&auml;sst. Die dadurch ausgel&ouml;ste Prozedur sieht so aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdAbbrechen_Click()\r\n     <span style=\"color:blue;\">If <\/span>Me.DefaultEditing = 1<span style=\"color:blue;\"> Then<\/span>\r\n         CurrentDb.Execute \"DELETE FROM tblKunden  WHERE KundeID = \" & Me!KundeID\r\n         bolCancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     DoCmd.Close acForm, Me.Name\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Sie pr&uuml;ft wieder, ob das Formular zum Hinzuf&uuml;gen eines Datensatzes ge&ouml;ffnet wurde. Falls ja, wird der bereits angelegte Datensatz wieder gel&ouml;scht, <b>bolCancel <\/b>auf <b>True <\/b>eingestellt und das Formular mit <b>DoCmd.Close acForm, Me.Name <\/b>geschlossen.<\/p>\n<p>Wichtig ist hier, dass <b>bolCancel <\/b>den Wert <b>True <\/b>erh&auml;lt, denn so kann die Prozedur <b>Form_Unload <\/b>direkt entscheiden, ob der Benutzer das Anlegen des Datensatzes abbricht (mit der <b>Abbrechen<\/b>-Schaltfl&auml;che) oder das Formular anderweitig schlie&szlig;t (&uuml;ber <b>OK <\/b>oder die Schlie&szlig;en-Schaltfl&auml;che oben rechts). Beim Abbrechen soll der Datensatz nicht validiert, sondern gel&ouml;scht werden.<\/p>\n<p>Hat <b>bolCancel <\/b>den Wert <b>False<\/b>, pr&uuml;ft die Prozedur <b>Form_Unload <\/b>zun&auml;chst den Wert des Feldes <b>AnredeID<\/b>. Hat der Benutzer dort keinen Wert ausgew&auml;hlt, erscheint eine Meldung, der Fokus wird auf das Feld <b>AnredeID <\/b>gesetzt und das Kombinationsfeld aufgeklappt, damit der Benutzer direkt sieht, was fehlt. Au&szlig;erdem endet die Prozedur hier.<\/p>\n<p>Ist die Anrede vorhanden, pr&uuml;ft die Prozedur den Vornamen. Auch hier erscheint eine Meldung, wenn dieser nicht angegeben wurde, der Fokus landet auf dem Feld <b>Vorname <\/b>und die Prozedur endet. Das Gleiche geschieht mit dem Feld <b>Nachname<\/b>. Sind <b>AnredeID<\/b>, <b>Vorname <\/b>und <b>Nachname <\/b>angegeben, folgt die Pr&uuml;fung der E-Mail-Adresse. Diese ist etwas aufwendiger, da diese ja &uuml;ber das Unterformular eingegeben werden. Es soll mindestens eine E-Mail-Adresse vorhanden sein, also liest die Prozedur den Wert der Eigenschaft <b>RecordCount <\/b>des <b>Recordset<\/b>-Objekts des Unterformulars aus. Ist dieser <b>0<\/b>, hat der Benutzer noch keine E-Mail-Adresse eingetragen und es erscheint die obligatorische Erinnerungsmeldung.<\/p>\n<p>Danach stellt die Prozedur den Fokus zuerst auf das Unterformular-Steuerelement und dann auf das Textfeld <b>txtEMailAdresse <\/b>ein, bevor sie die Prozedur beendet. Wurden alle Validierungen erfolgreich bestanden, blendet die letzte Anweisung das Formular aus.<\/p>\n<h2>Standard-E-Mail im Unterformular ausw&auml;hlen<\/h2>\n<p>Das Unterformular enth&auml;lt einige Zeilen Code, die daf&uuml;r sorgen, dass Sie unter mehreren E-Mail-Adressen die Standard-E-Mail-Adresse ganz einfach per Doppelklick ausw&auml;hlen k&ouml;nnen. Die dort verwendete Technik erkl&auml;ren wir ausf&uuml;hrlich im Beitrag <b>Standardwerte per bedingter Formatierung <\/b>(<b>www.access-im-unternehmen.de\/1028<\/b>).<\/p>\n<h2>Von der E-Mail zum Ticket<\/h2>\n<p>Kommern wir zu einer wichtigen Schnittstelle der Ticketverwaltung. Sie wollen ja nicht jede eingehende E-Mail in Outlook &ouml;ffnen, dann einen neuen Ticket-Datensatz in der Ticketverwaltung anlegen und Informationen wie E-Mail-Adresse, Kundendaten et cetera manuell &uuml;bernehmen.<\/p>\n<p>Stattdessen nutzen wir zum Anlegen der Tickets auf Basis der E-Mail-Inhalte ein Formular wie das in Bild 4.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_1033_004.png\" alt=\"Das Formular frmOffeneEMails zum Erstellen von Tickets auf Basis von Kundenanfragen\" width=\"700\" height=\"356,8493\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Das Formular frmOffeneEMails zum Erstellen von Tickets auf Basis von Kundenanfragen<\/span><\/b><\/p>\n<p>Wir gehen an dieser Stelle davon aus, dass die E-Mail-Anfragen der Kunden von Outlook aus in der Tabelle <b>tblMailItems <\/b>landen (wie das genau geschieht, erl&auml;utern wir im zweiten Teil der Beitragsreihe). Sofern in dieser Tabelle Datens&auml;tze vorliegen, die noch nicht mit einem der Datens&auml;tze der Tabelle <b>tblTickets <\/b>verkn&uuml;pft sind, soll das Formular <b>frmOffeneEMails <\/b>automatisch beim &ouml;ffnen der Ticketverwaltung angezeigt werden (wie das gelingt, zeigen wir im zweiten Teil).<\/p>\n<p>Die noch offenen E-Mail-Anfragen soll das Formular dann im Listenfeld links oben anzeigen. Ein Klick auf einen der Eintr&auml;ge zeigt die Details der E-Mail dann in den darunter befindlichen Textfeldern an. Da viele E-Mails mit Plaintext und HTML-Text ankommen, haben wir f&uuml;r jede Formatierung ein eigenes Textfeld vorgesehen. Je nachdem, auf welches Format Sie klicken, um sich den Inhalt genauer anzusehen, wird das jeweilige Textfeld vergr&ouml;&szlig;ert. Auch diese Technik beschreiben wir in einem weiteren Beitrag, n&auml;mlich in <b>Textfelder mit flexibler H&ouml;he <\/b>(<b>www.access-im-unternehmen.de\/1026<\/b>).<\/p>\n<p>Das Formular soll es vereinfachen, einen neuen Kundendatensatz zu der angezeigten E-Mail-Adresse anzulegen und die f&uuml;r das Ticket zu verwendenden Informationen schnell aus einem der beiden Felder <b>Body <\/b>oder <b>HTMLBody <\/b>in das Feld <b>Inhalt<\/b> auf der rechten Seite des Formulars zu kopieren. Dies geschieht, indem Sie den gew&uuml;nschten Text einfach mit der Maus oder mit den Cursortasten bei gedr&uuml;ckter Umschalttaste markieren. Beim Loslassen der Maustaste beziehungsweise der Umschalttaste wird der markierte Inhalt automatisch an den aktuellen Text im Feld Inhalt auf der rechten Seite des Formulars angeh&auml;ngt, wie schon im Screenshot geschehen. Diese Technik lernen Sie im Beitrag <b>Markierung automatisch kopieren <\/b>kennen (<b>www.access-im-unternehmen.de\/1027<\/b>).<\/p>\n<p>Auch f&uuml;r die Auswertung der E-Mail-Adresse haben wir uns etwas ausgedacht. Diese soll zun&auml;chst mit den bereits in der Tabelle <b>tblEMailAdressen <\/b>gespeicherten Datens&auml;tzen abgeglichen werden. Ist die E-Mail-Adresse dort bereits enthalten, zeigt das Kombinationsfeld zur Auswahl des Kunden f&uuml;r ein Ticket gleich den Namen des entsprechenden Kundendatensatzes an. Ist die E-Mail-Adresse noch nicht vergeben, kann der Benutzer aus dem Kombinationsfeld den Eintrag <b><Neuer Kunde> <\/b>ausw&auml;hlen (s. Bild 5). Daraufhin erscheint dann das Formular <b>frmKundeDetail <\/b>und zeigt direkt die E-Mail-Adresse im Unterformular zum neu zu erstellenden Datensatz an.<\/p>\n<p class=\"image\"><img loading=\"lazy\" decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_1033_005.png\" alt=\"Auswahl zum Anlegen eines neuen Kunden\" width=\"600\" height=\"200\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Auswahl zum Anlegen eines neuen Kunden<\/span><\/b><\/p>\n<p>Ein Klick auf die Schaltfl&auml;che <b>Anlegen <\/b>speichert die in den drei Steuerelementen auf der rechten Seite des Formulars eingetragenen Informationen nebst Anlagedatum in der Tabelle <b>tblTickets<\/b>. Dort landet in einem Fremdschl&uuml;sselfeld auch der Wert des Prim&auml;rschl&uuml;sselfeldes der Tabelle <b>tblMailItems<\/b>, woraufhin der aktuell im linken Bereich angezeigte Datensatz nicht mehr als &#8222;offen&#8220; deklariert ist und aus dem Listenfeld verschwindet.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>In diesem ersten Teil haben wir uns angesehen, wie wir der Ticketverwaltung Kundendatens&auml;tze hinzuf&uuml;gen und wie wir die gespeicherten E-Mails aus der Tabelle <b>tblMailItems <\/b>in Tickets f&uuml;r die Tabelle <b>tblTickets <\/b>umwandeln k&ouml;nnen &#8211; und zwar &uuml;ber ein komfortables Formular. Die in diesem Formular verwendeten Techniken zeigen wir in verschiedenen weiteren Beitr&auml;gen der aktuellen Ausgabe.<\/p>\n<p>In der folgenden Ausgabe werfen wir einen Blick darauf, wie die einzelnen Elemente des Formulars <b>frmOffeneEMails <\/b>zusammenarbeiten. <\/p>\n<p>Au&szlig;erdem betrachten wir die Technik, um die E-Mails einfach von Outlook aus in die Ticketverwaltung zu &uuml;bertragen, damit diese dort in Tickets umgewandelt werden k&ouml;nnen.<\/p>\n<p>Schlie&szlig;lich k&uuml;mmern wir uns um ein weiteres Formular, das dem Benutzer die Abarbeitung der Tickets erleichtern soll. Es erm&ouml;glicht das Erstellen von E-Mail-Antworten auf die Anfragen, zeigt den bisherigen Verlauf der Kommunikation an und l&auml;sst den Benutzer auf einfache Weise Notizen zum aktuellen Ticket erfassen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Ticketsystem.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{D446CBE6-A11B-4EEF-AE61-42363F40C82C}\/aiu_1033.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer Access-Anwendungen entwickelt, erledigt dies in der Regel f&uuml;r seine Kunden oder Benutzer. Ob es nun einer, wenige oder viele Benutzer sind: Fr&uuml;her oder sp&auml;ter meldet sich der eine oder andere mit Fehlermeldungen oder Verbesserungsw&uuml;nschen. Davon ausgehend, dass Sie diese auch ber&uuml;cksichtigen m&ouml;chten, ist hier ein funktionierendes System zur Erfassung und Abarbeitung der Anforderungen gefragt, gegebenenfalls auch f&uuml;r mehrere Benutzer. Wir gehen in diesem Fall von einer reinen E-Mail-Schnittstelle aus und wollen dazu Microsoft Outlook nutzen.<\/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":[66022016,662016,44000027],"tags":[],"class_list":["post-55001033","post","type-post","status-publish","format-standard","hentry","category-66022016","category-662016","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ticketsystem, Teil 1 - 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_1\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ticketsystem, Teil 1\" \/>\n<meta property=\"og:description\" content=\"Wer Access-Anwendungen entwickelt, erledigt dies in der Regel f&uuml;r seine Kunden oder Benutzer. Ob es nun einer, wenige oder viele Benutzer sind: Fr&uuml;her oder sp&auml;ter meldet sich der eine oder andere mit Fehlermeldungen oder Verbesserungsw&uuml;nschen. Davon ausgehend, dass Sie diese auch ber&uuml;cksichtigen m&ouml;chten, ist hier ein funktionierendes System zur Erfassung und Abarbeitung der Anforderungen gefragt, gegebenenfalls auch f&uuml;r mehrere Benutzer. Wir gehen in diesem Fall von einer reinen E-Mail-Schnittstelle aus und wollen dazu Microsoft Outlook nutzen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T19:02:26+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887\" \/>\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_1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Ticketsystem, Teil 1\",\"datePublished\":\"2020-05-22T19:02:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/\"},\"wordCount\":2877,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d665b9f19324d9b9a594d8f80fa8887\",\"articleSection\":[\"2\\\/2016\",\"2016\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/\",\"name\":\"Ticketsystem, Teil 1 - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d665b9f19324d9b9a594d8f80fa8887\",\"datePublished\":\"2020-05-22T19:02:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d665b9f19324d9b9a594d8f80fa8887\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d665b9f19324d9b9a594d8f80fa8887\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ticketsystem_Teil_1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ticketsystem, Teil 1\"}]},{\"@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 1 - 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_1\/","og_locale":"de_DE","og_type":"article","og_title":"Ticketsystem, Teil 1","og_description":"Wer Access-Anwendungen entwickelt, erledigt dies in der Regel f&uuml;r seine Kunden oder Benutzer. Ob es nun einer, wenige oder viele Benutzer sind: Fr&uuml;her oder sp&auml;ter meldet sich der eine oder andere mit Fehlermeldungen oder Verbesserungsw&uuml;nschen. Davon ausgehend, dass Sie diese auch ber&uuml;cksichtigen m&ouml;chten, ist hier ein funktionierendes System zur Erfassung und Abarbeitung der Anforderungen gefragt, gegebenenfalls auch f&uuml;r mehrere Benutzer. Wir gehen in diesem Fall von einer reinen E-Mail-Schnittstelle aus und wollen dazu Microsoft Outlook nutzen.","og_url":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T19:02:26+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887","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_1\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Ticketsystem, Teil 1","datePublished":"2020-05-22T19:02:26+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/"},"wordCount":2877,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887","articleSection":["2\/2016","2016","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/","url":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/","name":"Ticketsystem, Teil 1 - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887","datePublished":"2020-05-22T19:02:26+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/6d665b9f19324d9b9a594d8f80fa8887"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Ticketsystem_Teil_1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Ticketsystem, Teil 1"}]},{"@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\/55001033","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=55001033"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001033\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}