{"id":55001356,"date":"2022-02-01T00:00:00","date_gmt":"2022-01-31T15:18:49","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1356"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Export_von_Daten_in_das_DATEVFormat","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/","title":{"rendered":"Export von Daten in das DATEV-Format"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Um Daten Ihrer eigenen Software so zu exportieren, dass Ihr Steuerberater diese in das DATEV-System einlesen kann, ben&ouml;tigen Sie gar nicht mal so viel Know-how. Die wesentlichen Informationen finden wir auf der Webseite von DATEV. Dieser Beitrag zeigt, wie Sie Daten im DATEV-Format exportieren und was dabei zu beachten ist. Die so entstandene Datei kann der Steuerberater dann per Importfunktion in das DATEV Rechnungswesen einlesen.<\/b><\/p>\n<p>Die grundlegenden Informationen finden Sie in der &ouml;ffentlich verf&uuml;gbaren Webseite unter folgender Adresse:<\/p>\n<pre>https:\/\/developer.datev.de\/portal\/de\/dtvf<\/pre>\n<p>Dieser Beitrag beschr&auml;nkt sich auf die Zusammenstellung einer Datei mit den <b>Header<\/b>-Daten und Daten im Format <b>Buchungsstapel<\/b>.<\/p>\n<h2>Grundlegender Aufbau einer DATEV-Datei<\/h2>\n<p>Die DATEV-Datei enth&auml;lt immer eine Zeile mit Daten im Format <b>Header<\/b>. Danach folgt eine Zeile mit den Spalten&uuml;berschriften f&uuml;r die Buchungsdaten und schlie&szlig;lich eine oder mehrere Zeilen mit den eigentlichen Buchungsdaten.<\/p>\n<h2>Verschiedene Formate<\/h2>\n<p>Das DATEV-Format besteht aus verschiedenen Formatbeschreibungen. Verschiedene deshalb, weil es verschiedenartige Informationen gibt, die Sie damit beschreiben k&ouml;nnen. Wir wollen uns auf die wesentlichen Elemente beschr&auml;nken &#8211; die &uuml;brigen k&ouml;nnen Sie mit dem Know-how aus diesem Beitrag und der Dokumentation dann leicht selbst realisieren.<\/p>\n<p>Es gibt die folgenden Formats&auml;tze:<\/p>\n<ul>\n<li><b>Header<\/b>: Erste Zeile der CSV-Datei mit den Informationen zur Verarbeitung der Datei<\/li>\n<li><b>Buchungsstapel<\/b>: Enth&auml;lt die eigentlichen Buchungen, in der Regel f&uuml;r einen bestimmten Zeitraum je Datei, zum Beispiel monatlich.<\/li>\n<li>Weitere Formats&auml;tze, die dieser Beitrag nicht behandelt: <b>Wiederkehrende Buchungen<\/b>, <b>Debitoren\/Kreditoren<\/b>, <b>Sachkontenbeschriftungen<\/b>, <b>Zahlungsbedingungen<\/b> und <b>Diverse Adressen<\/b>.<\/li>\n<\/ul>\n<h2>Zusammenstellen der Header-Zeile<\/h2>\n<p>Die Beschreibung des Satzaufbaus f&uuml;r die Header-Zeile finden Sie hier:<\/p>\n<pre>https:\/\/developer.datev.de\/portal\/de\/dtvf\/formate\/header<\/pre>\n<p>Die Tabelle auf dieser Seite enth&auml;lt die &Uuml;berschriften und die Beschreibung der m&ouml;glichen Werte als regul&auml;rer Ausdruck.<\/p>\n<p>Eine Header-Zeile sieht beispielsweise wie folgt aus:<\/p>\n<pre>\"EXTF\";700;21;\"Buchungsstapel\";12;20211007000000000;4;\"Bu-\r\nchungen_Konto1\";1;\"EUR\"<\/pre>\n<p>Dabei entsprechen die einzelnen Elemente diesen Feldern:<\/p>\n<ul>\n<li><b>Kennzeichen<\/b>: <b>EXTF <\/b>oder <b>DTVF <\/b>(hier <b>EXTF <\/b>f&uuml;r Export aus einer 3rd-Party-Anwendung)<\/li>\n<li><b>Versionsnummer<\/b>: aktuell <b>700 <\/b>(dient der Sicherstellung von Abw&auml;rtskompatibilit&auml;t)<\/li>\n<li><b>Formatkategorie<\/b>: Gibt an, in welchem Format die folgenden Daten sind (im Falle des Buchungsstapels, mit dem wir uns hier besch&auml;ftigen, nutzen wir den Wert <b>21<\/b>)<\/li>\n<li><b>Formatname<\/b>: Name des Formats, hier <b>Buchungsstapel<\/b><\/li>\n<li><b>Formatversion<\/b>: Auch hier kommt ein Zahlenwert f&uuml;r Buchungsstapel zum Einsatz, in diesem Fall <b>12<\/b>.<\/li>\n<li><b>Erzeugt am<\/b>: Datum, an dem die Datei erzeugt wurde, im Format <b>YYYYMMDDHHMMSSFFF<\/b>.<\/li>\n<\/ul>\n<p>Es gibt noch einige weitere Felder, die wir weiter unten ber&uuml;cksichtigen.<\/p>\n<h2>Tabelle f&uuml;r Headerdaten<\/h2>\n<p>Wie speichern wir die Headerdaten am einfachsten Wenn sie aus ihrer selbstprogrammierten Buchhaltungsdatenbank die Buchungsdaten f&uuml;r den Import in die DATEV-Software Ihres Steuerberaters exportieren wollen, werden Sie das regelm&auml;&szlig;ig erledigen &#8211; beispielsweise monatlich oder einmal je Quartal.<\/p>\n<p>Die Felder des Headers enthalten Daten, die wir &uuml;ber eine Tabelle namens <b>tblHeader <\/b>erfassen (Entwurf siehe Bild 1). Diese enth&auml;lt nicht genau die Felder, die in der Header-Datei gespeichert werden sollen. Die Felder <b>ID <\/b>und <b>Referenzbezeichnung <\/b>sind das Prim&auml;rsch&uuml;sselfeld sowie ein Feld f&uuml;r eine interne Bezeichnung, zum Beispiel <b>Export 12\/2021<\/b>. Die &uuml;brigen Felder nehmen meist direkt die ben&ouml;tigten Daten auf, einige jedoch sind Fremdschl&uuml;sselfelder, welche zur Auswahl von Daten aus Lookuptabellen dienen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_001.png\" alt=\"Entwurf der Tabelle tblHeader\" width=\"700\" height=\"501,2258\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Entwurf der Tabelle tblHeader<\/span><\/b><\/p>\n<p>Diese Lookuptabellen stellen wir in Bild 2 &uuml;bersichtlich dar.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_002.png\" alt=\"&Uuml;bersicht des Datenmodells\" width=\"649,559\" height=\"608,4145\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: &Uuml;bersicht des Datenmodells<\/span><\/b><\/p>\n<p>Die Beziehungen zwischen der Tabelle <b>tblHeader <\/b>und den &uuml;brigen Tabellen haben wir jeweils als Nachschlage-feld definiert.<\/p>\n<h2>Formular zur Eingabe der Headerdaten<\/h2>\n<p>Damit der Benutzer die Headerdaten einfach eingeben kann, haben wir dazu ein eigenes Formular bereitgestellt. Dieses hei&szlig;t <b>frmHeader <\/b>und verwendet die Tabelle <b>tblHeader <\/b>als Datensatzquelle. Wir haben alle Felder der Tabelle aus der Feldliste in den Formularentwurf gezogen, die in der Dokumentation nicht als Leerfeld gekennzeichnet sind (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_004.png\" alt=\"Entwurf des Formulars zum Eingeben der Headerdaten\" width=\"624,559\" height=\"478,0671\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Entwurf des Formulars zum Eingeben der Headerdaten<\/span><\/b><\/p>\n<p>Hier sehen Sie bereits, dass die Felder, f&uuml;r die wir Lookuptabellen angelegt haben, auch im Formularentwurf als Nachschlagefelder angelegt werden.<\/p>\n<p>Nach dem Wechsel in die Formularansicht k&ouml;nnen Sie die Daten direkt in das Formular eingeben beziehungsweise mit den Nachschlagefeldern ausw&auml;hlen (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_003.png\" alt=\"Eingabe der Headerdaten\" width=\"424,5589\" height=\"737,715\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Eingabe der Headerdaten<\/span><\/b><\/p>\n<p>Nachdem wir diese Eingabem&ouml;glichkeit geschaffen haben, wollen wir daraus noch die Headerdatei exportieren. Dazu sehen wir eine Schaltfl&auml;che namens <b>cmdHeaderdateiErzeugen <\/b>vor, die wir unten im Formular platzieren.<\/p>\n<p>Diese Schaltfl&auml;che ruft die Prozedur aus Listing 1 auf.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdHeaderdateiErzeugen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strHeader<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strDateiname<span style=\"color:blue;\"> As String<\/span>\r\n     strDateiname = CurrentProject.Path & \"\\DTVF_\" & Me!Dateiname & \".csv\"\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     Kill strDateiname\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     strHeader = strHeader & \"\"\"\" & Me!Kennzeichen & \"\"\";\"\r\n     strHeader = strHeader & Me!Versionsnummer & \";\"\r\n     strHeader = strHeader & Me!FormatkategorieID & \";\"\r\n     strHeader = strHeader & DLookup(\"Formatversion\", \"tblFormatversionen\", \"FormatversionID = \" & Me!Formatversion) & \";\"\r\n     strHeader = strHeader & Me!Formatversion & \";\"\r\n     strHeader = strHeader & Format(Me!ErzeugtAm, \"YYYYMMDDHHNNSS000\") & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & Me!Beraternummer & \";\"\r\n     strHeader = strHeader & Me!Mandantennummer & \";\"\r\n     strHeader = strHeader & Format(Me!Wirtschaftsjahresbeginn, \"YYYYMMDD\") & \";\"\r\n     strHeader = strHeader & Me!Sachkontenlaenge & \";\"\r\n     strHeader = strHeader & Format(Me!DatumVon, \"YYYYMMDD\") & \";\"\r\n     strHeader = strHeader & Format(Me!DatumBis, \"YYYYMMDD\") & \";\"\r\n     strHeader = strHeader & Me!Bezeichnung & \";\"\r\n     strHeader = strHeader & Me!Diktatkuerzel & \";\"\r\n     strHeader = strHeader & Me!Buchungstyp & \";\"\r\n     strHeader = strHeader & Me!Rechnungslegungszweck & \";\"\r\n     strHeader = strHeader & Me!Festschreibung & \";\"\r\n     strHeader = strHeader & Me!Waehrungskennzeichen & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & Me!Sachkontenrahmen & \";\"\r\n     strHeader = strHeader & Me!IDDerBranchenLoesung & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & Me!Anwendungsinformationen\r\n     Open strDateiname For Append<span style=\"color:blue;\"> As <\/span>#1\r\n     Print #1, strHeader\r\n     Close #1\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Erzeugen der Headerdatei<\/span><\/b><\/p>\n<p>Die Prozedur deklariert zwei Variablen, von denen eine die zu speichernde Headerzeile aufnimmt und die andere den Dateinamen.<\/p>\n<p>Den Dateinamen setzt die Prozedur aus dem Pfad der aktuellen Datenbankdatei, dem Pr&auml;fix <b>DTVF_<\/b>, dem Inhalt des Feldes <b>Dateiname <\/b>und der Dateiendung <b>.csv <\/b>zusammen. <\/p>\n<p>Bevor wir richtig loslegen, l&ouml;scht die Prozedur eine eventuell bereits vorhandene Datei mit dem Namen aus <b>strDateiname<\/b>. Dabei deaktivieren wir die eingebaute Fehlerbehandlung, da die <b>Kill<\/b>-Anweisung beim Fehlen der angegebenen Datei einen Fehler ausl&ouml;st.<\/p>\n<p>Die folgenden Zeilen setzen den Inhalt der Headerdatei zusammen.<\/p>\n<p>Dabei sind folgende Besonderheiten zu beachten (in allen anderen F&auml;llen landet einfach der eingegebene Wert zwischen zwei Semikola):<\/p>\n<ul>\n<li>Das Kennzeichen wird in Anf&uuml;hrungszeichen eingefasst.<\/li>\n<li>Den Wert des Feldes <b>Formatname <\/b>lesen wir aus der Lookuptabelle <b>tblFormatversionen <\/b>ein.<\/li>\n<li>Den Wert f&uuml;r das Feld <b>Erzeugt am <\/b>formatieren wir im Format <b>YYYYMMDDHHNNSS000<\/b>.<\/li>\n<li>Den Wert f&uuml;r das Feld <b>Wirtschaftsjahresbeginn <\/b>formatieren wir mit dem Format <b>YYYYMMDD<\/b>.<\/li>\n<li>Die Werte f&uuml;r die Felder <b>Datum von <\/b>und <b>Datum bis <\/b>formatieren wir ebenfalls mit <b>YYYYMMDD<\/b>.<\/li>\n<\/ul>\n<p>Anschlie&szlig;end &ouml;ffnen wir mit <b>Open <\/b>eine Datei mit dem Namen aus <b>strDateiname <\/b>und schreiben mit der <b>Print<\/b>-Anweisung den Inhalt der Variablen <b>strHeader <\/b>in die Datei, bevor wir diese mit der <b>Close<\/b>-Anweisung wieder schlie&szlig;en.<\/p>\n<p>Das Ergebnis sieht f&uuml;r unser Beispiel wie folgt aus:<\/p>\n<pre>\"EXTF\";700;21;Buchungsstapel;12;20211206000000000;;;;;1234567;12345;20210101;4;20211101;20211130;Export 11\/2021;AM;1;0;1;EUR;;;;;03;;;;<\/pre>\n<p>Damit k&ouml;nnen wir nun einen Schritt weitergehen &#8211; und das Ergebnis mit einem speziell f&uuml;r diesen Zweck vorgesehenen Tool pr&uuml;fen. Wie das gelingt, erfahren Sie im n&auml;chsten Schritt.<\/p>\n<h2>Datei im DATEV-Format pr&uuml;fen<\/h2>\n<p>Unter dem folgenden Link finden Sie ein Tool zum Pr&uuml;fen der Daten im DATEV-Format:<\/p>\n<pre>https:\/\/developer.datev.de\/portal\/de\/dtvf\/tools<\/pre>\n<p>Mit diesem k&ouml;nnen Sie die erstellte Datei &ouml;ffnen und pr&uuml;fen. Das Tool zeigt dann an, welche Elemente fehlen oder das falsche Format haben. Es ist daher sehr hilfreich, den Export initial auf Basis von Daten aus der Datenbank zu programmieren und gleich zu testen.<\/p>\n<p>Um die soeben erstellte Headerdatei zu pr&uuml;fen, w&auml;hlen Sie im Pr&uuml;fprogramm den Men&uuml;befehl <b>Datei|&Ouml;ffnen <\/b>aus.<\/p>\n<p>Im nun erscheinenden Dialog <b>Datev Format Datei &ouml;ffnen <\/b>w&auml;hlen Sie die soeben erstellte Datei aus und best&auml;tigen die Auswahl mit der Schaltfl&auml;che <b>&Ouml;ffnen<\/b>.<\/p>\n<p>Bild 5 zeigt das Ergebnis f&uuml;r die Eingaben aus dem Beispiel von oben. Hier sehen Sie, dass alle Eingaben korrekt sind. W&auml;re dies nicht der Fall, w&uuml;rden Sie in der Spalte <b>Meldung <\/b>hilfreiche Informationen finden, mit denen Sie den Export schnell anpassen und funktionst&uuml;chtig machen k&ouml;nnten.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_005.png\" alt=\"Pr&uuml;fung des Headers\" width=\"649,559\" height=\"836,0155\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Pr&uuml;fung des Headers<\/span><\/b><\/p>\n<h2>Export der Buchungsdaten programmieren<\/h2>\n<p>Der Export der Buchungsdaten ist grunds&auml;tzlich aufw&auml;ndiger, weil eine Zeile viel mehr Informationen enthalten kann als die Headerzeile, aber wir reduzieren die auszugebenden Daten auf einige wenige Pflichtdaten.<\/p>\n<p>Als Erstes legen wir wieder eine Tabelle an, welche die zu exportierenden Daten enth&auml;lt. Diese nennen wir <b>tblBuchungsstapel<\/b>. Die Tabelle sieht im Entwurf wie in Bild 6 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_006.png\" alt=\"Entwurf der Tabelle zum Speichern der Buchungsdaten\" width=\"424,5589\" height=\"263,1715\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Entwurf der Tabelle zum Speichern der Buchungsdaten<\/span><\/b><\/p>\n<p>In der Datenblattansicht zeigt die Tabelle <b>tblBuchungsstapel<\/b> ihre Daten wie in Bild 7 an. Diese wollen wir nun in geeigneten Formularen anzeigen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_007.png\" alt=\"Beispieldaten in der Tabelle tblBuchungsstapel\" width=\"699,559\" height=\"160,487\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Beispieldaten in der Tabelle tblBuchungsstapel<\/span><\/b><\/p>\n<h2>Formulare f&uuml;r die Eingabe und den Export der Buchungss&auml;tze<\/h2>\n<p>Die Headerdaten und die Buchungsdaten sind nicht miteinander verkn&uuml;pft. Die Buchungsdaten werden aber &uuml;ber das Datum der jeweiligen Headerdatei zugeordnet, sprich: Mit einem Header werden alle Buchungen exportiert, die innerhalb der Datumsangaben der Felder <b>DatumVon <\/b>und <b>DatumBis <\/b>liegen.<\/p>\n<p>Wir wollen in dem Formular, mit dem wir den Export steuern wollen, ein Kombinationsfeld zur Auswahl eines Headers anbieten, &uuml;ber das der Benutzer die zu exportierenden Buchungsdatens&auml;tze filtern kann.<\/p>\n<p><!--30percent--><\/p>\n<p>Ein Unterformular soll die Datens&auml;tze der Tabelle <b>tblBuchungsstapel <\/b>anzeigen, die zu dem Datumsbereich des selektierten Headers passen. Der Entwurf dieser beiden Formulare sieht wie in Bild 8 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_008.png\" alt=\"Entwurf des Formulars zum Steuern des Datev-Exports\" width=\"424,5589\" height=\"303,2563\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Entwurf des Formulars zum Steuern des Datev-Exports<\/span><\/b><\/p>\n<p>Das Kombinationsfeld <b>cboHeader <\/b>verwendet die folgende <b>UNION<\/b>-Abfrage als Datensatzherkunft:<\/p>\n<pre>SELECT 0 AS ID, ''Alle anzeigen'' AS Dateiname \r\nFROM tblHeader\r\nUNION\r\nSELECT tblHeader.ID, tblHeader.Dateiname\r\nFROM tblHeader;<\/pre>\n<p>Dadurch zeigt das Kombinationsfeld den Eintrag <b>Alle anzeigen <\/b>sowie die Werte des Feldes <b>Dateiname <\/b>der Tabelle <b>tblHeader <\/b>an (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_009.png\" alt=\"Auswahl des Headers\" width=\"424,5589\" height=\"303,2563\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Auswahl des Headers<\/span><\/b><\/p>\n<p>Damit das Kombinationsfeld gleich beim Laden des Formulars den Eintrag <b>Alle anzeigen <\/b>liefert, f&uuml;gen wir f&uuml;r dieses die folgende Ereignisprozedur hinzu:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     Me!cboHeader = Me!cboHeader.ItemData(0)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das Unterformular verwendet die Tabelle <b>tblBuchungsstapel <\/b>als Datensatzquelle. Es zeigt alle Felder dieser Tabelle in der Datenblattansicht an.<\/p>\n<p>Damit das Unterformular sich in der Gr&ouml;&szlig;e dem Hauptformular anpasst, haben wir die Eigenschaften <b>Horizontaler Anker <\/b>und <b>Vertikaler Anker <\/b>auf den Wert <b>Beide <\/b>eingestellt.<\/p>\n<p>Damit nach der Auswahl eines der Eintr&auml;ge des Kombinationsfeldes <b>cboHeader <\/b>die richtigen Daten angezeigt werden, wird nach dem Aktualisieren die Ereignisprozedur aus Listing 2 aufgerufen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboHeader_AfterUpdate()\r\n     <span style=\"color:blue;\">Dim <\/span>strFilter<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>datVon<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>datbis<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">If <\/span>Me!cboHeader = 0<span style=\"color:blue;\"> Then<\/span>\r\n         Me!sfmBuchungsstapel.Form.Filter = \"\"\r\n         Me!cmdDatevExport.Enabled = False \r\n     <span style=\"color:blue;\">Else<\/span>\r\n         datVon = DLookup(\"DatumVon\", \"tblHeader\", \"ID = \" & Me!cboHeader)\r\n         datbis = DLookup(\"DatumBis\", \"tblHeader\", \"ID = \" & Me!cboHeader)\r\n         strFilter = \"Belegdatum &gt;= \" & ISODatum(datVon) & \" AND Belegdatum &lt; \" & ISODatum(datbis + 1)\r\n         <span style=\"color:blue;\">With<\/span> Me!sfmBuchungsstapel.Form\r\n             .Filter = strFilter\r\n             .FilterOn = <span style=\"color:blue;\">True<\/span>\r\n         End <span style=\"color:blue;\">With<\/span>\r\n         Me!cmdDatevExport.Enabled = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur zum Aktualisieren der Buchungsdatens&auml;tze <\/span><\/b><\/p>\n<p>Diese pr&uuml;ft zuerst, ob aktuell der Eintrag <b>Alle anzeigen <\/b>ausgew&auml;hlt ist. Hier hat <b>cboHeader <\/b>den Wert <b>0<\/b>. In diesem Fall wird der Filter f&uuml;r das Unterformular geleert, damit dieses alle Datens&auml;tze der Tabelle <b>tblBuchungsstapel <\/b>anzeigt. Au&szlig;erdem stellen wir die Eigenschaft <b>Enabled <\/b>der Schaltfl&auml;che <b>cmdDatevExport <\/b>auf <b>False <\/b>ein, da aktuell mangels gew&auml;hlter Headerdaten kein Export vorgenommen werden kann.<\/p>\n<p>In allen anderen F&auml;llen liest die Prozedur durch Aufrufen der <b>DLookup<\/b>-Funktion die Werte der Felder <b>DatumVon <\/b>und <b>DatumBis <\/b>der Tabelle <b>tblHeader <\/b>f&uuml;r den aktuell im Kombinationsfeld ausgew&auml;hlten Datensatz aus und stellt in der Variablen <b>strFilter <\/b>einen Ausdruck zusammen, der beispielsweise wie folgt aussieht:<\/p>\n<pre>Belegdatum &gt;= #2021\/11\/01 00:00:00# AND Belegdatum &lt; #2021\/12\/01 00:00:00#<\/pre>\n<p>Dann stellt die die Eigenschaft <b>Filter <\/b>des Unterformulars auf diesen Filterausdruck ein und aktiviert den Filter durch Setzen der Eigenschaft <b>FilterOn <\/b>auf den Wert <b>True<\/b>.<\/p>\n<p>Dies sorgt daf&uuml;r, dass das Unterformular nur solche Buchungen anzeigt, die in dem f&uuml;r den Header festgelegten Datumsbereich liegen.<\/p>\n<p>Au&szlig;erdem aktiviert die Prozedur in diesem Fall die Schaltfl&auml;che <b>cmdDatevExport<\/b>. Damit kann der Benutzer nun den Export durch Bet&auml;tigen der Schaltfl&auml;che <b>cmdDatevExport <\/b>ansto&szlig;en, die folgende Prozedur ausl&ouml;st:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdDatevExport_Click()\r\n     DatevExport Me!cboHeader\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Programmieren des Exports<\/h2>\n<p>Der eigentliche Export erfolgt nun in der Prozedur <b>Datev-Export<\/b>, welche den Prim&auml;rsch&uuml;sselwert des Header-Datensatzes der Tabelle <b>tblHeader <\/b>enth&auml;lt, f&uuml;r den die Daten exportiert werden sollen (siehe Listing 3).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>DatevExport(lngHeaderID<span style=\"color:blue;\"> As Long<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>strHeader<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBuchungen<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strFilter<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strDateiname<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>datVon<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>datbis<span style=\"color:blue;\"> As Date<\/span>\r\n     datVon = DLookup(\"DatumVon\", \"tblHeader\", \"ID = \" & lngHeaderID)\r\n     datbis = DLookup(\"DatumBis\", \"tblHeader\", \"ID = \" & lngHeaderID)\r\n     strDateiname = DLookup(\"Dateiname\", \"tblHeader\", \"ID = \" & lngHeaderID)\r\n     strFilter = \"Belegdatum &gt;= \" & ISODatum(datVon) & \" AND Belegdatum &lt; \" & ISODatum(datbis + 1)\r\n     strBuchungen = BuchungenErstellen(strFilter)\r\n     strHeader = HeaderErstellen(lngHeaderID)\r\n     DateiErstellen strDateiname, strHeader & strBuchungen\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Prozedur zum Exportieren der Datev-Daten<\/span><\/b><\/p>\n<p>Diese Prozedur ermittelt aus der Tabelle <b>tblHeader <\/b>zun&auml;chst den Datumsbereich f&uuml;r die zu exportierenden Buchungss&auml;tze und speichert die beiden Datumsangaben in den Variablen <b>datVon <\/b>und <b>datBis<\/b>. Dann liest sie den Wert des Feldes <b>Dateiname <\/b>aus der Tabelle <b>tblHeader <\/b>aus.<\/p>\n<p>Mit dem Datumsbereich stellt die Prozedur einen Filter zusammen, der dem Filterausdruck entspricht, den wir bereits weiter oben zum Filtern der anzuzeigenden Buchungsdatens&auml;tze im Unterformular genutzt haben.<\/p>\n<p>Diesen &uuml;bergeben wir dann an die Funktion <b>BuchungenErstellen<\/b>, die uns den Teil des Datev-Exports mit den Buchungsdaten zur&uuml;ckliefert.<\/p>\n<p>Eine zweite Funktion namens <b>HeaderErstellen <\/b>stellt den Header zusammen.<\/p>\n<p>Diese Funktion entspricht weitestgehend der Prozedur, die wir weiter oben bereits vorgestellt haben. Wir haben den Code allerdings in eine eigene Funktion ausgelagert. Die Funktion <b>HeaderErstellen <\/b>erwartet den Wert des Prim&auml;rsch&uuml;sselfeldes des Datensatzes der Tabelle <b>tblHeader<\/b>, f&uuml;r den wir die Daten zusammenstellen wollen.<\/p>\n<h2>Buchungen zusammenstellen<\/h2>\n<p>Die Buchungen stellt die Funktion <b>BuchungenErstellen <\/b>zusammen (siehe Listing 4). Diese erwartet einen Filterausdruck, mit dem die Buchungss&auml;tze in der Tabelle <b>tblBuchungsstapel <\/b>nach dem Datum f&uuml;r den Export gefiltert werden. Die Prozedur erstellt ein Recordset auf Basis der Tabelle <b>tblBuchungsstapel<\/b>, das genau dieses Kriterium zum Filtern der Datens&auml;tze nutzt.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>BuchungenErstellen(strFilter<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rstBuchungen<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strBuchungen<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rstBuchungen = db.OpenRecordset(\"SELECT * FROM tblBuchungsstapel WHERE \" & strFilter, dbOpenDynaset)\r\n     strBuchungen = \"Umsatz;Soll-\/Haben-Kennzeichen;WKZ Umsatz;...)\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rstBuchungen.EOF\r\n         strBuchungen = strBuchungen & rstBuchungen!Umsatz & \";\"                         ''Umsatz\r\n         strBuchungen = strBuchungen & \"\"\"\" & rstBuchungen!SollHabenKennzeichen & \"\"\";\"  ''Soll\/Haben-Kennzeichen\r\n         strBuchungen = strBuchungen & \"\"\"\" & rstBuchungen!WKZUmsatz & \"\"\";\"             ''WKZ Umsatz\r\n         strBuchungen = strBuchungen & \";\"                                               ''Kurs\r\n         strBuchungen = strBuchungen & \";\"                                               ''Basis-Umsatz\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"                                           ''WKZ Basis-Umsatz\r\n         strBuchungen = strBuchungen & rstBuchungen!Konto & \";\"                          ''Konto\r\n         strBuchungen = strBuchungen & rstBuchungen!Gegenkonto & \";\"                     ''Gegenkonto\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"                                           ''BU-Schl&uuml;ssel\r\n         strBuchungen = strBuchungen & Format(rstBuchungen!Belegdatum, \"DDMM\") & \";\"     ''Belegdatum\r\n         strBuchungen = strBuchungen & \"\"\"\" & rstBuchungen!Belegfeld1 & \"\"\";\"            ''Belegfeld1\r\n         strBuchungen = strBuchungen & \"\"\"\" & rstBuchungen!Belegfeld2 & \"\"\";\"            ''Belegfeld2\r\n         strBuchungen = strBuchungen & \";\"                                               ''Skonto\r\n         strBuchungen = strBuchungen & \"\"\"\" & rstBuchungen!Buchungstext & \"\"\";\"          ''Buchungstext\r\n         strBuchungen = strBuchungen & \";\"      ''Postensperre\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Diverse Adressnummer\r\n         strBuchungen = strBuchungen & \";\"      ''Gesch&auml;ftspartnerbank\r\n         strBuchungen = strBuchungen & \";\"      ''Sachverhalt\r\n         strBuchungen = strBuchungen & \";\"      ''Zinssperre\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Beleglink\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Beleginfo - Art 1\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Beleginfo - Inhalt 1\r\n         ...\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Kost1 - Kostenstelle\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Kost2 - Kostenstelle\r\n         strBuchungen = strBuchungen & \";\"      ''Kost-Menge\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''EU-Land u. UstID (Bestimmung)\r\n         strBuchungen = strBuchungen & \";\"      ''EU-Steuersatz\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"  ''Abw. Versteuerungsart\r\n         ...\r\n         strBuchungen = strBuchungen & \"\"\"\"\";\"      ''EU-Land u. UstID (Ursprung)\r\n         strBuchungen = strBuchungen       ''EU-Steuersatz (Ursprung)\r\n         strBuchungen = strBuchungen & <span style=\"color:blue;\">vbCrLf<\/span>\r\n         rstBuchungen.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(strBuchungen) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         strBuchungen = <span style=\"color:blue;\">Left<\/span>(strBuchungen, <span style=\"color:blue;\">Len<\/span>(strBuchungen) - 2)\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     BuchungenErstellen = strBuchungen\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Prozedur zum Zusammenstellen der Buchungsdaten<\/span><\/b><\/p>\n<p>Die Prozedur stellt im Recordset <b>rstBuchungen <\/b>alle Buchungen aus der Tabelle <b>tblBuchungsstapel <\/b>zusammen, die mit dem Filterkriterium &uuml;bereinstimmen. Dann stellt es eine &Uuml;berschrift zusammen, die aber bei einer sp&auml;teren Pr&uuml;fung nicht im Detail ausgewertet wird, sondern nur als &Uuml;berschriftenzeile erkannt wird.<\/p>\n<p>Danach durchl&auml;uft die Prozedur die Datens&auml;tze des Recordsets <b>rstBuchungen <\/b>in einer <b>Do While<\/b>-Schleife.<\/p>\n<p>Dabei stellt sie alle in der Formatbeschreibung definierten Elemente zusammen. Viele davon ber&uuml;cksichtigen wir nicht, sondern &uuml;bergeben nur leere Werte beziehungsweise Zeichenketten (<b>&#8222;&#8220;<\/b>).  Bei einigen jedoch werden die Werte gef&uuml;llt, zum Beispiel f&uuml;r Umsatz, SollHabenKennzeichen et cetera.<\/p>\n<p>Bei den Angaben zu Konto und Gegenkonto verwenden wir in den Beispieldaten nur die beiden Konten 1371 und 1400 &#8211; die genaue Zuweisung an die Konten erledigt der Steuerberater (sonst k&ouml;nnten wir ja gleich alles selbst machen).<\/p>\n<h2>Zusammenstellung der Headerdaten per Funktion<\/h2>\n<p>Die Funktion <b>HeaderErstellen <\/b>erwartet den Wert des Prim&auml;rschl&uuml;sselfeldes der Tabelle <b>tblHeader <\/b>des Datensatzes, den der Benutzer mit dem Kombinationsfeld <b>cboHeader <\/b>ausgew&auml;hlt hat und der von der Prozedur <b>DatevExport <\/b>an die Funktion <b>HeaderErstellen<\/b> &uuml;bergeben wird (siehe Listing 5).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>HeaderErstellen(lngHeaderID<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rstHeader<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strHeader<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rstHeader = db.OpenRecordset(\"SELECT * FROM tblHeader WHERE ID = \" & lngHeaderID, dbOpenDynaset)\r\n     strHeader = strHeader & \"\"\"\" & rstHeader!Kennzeichen & \"\"\";\"\r\n     strHeader = strHeader & rstHeader!Versionsnummer & \";\"\r\n     strHeader = strHeader & rstHeader!FormatkategorieID & \";\"\r\n     strHeader = strHeader & DLookup(\"Formatversion\", \"tblFormatversionen\", \"FormatversionID = \" _\r\n         & rstHeader!Formatversion) & \";\"\r\n     strHeader = strHeader & rstHeader!Formatversion & \";\"\r\n     strHeader = strHeader & Format(rstHeader!ErzeugtAm, \"YYYYMMDDHHNNSS000\") & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & rstHeader!Beraternummer & \";\"\r\n     strHeader = strHeader & rstHeader!Mandantennummer & \";\"\r\n     strHeader = strHeader & Format(rstHeader!Wirtschaftsjahresbeginn, \"YYYYMMDD\") & \";\"\r\n     strHeader = strHeader & rstHeader!Sachkontenlaenge & \";\"\r\n     strHeader = strHeader & Format(rstHeader!DatumVon, \"YYYYMMDD\") & \";\"\r\n     strHeader = strHeader & Format(rstHeader!DatumBis, \"YYYYMMDD\") & \";\"\r\n     strHeader = strHeader & rstHeader!Bezeichnung & \";\"\r\n     strHeader = strHeader & rstHeader!Diktatkuerzel & \";\"\r\n     strHeader = strHeader & rstHeader!Buchungstyp & \";\"\r\n     strHeader = strHeader & rstHeader!Rechnungslegungszweck & \";\"\r\n     strHeader = strHeader & rstHeader!Festschreibung & \";\"\r\n     strHeader = strHeader & rstHeader!Waehrungskennzeichen & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & rstHeader!Sachkontenrahmen & \";\"\r\n     strHeader = strHeader & rstHeader!IDDerBranchenLoesung & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & \";\"\r\n     strHeader = strHeader & rstHeader!Anwendungsinformationen\r\n     HeaderErstellen = strHeader\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Funktion zum Zusammenstellen der Headerdaten<\/span><\/b><\/p>\n<p>Die Funktion ist &auml;hnlich aufgebaut wie die eingangs beschriebene Prozedur <b>cmdHeaderdateiErzeugen_Click<\/b>. Allerdings &ouml;ffnet diese ein Recordset namens <b>rstHeader <\/b>auf Basis der Tabelle <b>tblHeader <\/b>mit dem als Parameter &uuml;bergebenen Wert aus <b>lngHeaderID <\/b>als Vergleichswert in der <b>WHERE<\/b>-Klausel.<\/p>\n<p>Da dieses Recordset nur einen Datensatz zur&uuml;ckgeben kann, greifen wir in den folgenden Anweisungen direkt auf diese Werte zu &#8211; zum Beispiel auf <b>rstHeader!Kennzeichen<\/b>. Die in der Funktion zusammengestellte Header-Zeichenkette wird als Ergebnis zur&uuml;ckgeliefert.<\/p>\n<h2>Erstellen der DATEV-Exportdatei<\/h2>\n<p>Die Exportdatei erstellt schlie&szlig;lich die Prozedur <b>DateiErstellen<\/b>. Diese nimmt mit <b>strDateiname <\/b>den Ausdruck entgegen, den der Benutzer im Feld <b>Dateiname <\/b>des Formulars <b>frmHeader <\/b>eingetragen hat. Der zweite Parameter erwartet den in der Datei zu speichernden Text.<\/p>\n<p>Die Prozedur ersetzt einige Sonderzeichen in <b>strDateiname <\/b>(Leerzeichen und Schr&auml;gstrich) durch den Unterstrich. Weitere Ersetzungen k&ouml;nnen Sie noch durch Erg&auml;nzen weiterer <b>Replace<\/b>-Anweisungen hinzuf&uuml;gen.<\/p>\n<p>Danach f&uuml;gt sie den Pfad zusammen, indem sie das Verzeichnis der aktuellen Datenbank nutzt und den Inhalt aus <b>strDateiname <\/b>mit f&uuml;hrendem <b>DTVF_ <\/b>und folgendem <b>.csv <\/b>erg&auml;nzt. Bevor sie die Datei neu erstellt, wird eine eventuell bereits vorhandene Datei gleichen Namens gel&ouml;scht. Dann &ouml;ffnet die Prozedur die Datei zum Anh&auml;ngen von Text und f&uuml;gt den Text mit der <b>Print<\/b>-Anweisung hinzu. Schlie&szlig;lich schlie&szlig;t sie die Datei mit der <b>Close<\/b>-Anweisung:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>DateiErstellen(strDateiname<span style=\"color:blue;\"> As String<\/span>,  strText<span style=\"color:blue;\"> As String<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>strPfad<span style=\"color:blue;\"> As String<\/span>\r\n     strDateiname = <span style=\"color:blue;\">Replace<\/span>(strDateiname, \" \", \"_\")\r\n     strDateiname = <span style=\"color:blue;\">Replace<\/span>(strDateiname, \"\/\", \"_\")\r\n     strPfad = CurrentProject.Path & \"\\DTVF_\"  & strDateiname & \".csv\"\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     Kill strPfad\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     Open strPfad For Append<span style=\"color:blue;\"> As <\/span>#1\r\n     Print #1, strText\r\n     Close #1\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit erstellt die Prozedur eine Datei wie in Bild 10.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_010.png\" alt=\"Resultierende Export-Datei mit einigen Beispieldaten\" width=\"700\" height=\"211,7982\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Resultierende Export-Datei mit einigen Beispieldaten<\/span><\/b><\/p>\n<h2>Pr&uuml;fen der Datei<\/h2>\n<p>Um zu pr&uuml;fen, ob der Export von DATEV lesbar ist, k&ouml;nnen Sie wieder das Pr&uuml;fprogramm von DATEV nutzen. Mit diesem lesen wir erneut die erstellte Exportdatei ein und wechseln dann zur Registerseite <b>Datens&auml;tze<\/b>. Hier werden dann die Datens&auml;tze des Buchungsstapels angezeigt, die wir per Export in die Exportdatei geschrieben haben (siehe Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_011.png\" alt=\"Pr&uuml;fung des Buchungsstapels\" width=\"700\" height=\"345,8497\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Pr&uuml;fung des Buchungsstapels<\/span><\/b><\/p>\n<p>Das Ergebnis ist in diesem Fall perfekt &#8211; wenn Sie selbst erstmalig mit dem Tool experimentieren, wird dies m&ouml;glicherweise nicht so aussehen, aber das Pr&uuml;fprogramm liefert dann recht hilfreiche Informationen zur Optimierung.<\/p>\n<h2>Anpassungen f&uuml;r bessere Bedienbarkeit<\/h2>\n<p>Schlie&szlig;lich f&uuml;hren wir noch einige Anpassungen durch, um die beiden Formulare besser bedienbar zu machen. Als Erstes wollen wir dem Formular <b>frmDatevExport <\/b>neben dem Kombinationsfeld <b>cboHeader <\/b>eine Schaltfl&auml;che hinzuf&uuml;gen, welche die Daten zum aktuell ausgew&auml;hlten Header im Formular <b>frmHeader <\/b>anzeigt (siehe Bild 12).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_012.png\" alt=\"Schaltfl&auml;che zum Anzeigen der Header-Details\" width=\"549,559\" height=\"342,6907\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Schaltfl&auml;che zum Anzeigen der Header-Details<\/span><\/b><\/p>\n<p>Diese &ouml;ffnet das Formular <b>frmHeader <\/b>als modalen Dialog und &uuml;bergibt den aktuellen Wert von <b>cboHeader <\/b>als &Ouml;ffnungsargument.<\/p>\n<p>Da das Formular als modaler Dialog ge&ouml;ffnet wird, l&auml;uft diese Prozedur weiter, wenn der Benutzer dieses schlie&szlig;t oder unsichtbar macht.<\/p>\n<p>Dann pr&uuml;ft die Prozedur, ob das Formular noch ge&ouml;ffnet ist und falls ja, liest es die ID des aktuell ausgew&auml;hlten Header-Datensatzes aus und stellt das Kombinationsfeld <b>cboHeader <\/b>darauf ein.<\/p>\n<p>Au&szlig;erdem aktualisiert die Prozedur durch einen Aufruf der Prozedur <b>cboHeader_After-Update<\/b> die Anzeige der Daten im Unterformular und schlie&szlig;t das Formular <b>frmHeader<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdHeaderAnzeigen_Click()\r\n     DoCmd.OpenForm \"frmHeader\",  WindowMode:=acDialog,  OpenArgs:=Me!cboHeader\r\n     <span style=\"color:blue;\">If <\/span>IstFormularGeoeffnet(\"frmHeader\")<span style=\"color:blue;\"> Then<\/span>\r\n         Me!cboHeader = Forms!frmHeader!ID\r\n         cboHeader_AfterUpdate\r\n         DoCmd.Close acForm, \"frmHeader\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Im Formular <b>frmHeader <\/b>haben wir ebenfalls &Auml;nderungen durchgef&uuml;hrt. Als Erstes haben wir dort noch eine weitere Schaltfl&auml;che namens <b>cmdHeaderUebernehmen <\/b>hinzugef&uuml;gt (siehe Bild 13).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1356_013.png\" alt=\"Schaltfl&auml;che zum &Uuml;bernehmen des Header-Satzes\" width=\"524,559\" height=\"754,878\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Schaltfl&auml;che zum &Uuml;bernehmen des Header-Satzes<\/span><\/b><\/p>\n<p>Dieses soll das Formular unsichtbar machen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdHeaderUebernehmen_Click()\r\n     Me.Visible = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese Schaltfl&auml;che soll allerdings nicht standardm&auml;&szlig;ig angezeigt werden, sondern nur, wenn das Formular <b>frmHeader <\/b>vom Formular <b>frmDatevExport <\/b>aus aufgerufen wurde.<\/p>\n<p>Ob das der Fall ist, pr&uuml;fen wir in der Prozedur, die durch das Ereignis <b>Beim &Ouml;ffnen <\/b>des Formulars <b>frmHeader <\/b>ausgel&ouml;st wird und den folgenden Code enth&auml;lt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me.OpenArgs)<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>Me.OpenArgs = 0<span style=\"color:blue;\"> Then<\/span>\r\n             Me.Recordset.Add<span style=\"color:blue;\">New<\/span>\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             Me.Recordset.FindFirst \"ID = \" & Me.OpenArgs\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         Me!cmdHeaderdateiErzeugen.Visible = <span style=\"color:blue;\">False<\/span>\r\n         Me!cmdHeaderUebernehmen.Visible = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         Me!cmdHeaderdateiErzeugen.Visible = <span style=\"color:blue;\">True<\/span>\r\n         Me!cmdHeaderUebernehmen.Visible = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst, ob das &Ouml;ffnungsargument nicht leer beziehungsweise <b>Null <\/b>ist. In diesem Fall unterscheidet eine weitere <b>If&#8230;Then<\/b>-Bedingung, ob <b>Me.Open-Args <\/b>den Wert <b>0 <\/b>oder einen anderen Wert hat. Ist der Wert <b>0<\/b>, dann zeigt das Formular einen neuen, leeren Datensatz an.<\/p>\n<p>Ist der Wert nicht <b>Null<\/b>, zeigt das Formular den Datensatz an, dessen Wert im Feld <b>ID <\/b>dem &uuml;bergebenen Wert entspricht.<\/p>\n<p>In beiden F&auml;llen stellt die Prozedur die Sichtbarkeit der Schaltfl&auml;che <b>cmdHeaderdateiErzeugen <\/b>auf <b>False <\/b>und die der Schaltfl&auml;che <b>cmdHeaderUebernehmen <\/b>auf <b>True <\/b>ein. <\/p>\n<p>Falls <b>OpenArgs <\/b>den Wert <b>Null <\/b>aufweist, blendet die Prozedur die Schaltfl&auml;che <b>cmdHeaderdateiErzeugen <\/b>ein und die Schaltfl&auml;che <b>cmdHeaderUebernehmen <\/b>aus. Auf diese Weise kann der Benutzer das Formular auch erst einmal nutzen, um nur die Headerdaten zu erstellen und im Pr&uuml;fprogramm zu testen.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Mit den hier vorgestellten Routinen k&ouml;nnen Sie leicht Daten aus einer Access-Datenbank in das DATEV-Format exportieren.<\/p>\n<p>Um es an eine eigene Anwendung anzupassen, k&ouml;nnen Sie eine Abfrage erstellen, welche die Daten aus Ihren Buchungstabellen in das Format bringt, wie wir es hier in der Tabelle <b>tblBuchungsstapel <\/b>verwenden.<\/p>\n<p>Sie m&uuml;ssten dann im Code lediglich den Verweis von der Tabelle <b>tblBuchungsstapel <\/b>auf den Namen der dazu verwendeten Abfrage &auml;ndern &#8211; oder Sie nennen die Abfrage einfach <b>tblBuchungsstapel<\/b>.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DATEVExport.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/76542E10-BE73-443A-84D5-D02CA4B2B6F4\/aiu_1356.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um Daten Ihrer eigenen Software so zu exportieren, dass Ihr Steuerberater diese in das DATEV-System einlesen kann, ben&ouml;tigen Sie gar nicht mal so viel Know-how. Die wesentlichen Informationen finden wir auf der Webseite von DATEV. Dieser Beitrag zeigt, wie Sie Daten im DATEV-Format exportieren und was dabei zu beachten ist. Die so entstandene Datei kann der Steuerberater dann per Importfunktion in das DATEV Rechnungswesen einlesen.<\/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":[66012022,662022,44000027],"tags":[],"class_list":["post-55001356","post","type-post","status-publish","format-standard","hentry","category-66012022","category-662022","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>Export von Daten in das DATEV-Format - 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\/Export_von_Daten_in_das_DATEVFormat\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Export von Daten in das DATEV-Format\" \/>\n<meta property=\"og:description\" content=\"Um Daten Ihrer eigenen Software so zu exportieren, dass Ihr Steuerberater diese in das DATEV-System einlesen kann, ben&ouml;tigen Sie gar nicht mal so viel Know-how. Die wesentlichen Informationen finden wir auf der Webseite von DATEV. Dieser Beitrag zeigt, wie Sie Daten im DATEV-Format exportieren und was dabei zu beachten ist. Die so entstandene Datei kann der Steuerberater dann per Importfunktion in das DATEV Rechnungswesen einlesen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-31T15:18:49+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3\" \/>\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=\"20\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Export von Daten in das DATEV-Format\",\"datePublished\":\"2022-01-31T15:18:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/\"},\"wordCount\":3084,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e5e998a15e494e4a832e7cac83e9dcb3\",\"articleSection\":[\"1\\\/2022\",\"2022\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/\",\"name\":\"Export von Daten in das DATEV-Format - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e5e998a15e494e4a832e7cac83e9dcb3\",\"datePublished\":\"2022-01-31T15:18:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e5e998a15e494e4a832e7cac83e9dcb3\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e5e998a15e494e4a832e7cac83e9dcb3\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_von_Daten_in_das_DATEVFormat\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Export von Daten in das DATEV-Format\"}]},{\"@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":"Export von Daten in das DATEV-Format - 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\/Export_von_Daten_in_das_DATEVFormat\/","og_locale":"de_DE","og_type":"article","og_title":"Export von Daten in das DATEV-Format","og_description":"Um Daten Ihrer eigenen Software so zu exportieren, dass Ihr Steuerberater diese in das DATEV-System einlesen kann, ben&ouml;tigen Sie gar nicht mal so viel Know-how. Die wesentlichen Informationen finden wir auf der Webseite von DATEV. Dieser Beitrag zeigt, wie Sie Daten im DATEV-Format exportieren und was dabei zu beachten ist. Die so entstandene Datei kann der Steuerberater dann per Importfunktion in das DATEV Rechnungswesen einlesen.","og_url":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/","og_site_name":"Access im Unternehmen","article_published_time":"2022-01-31T15:18:49+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"20\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Export von Daten in das DATEV-Format","datePublished":"2022-01-31T15:18:49+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/"},"wordCount":3084,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3","articleSection":["1\/2022","2022","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/","url":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/","name":"Export von Daten in das DATEV-Format - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3","datePublished":"2022-01-31T15:18:49+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/e5e998a15e494e4a832e7cac83e9dcb3"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Export_von_Daten_in_das_DATEVFormat\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Export von Daten in das DATEV-Format"}]},{"@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\/55001356","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=55001356"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001356\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}