{"id":55000853,"date":"2012-10-01T00:00:00","date_gmt":"2020-05-22T21:48:26","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=853"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"EANStrichcode_mit_Bordmitteln","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/","title":{"rendered":"EAN-Strichcode mit Bordmitteln"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Nicht selten fragen Access-Entwickler, wie sie Strichcodes in Berichten abbilden k&ouml;nnen. Das Internet bietet verschiedene M&ouml;glichkeiten von kostenpflichtigen Tools bis hin zu speziellen Schriftarten. Wir wollen am Beispiel von EAN-13 zeigen, wie Sie einen solchen Code mit ein wenig Handarbeit selbst generieren und in einem Bericht anzeigen k&ouml;nnen.<\/b><\/p>\n<p><b>Die European Article Number<\/b><\/p>\n<p><b>EAN <\/b>steht f&uuml;r <b>European Article Number<\/b>, die wiederum die <b>Globel Trade Item Number <\/b>(<b>GTIN<\/b>) abgel&ouml;st hat. Es gibt zwei Varianten (mit acht und mit 13 Stellen), die von der Organisation <b>Global Standards One <\/b>(<b>GT1<\/b>) vergeben werden.<\/p>\n<p>In diesem Beitrag konzentrieren wir uns auf die 13-stellige Variante, die als eindeutige Produktkennzeichnung dient &#8211; dies gilt ebenfalls f&uuml;r die achtstellige Version, die speziell f&uuml;r Artikel geringeren Ausma&szlig;es und dementsprechend mit weniger Platz zum Platzieren des Codes auskommen m&uuml;ssen.<\/p>\n<p>Anlass f&uuml;r diesen Beitrag ist &uuml;brigens die Ver&ouml;ffentlichung eines Buchs und damit der Wunsch, dieses auch mit einer ISBN und einem entsprechenden Strichcode auszustatten. Die ISBN wiederum ist ein Spezialfall eines EAN-Codes, wobei sich die Unterschiede auf die Notation (bei B&uuml;chern mit Bindestrichen, also etwa 978-3-944216-00-3 und beim EAN-Code ohne Bindestriche) und auf die ersten Ziffern beschr&auml;nken, welche beim EAN-Code f&uuml;r Waren eigentlich als L&auml;nderkennzeichen dienen. Bei Waren besteht der EAN-13-Code also aus folgenden Bestandteilen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Erste drei Stellen: L&auml;nderpr&auml;fix (in Deutschland 400 bis 440)<\/li>\n<li class=\"aufz-hlung\">Folgende vier bis sechs Stellen: Unternehmensnummer des Herstellers<\/li>\n<li class=\"aufz-hlung\">Folgende drei bis f&uuml;nf Stellen: Artikelnummer, muss zusammen mit den vorherigen Stellen insgesamt 12 Stellen ergeben<\/li>\n<li class=\"aufz-hlung\">Letzte Stelle: Pr&uuml;fcode, der die Richtigkeit der vorherigen Stellen gew&auml;hrleistet<\/li>\n<\/ul>\n<p>Bei B&uuml;chern besteht die ISBN aus diesen Informationen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Erste drei Stellen: Ein Code f&uuml;r B&uuml;cher (<b>978 <\/b>und <b>979<\/b>, f&uuml;r Zeitschriften <b>977<\/b>)<\/li>\n<li class=\"aufz-hlung\">Folgende ein bis drei Stellen: L&auml;ndernummer (Gruppennummer), f&uuml;r Deutschland beispielsweise <b>3<\/b><\/li>\n<li class=\"aufz-hlung\">Die folgenden sieben bis neun Stellen enthalten die Verlagsnummer und die Titelnummer.<\/li>\n<li class=\"aufz-hlung\">Die letzte Stelle enth&auml;lt wiederum die Pr&uuml;fziffer.<\/li>\n<\/ul>\n<p><b>Pr&uuml;fziffer berechnen<\/b><\/p>\n<p>Bevor wir uns an die Ausgabe des EAN-13-Codes in einem Access-Bericht begeben, schauen wir uns noch die Berechnung der Pr&uuml;fziffer an, also der letzten Ziffer des Codes. <\/p>\n<p>Diese erfolgt nach der Formel aus Bild 1. Das bedeutet, dass Sie zun&auml;chst die erste, dritte, f&uuml;nfte, siebte, neunte und elfte Ziffer addieren. Als N&auml;chstes addieren Sie die zweite, vierte, sechste, achte, zehnte und zw&ouml;lfte Ziffer und multiplizieren diese Summe mit <b>3<\/b>. Danach berechnet man den Modulo f&uuml;r die Summe der beiden Zwischenergebnisse und die Zahl <b>10<\/b>, was bedeutet, dass Sie den Rest der Division ermitteln. Angenommen, wir arbeiten mit der Zahl <b>978394421600<\/b>, dann erhalten wir als erste Summe <b>9+8+9+4+1+0 <\/b>gleich <b>31 <\/b>und als zweite Summe <b>7+3+4+2+6+0 <\/b>gleich <b>22<\/b>. Die erste Summe zum Dreifachen der zweiten Summe addiert ergibt <b>97<\/b>. Der Modulo aus <b>97 <\/b>und <b>10 <\/b>ist <b>7<\/b>. Dieses Ergebnis wird schlie&szlig;lich noch von <b>10 <\/b>subtrahiert und erneut mit <b>mod 10 <\/b>behandelt &#8211; dies sorgt daf&uuml;r, dass der Wert <b>10 <\/b>gegebenenfalls zum Ergebnis <b>0 <\/b>f&uuml;hrt und keine zweistellige Pr&uuml;fziffer herauskommt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Formel zur Berechnung der Pr&uuml;fziffer<\/span><\/b><\/p>\n<p>Dies m&uuml;ssen Sie nun nur noch in VBA-Code gie&szlig;en. Kein Problem &#8211; das Ergebnis sieht wie in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-50-anchor\">Listing 1<\/a><\/span> aus. Die Funktion <b>Pruefziffer<\/b> erwartet eine zw&ouml;lfstellige Zeichenkette, anderenfalls wird sie gleich mit einer entsprechenden Meldung beendet. Die beiden Summen &uuml;ber die Ziffern auf den ungeraden und den geraden Positionen bildet die Funktion in einer Schleife, wobei der Faktor drei bei den Ziffern auf den geraden Positionen gleich mit einflie&szlig;t. Die letzte Anweisung der Prozedur f&uuml;hrt die beiden Modulo-Operationen durch und gibt das Endergebnis als Funktionswert zur&uuml;ck.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Ermitteln der Pr&uuml;fziffer f&uuml;r einen EAN-Code<\/p>\n<pre>Public Function Pruefziffer(strEANOhne) As String\r\n    Dim intSummeEinfach As Integer\r\n    Dim intSummeDreifach As Integer\r\n    Dim i As Integer\r\n    If Not Len(strEANOhne) = 12 Then\r\n        MsgBox &quot;Die zu pr&uuml;fende Ziffernfolge muss zw&ouml;lf Ziffern enthalten.&quot;\r\n        Exit Function\r\n    End If\r\n    For i = 1 To 6\r\n        intSummeEinfach = intSummeEinfach + Mid(strEANOhne, i * 2 - 1, 1)\r\n        intSummeDreifach = intSummeDreifach + 3 * Mid(strEANOhne, i * 2, 1)\r\n    Next i\r\n    Pruefziffer = (10 - (intSummeEinfach + intSummeDreifach) Mod 10) Mod 10\r\nEnd Function<\/pre>\n<p>Wenn Sie eine solche Funktion erstellen und testen, helfen einige Testaufrufe mit Beispielwerten weiter. Dies kann etwa wie in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-57-anchor\">Listing 2<\/a><\/span> aussehen und liefert eine entsprechende Ausgabe an das Direktfenster.<\/p>\n<p class=\"listingueberschrift\">Listing 2: Testaufrufe der Pr&uuml;fziffern-Berechnung<\/p>\n<pre>Public Sub Test_Pruefziffer()\r\n    Debug.Print &quot;978382732950&quot;, Pruefziffer(&quot;978382732950&quot;) = &quot;9&quot;, Pruefziffer(&quot;978382732950&quot;)\r\n    Debug.Print &quot;978394421600&quot;, Pruefziffer(&quot;978394421600&quot;) = &quot;3&quot;, Pruefziffer(&quot;978394421600&quot;)\r\n    Debug.Print &quot;978394421601&quot;, Pruefziffer(&quot;978394421601&quot;) = &quot;0&quot;, Pruefziffer(&quot;978394421601&quot;)\r\n    ...\r\nEnd Sub<\/pre>\n<p>Nachdem diese Funktion schon recht einfach zu erstellen war, setzen wir noch eine weitere Funktion oben drauf, mit der Sie einen 13-stelligen EAN-Code auf seine G&uuml;ltigkeit pr&uuml;fen k&ouml;nnen. Diese Funktion hei&szlig;t <b>EANPruefen<\/b> und sieht wie in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-53-anchor\">Listing 3<\/a><\/span> aus. Die Funktion pr&uuml;ft wiederum die korrekte L&auml;nge des zu pr&uuml;fenden Codes und teilt diesen dann zun&auml;chst in den eigentlichen Code (also die ersten zw&ouml;lf Ziffern) und die Pr&uuml;fziffer auf. Wenn die an der letzten Stelle des Codes enthaltene Pr&uuml;fziffer mit der Pr&uuml;fziffer &uuml;bereinstimmt, welche die Funktion <b>Pruefziffer <\/b>f&uuml;r die ersten zw&ouml;lf Stellen ermittelt, dann ist der EAN-Code inklusive Pr&uuml;fziffer korrekt.<\/p>\n<p class=\"listingueberschrift\">Listing 3: Pr&uuml;fung kompletter EAN-Codes inklusive Pr&uuml;fziffer<\/p>\n<pre>Public Function EANPruefen(strEAN) As Boolean\r\n    Dim strEANOhne As String\r\n    Dim strPruefziffer As String\r\n    If Not Len(strEAN) = 13 Then\r\n        MsgBox &quot;Die zu pr&uuml;fende Ziffernfolge muss 13 Ziffern enthalten.&quot;\r\n        Exit Function\r\n    End If\r\n    strEANOhne = Left(strEAN, 12)\r\n    strPruefziffer = Right(strEAN, 1)\r\n    EANPruefen = strPruefziffer = Pruefziffer(strEANOhne)\r\nEnd Function<\/pre>\n<p><b>EAN-Strichcode<\/b><\/p>\n<p>Wenn Sie denken, damit w&auml;re der komplizierteste Teil erledigt, irren Sie. Verglichen mit dem Aufwand, der zum Ausdrucken des Strichcodes f&uuml;r einen EAN-Code n&ouml;tig ist, war dies ein Kinderspiel. In Bild 2 haben wir einen solchen Strichcode schematisch abgebildet. Der Strichcode unterteilt sich grob in die folgenden Bereiche:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Aufbau des Strichcodes<\/span><\/b><\/p>\n<ul>\n<li class=\"aufz-hlung\">Strich 1 bis 3: Startbegrenzung<\/li>\n<li class=\"aufz-hlung\">Strich 4 bis 45: Code f&uuml;r die Ziffern 2 bis 7<\/li>\n<li class=\"aufz-hlung\">Strich 46 bis 50: Markierung zum Aufteilen der ersten und zweiten H&auml;lfte des tats&auml;chlichen Codes<\/li>\n<li class=\"aufz-hlung\">Strich 51 bis 92: Code f&uuml;r die Ziffern 8 bis 13<\/li>\n<li class=\"aufz-hlung\">Strich 93 bis 95: Abschlussbegrenzung<\/li>\n<\/ul>\n<p>Die erste Ziffer wird nicht als Strichcode abgebildet, sie entscheidet jedoch, wie die ersten sechs Ziffern als Strichcode dargestellt werden. Und das geht so: Sie schauen in die Tabelle aus Bild 3 und suchen die Zeile heraus, die der ersten Ziffer entspricht. Bei B&uuml;chern ist das immer die Ziffer 9, also verwenden wir die unterste Zeile.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Festlegung der zu verwendende Spalte f&uuml;r die Strichcodes<\/span><\/b><\/p>\n<p>Damit und mit der Tabelle aus Bild 4 betrachten wir nun die folgenden zw&ouml;lf Ziffern. F&uuml;r unser Beispiel <b>978-3-8273-2950-9 <\/b>(der besseren &Uuml;bersicht halber als ISBN formatiert) kommt also als Erstes die Ziffer <b>7 <\/b>an die Reihe. Dies ist die zweite Ziffer, also verwenden wir Spalte A. Spalte A liefert f&uuml;r die Ziffer <b>7 <\/b>den Wert <b>0111011<\/b>.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Je nach dem Wert der ersten Ziffer wird die aktuelle Ziffer durch eine dieser Ziffernfolgen ersetzt.<\/span><\/b><\/p>\n<p>Die dritte Ziffer ist die <b>8<\/b> und soll durch den entsprechenden Wert aus Spalte B ersetzt werden &#8211; also <b>0001001<\/b>. So gehen wir weiter vor und finden f&uuml;r die zweite bis siebte Ziffer diese Werte:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Die zweite Ziffer <b>7 <\/b>entspricht <b>0111011 <\/b>(aus Spalte <b>A<\/b>),<\/li>\n<li class=\"aufz-hlung\">die dritte Ziffer <b>8 <\/b>entspricht <b>0001001 <\/b>(aus Spalte <b>B<\/b>),<\/li>\n<li class=\"aufz-hlung\">die vierte Ziffer <b>3 <\/b>entspricht <b>0100001 <\/b>(aus Spalte <b>B<\/b>),<\/li>\n<li class=\"aufz-hlung\">die f&uuml;nfte Ziffer <b>8 <\/b>entspricht <b>0110111 <\/b>(aus Spalte <b>A<\/b>),<\/li>\n<li class=\"aufz-hlung\">die sechste Ziffer <b>2 <\/b>entspricht <b>0011011 <\/b>(aus Spalte <b>B<\/b>) und <\/li>\n<li class=\"aufz-hlung\">die siebte Ziffer 7 entspricht <b>0111011 <\/b>(aus Spalte <b>A<\/b>).<\/li>\n<\/ul>\n<p>Bei der achten bis dreizehnten Ziffer ist es einfacher, da die entsprechenden Werte alle aus Spalte C der zweiten Tabelle stammen. F&uuml;r die Ziffern 329509 kommt so der Ausdruck 1000010-1101100-1110100-1001110-1110010-1110100 zusammen (der besseren &Uuml;bersicht wegen durch Bindestriche getrennt).<\/p>\n<p>Damit h&auml;tten wir zwei sehr l&auml;ngliche Ausdr&uuml;cke, die aus 1 und 0 bestehen. Vor dem ersten Ausdruck (also den 42 Zeichen f&uuml;r die ersten sechs Ziffern) schieben wir nun die Startbegrenzung <b>101<\/b> ein, zwischen den Ausdr&uuml;cken f&uuml;r die Ziffern zwei bis sieben und acht bis dreizehn f&uuml;gen wir als Unterteilung <b>01010 <\/b>ein und am Ende h&auml;ngen wir nochmals als Endbegrenzung die Folge <b>101 <\/b>an.<\/p>\n<p>Dies ergibt <b>101_0111011_0001001_0100001_0110111_0011011_0111011_01010_1000010_1101100_1110100_1001110_1110010_1110100_101<\/b>, wobei die einzelnen Elemente f&uuml;r die &Uuml;bersicht durch Unterstriche voneinander getrennt wurden.<\/p>\n<p>Und das ist auch schon die Grundlage f&uuml;r den Strichcode! Sie m&uuml;ssen nun nur noch f&uuml;r jede <b>1 <\/b>einen Strich markieren und f&uuml;r jede <b>0 <\/b>einen Leerraum, wobei Striche und Leerr&auml;ume nat&uuml;rlich die gleiche Breite aufweisen m&uuml;ssen. Die Striche f&uuml;r die Start- und die Endbegrenzungen 101 sowie den Mittelteil 01010 m&uuml;ssen unten l&auml;nger sein, die Zahlen werden davor beziehungsweise dazwischen platziert.<\/p>\n<p>Nun kommen zwei Aufgaben auf uns zu: Erstens die Erstellung einer Prozedur, die aus den 13 Ziffern eines EAN-Codes den aus 1 und 0 bestehenden und in Form eines Strichcodes anzeigbaren Ausdruck zu ermitteln und &#8211; noch interessanter &#8211; das Erstellen eines Access-Berichts, der diese Striche auf den Bericht zaubert.<\/p>\n<p><b>Strichcode aus EAN-Code berechnen<\/b><\/p>\n<p>Die Funktion <b>ConvertEAN <\/b>ermittelt die aus <b>1 <\/b>und <b>0 <\/b>bestehende Zeichenfolge, die es erm&ouml;glicht, einen EAN-Code als Strichcode anzuzeigen (siehe Bild 5 erfolgt.<\/p>\n<p class=\"listingueberschrift\">Listing 4: Ermitteln der Bin&auml;rzeichenfolge aus einem EAN-Code<\/p>\n<pre>Public Function ConvertEAN(strEAN As String) As String\r\n    Dim i As Integer\r\n    Dim intNumber As Integer\r\n    Dim strResult As String\r\n    Const cTA As String = &quot;0001101001100100100110111101010001101100010101111011101101101110001011&quot;\r\n    Const cTB As String = &quot;0100111011001100110110100001001110101110010000101001000100010010010111&quot;\r\n    Const cTC As String = &quot;1110010110011011011001000010101110010011101010000100010010010001110100&quot;\r\n    strResult = strResult &amp; &quot;101&quot;\r\n    For i = 2 To 7 ''Ziffern 2 bis 13\r\n        intNumber = Mid(strEAN, i, 1)\r\n        Select Case i\r\n            Case 2\r\n                Select Case Left(strEAN, 1)\r\n                    Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\r\n                        strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n                End Select\r\n        Case 3\r\n            Select Case Left(strEAN, 1)\r\n                Case 0, 1, 2, 3\r\n                    strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n                Case Else\r\n                    strResult = strResult &amp; Mid(cTB, (intNumber) * 7 + 1, 7)\r\n            End Select\r\n        Case 4\r\n            Select Case Left(strEAN, 1)\r\n                Case 0, 4, 7, 8\r\n                    strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n                Case Else\r\n                    strResult = strResult &amp; Mid(cTB, (intNumber) * 7 + 1, 7)\r\n            End Select\r\n        Case 5\r\n            Select Case Left(strEAN, 1)\r\n                Case 0, 1, 4, 5, 9\r\n                    strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n                Case Else\r\n                    strResult = strResult &amp; Mid(cTB, (intNumber) * 7 + 1, 7)\r\n            End Select\r\n        Case 6\r\n            Select Case Left(strEAN, 1)\r\n                Case 0, 2, 5, 6, 7\r\n                    strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n                Case Else\r\n                    strResult = strResult &amp; Mid(cTB, (intNumber) * 7 + 1, 7)\r\n            End Select\r\n        Case 7\r\n            Select Case Left(strEAN, 1)\r\n                Case 0, 3, 6, 8, 9\r\n                    strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n                Case Else\r\n                    strResult = strResult &amp; Mid(cTB, (intNumber) * 7 + 1, 7)\r\n            End Select\r\n        End Select\r\n    Next i\r\n    strResult = strResult &amp; &quot;01010&quot;\r\n    For i = 8 To 13\r\n         intNumber = Mid(strEAN, i, 1)\r\n        strResult = strResult &amp; Mid(cTC, (intNumber) * 7 + 1, 7)\r\n    Next i\r\n    strResult = strResult &amp; &quot;101&quot;\r\n    ConvertEAN = strResult\r\nEnd Function<\/pre>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Ermittlung eines Strichcodes im Direktfenster<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p>Die Funktion fasst die Werte der Tabelle mit den drei Spalten <b>A<\/b>, <b>B <\/b>und <b>C <\/b>in drei Konstanten namens <b>cTA<\/b>, <b>cTB <\/b>und <b>cTC <\/b>zusammen, wobei die jeweils zehn Zeichen einfach in der richtigen Reihenfolge aneinandergeh&auml;ngt wurden. Die Variable <b>strResult <\/b>wird nun St&uuml;ck f&uuml;r St&uuml;ck mit den ben&ouml;tigten Elementen gef&uuml;llt. Den Start macht die Anfangsbegrenzung <b>101<\/b>.<\/p>\n<p>Anschlie&szlig;end durchl&auml;uft die Prozedur eine Schleife &uuml;ber die zweite bis siebte Ziffer des EAN-Codes. In dieser Schleife pr&uuml;ft die Funktion in einer <b>Select Case<\/b>-Bedingung zun&auml;chst, von welcher Position des EAN-Codes die aktuelle Ziffer stammt.<\/p>\n<p>Handelt es sich beispielsweise um die zweite Stelle, soll immer der in Spalte <b>A <\/b>der Tabelle abgebildete Strichcode verwendet werden &#8211; also f&uuml;r alle Ziffern von <b>0 <\/b>bis <b>9<\/b>. Die <b>Mid<\/b>-Funktion ermittelt dann aus den 70 Zeichen der Konstanten <b>cTA <\/b>die sieben Zeichen, die der jeweiligen Ziffer entsprechen. Das sind f&uuml;r die <b>0 <\/b>die ersten sieben, f&uuml;r die <b>1 <\/b>die zweiten sieben und so weiter.<\/p>\n<p>Damit dies funktioniert, multipliziert der folgende Ausdruck zun&auml;chst die Zahl aus <b>intNumber <\/b>mit <b>7<\/b>, addiert <b>1 <\/b>und liest von dieser Position aus sieben Zeichen des Wertes der Konstanten <b>cTA<\/b>:<\/p>\n<pre>Mid(cTA, (intNumber) * 7 + 1, 7)<\/pre>\n<p>Hat <b>intNumber <\/b>also etwa den Wert <b>3<\/b>, liefert dies die Zeichen von der 22. bis zur 28. Stelle.<\/p>\n<p>Bei der zweiten Stelle wird es schon interessanter, denn hier kommen die sieben Ziffern f&uuml;r den Strichcode f&uuml;r die aktuelle Ziffer des EAN-Codes nicht alle aus Spalte <b>A <\/b>der Tabelle, sondern sowohl aus Spalte <b>A <\/b>als auch aus Spalte <b>B<\/b>. Dies deckt der entsprechende <b>Case<\/b>-Zweig wie folgt ab:<\/p>\n<pre>Case 3\r\n    Select Case Left(strEAN, 1)\r\n        Case 0, 1, 2, 3\r\n            strResult = strResult &amp; Mid(cTA, (intNumber) * 7 + 1, 7)\r\n        Case Else\r\n            strResult = strResult &amp; Mid(cTB, (intNumber) * 7 + 1, 7)\r\n    End Select<\/pre>\n<p>In diesem Fall soll f&uuml;r die dritte Stelle des EAN-Codes die Ziffernfolge aus Spalte <b>A <\/b>der zweiten Tabelle verwendet werden, wenn die erste Stelle des EAN-Codes den Wert <b>0<\/b>, <b>1<\/b>, <b>2 <\/b>oder <b>3 <\/b>enth&auml;lt und sonst die Ziffernfolge aus Spalte <b>B<\/b>.<\/p>\n<p>Auf diese Weise fertigt die Funktion die zweite bis siebte Stelle des EAN-Codes ab und stellt die entsprechenden Einsen und Nullen zusammen. Dann f&uuml;gt sie der Variablen <b>strResult <\/b>f&uuml;r den Mittelteil die Ziffernfolge <b>01010 <\/b>hinzu und widmet sich dann der Umsetzung der Positionen <b>8 <\/b>bis <b>13 <\/b>des EAN-Codes.<\/p>\n<p>Das ist wesentlich einfacher, da hier alle Werte aus Spalte <b>C <\/b>der zweiten Tabelle stammen. Die <b>For&#8230;Next<\/b>-Schleife braucht daher einige Fallunterscheidungen weniger:<\/p>\n<pre>For i = 8 To 13\r\n    intNumber = Mid(strEAN, i, 1)\r\n    strResult = strResult &amp; Mid(cTC, (intNumber) * 7 + 1, 7)\r\nNext i<\/pre>\n<p>Zu guter Letzt h&auml;ngt die Funktion noch die abschlie&szlig;ende Ziffernfolge <b>101 <\/b>an den in <b>strResult<\/b> gespeicherten Ausdruck an und gibt diesen als Funktionswert zur&uuml;ck.<\/p>\n<p><b>Strichcodes in Berichten drucken<\/b><\/p>\n<p>Fehlt noch eine abschlie&szlig;ende Aufgabe: das Drucken der Strichcodes f&uuml;r die auf Basis des EAN-13-Codes ermittelte Kombination aus Einsen und Nullen.<\/p>\n<p>Hier gibt es zwei Ans&auml;tze. Der erste setzt auf das <b>Linie<\/b>-Steuerelement. Sie k&ouml;nnten eine ausreichende Anzahl davon auf dem Bericht platzieren und die Linie-Steuerelemente dann in der gew&uuml;nschten H&ouml;he und Breite anzeigen lassen. Au&szlig;erdem f&uuml;gen Sie noch drei Textfelder hinzu, welche die Zahl vor dem Strichcode (also die erste Position des EAN-Codes), die Zahlen der zweiten bis siebten Position und die Zahlen der achten bis dreizehnten Position an den entsprechenden Stellen unterbringen.<\/p>\n<p>Diese Variante setzt allerdings auch voraus, dass Sie vorher wissen, wie viele EANs Sie auf dem Bericht unterbringen m&ouml;chten &#8211; dementsprechend viele <b>Linie<\/b>-Steuerelemente m&uuml;ssen Sie bevorraten. <\/p>\n<p>Deshalb w&auml;hlen wir eine flexiblere L&ouml;sung. Diese ben&ouml;tigt gar keine Steuerelemente, sondern zeichnet alle Linien zur Laufzeit mit der <b>Line<\/b>-Methode des Berichts-Objekts. Und sogar die Zahlen unter dem Strichcode werden einfach mit der <b>Print<\/b>-Methode erzeugt. Gut, ganz so leicht ist es dann doch nicht: Immerhin m&uuml;ssen Sie diesen Befehlen als Parameter noch die Koordinaten der Elemente mitgeben, was die Hauptarbeit der folgenden Schritte ist.<\/p>\n<p>Damit Sie schon einmal sehen, worauf wir hinarbeiten &#8211; die folgende Prozedur, die durch das Ereignis <b>Bei Seite <\/b>des betroffenen Berichts aufgerufen wird, legt die neun Strichcodes aus Bild 6 im Bericht an:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic007.png\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Die Strichcodes k&ouml;nnen in beliebiger H&ouml;he ausgegeben werden.<\/span><\/b><\/p>\n<pre>Private Sub Report_Page()\r\n    EAN13 Me, &quot;9783827329509&quot;, 0, 0, 0.8, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 0, 25, 0.9, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 0, 50, 1, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 0, 80, 1.1, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 0, 115, 1.2, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 60, 0, 1.2, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 60, 35, 1.3, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 60, 70, 1.4, 20\r\n    EAN13 Me, &quot;9783827329509&quot;, 60, 110, 1.5, 20\r\nEnd Sub<\/pre>\n<p>Dabei ist jeder Aufruf der Funktion <b>EAN13 <\/b>f&uuml;r einen Strichcode verantwortlich. Die Funktion erwartet einige Parameter, und zwar zun&auml;chst einen Verweis auf den Bericht, in dem die Strichcodes anzulegen sind. Als zweiten Parameter &uuml;bergeben Sie die dreizehnstellige EAN-Nummer.<\/p>\n<p>Der dritte und der vierte Parameter erwarten die Position vom linken und oberen Rand des Berichtsbereichs, in dem die Strichcodes gedruckt werden sollen, in Millimetern.<\/p>\n<p>Hierbei spielt das Ereignis, von dem aus die Funktion aufgerufen wird, eine gro&szlig;e Rolle. Wenn Sie wie in diesem Beispiel das Ereignis <b>Bei Seite <\/b>des Berichts verwenden, k&ouml;nnen Sie die Strichcodes auf der kompletten Seite verteilen (mit Ausnahme der Seitenr&auml;nder). Verwenden Sie beispielsweise die <b>Beim Drucken<\/b>-Ereignisprozedur eines der Berichtsbereiche, k&ouml;nnen Sie den Strichcode nur im jeweiligen Bereich unterbringen. Achten Sie dabei darauf, dass der Bereich &uuml;ber eine ausreichende Gr&ouml;&szlig;e verf&uuml;gt. Der f&uuml;nfte Parameter kann mit einem Skalierungsfaktor ausgestattet werden.<\/p>\n<p>Der Wert <b>1 <\/b>liefert einen Strichcode mit einer Strichbreite von <b>0,33mm<\/b>. Der sechste Parameter schlie&szlig;lich legt die H&ouml;he des Strichcodes fest, ebenfalls in Millimetern (s. Bild 7). <\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Strichcodes auf Basis von EAN-13 im Bericht<\/span><\/b><\/p>\n<p>Schauen wir uns an, wie die Prozedur <b>EAN13<\/b> aussieht &#8211; Sie finden diese in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-64-anchor\">Listing 6<\/a><\/span>.<\/p>\n<p class=\"listingueberschrift\">Listing 6: Drucken von Strichcodes in Berichten<\/p>\n<pre>Public Sub EAN13(rpt As Report, strValue As String, sngX As Single, sngY As Single, _\r\n        cFactor As Single, sngHeight As Single)\r\n    Dim lngColor As Long\r\n    Dim i As Integer\r\n    Dim strCode As String\r\n    Dim sngLang As Single\r\n    Dim sngPre As Single\r\n    Dim sngWidth As Single\r\n    sngPre = cFactor * 3.63\r\n    sngWidth = 0.33\r\n    strCode = ConvertEAN(strValue)\r\n    rpt.DrawWidth = cFactor\r\n    rpt.ScaleMode = 6\r\n    rpt.DrawMode = 13\r\n    For i = 0 To 94\r\n         If Mid(strCode, i + 1, 1) = 1 Then\r\n            lngColor = &amp;H0\r\n        Else\r\n             lngColor = &amp;HFFFFFF\r\n        End If\r\n        Select Case i\r\n            Case 0, 1, 2, 45, 46, 47, 48, 49, 92, 93, 94, 95\r\n                sngLang = 0\r\n            Case Else\r\n                sngLang = -6 * sngWidth\r\n        End Select\r\n        rpt.Line (sngX + i * sngWidth * cFactor + sngPre, sngY)-(sngX + (i + 1) * sngWidth * _\r\n        cFactor + sngPre, sngY + (sngLang + sngHeight)), lngColor, BF\r\n    Next i\r\n    rpt.ForeColor = 0\r\n    rpt.FontName = &quot;Courier New&quot;\r\n    rpt.FontBold = True\r\n    rpt.FontSize = 10 * cFactor\r\n    rpt.CurrentX = sngX + 3 * sngWidth * cFactor\r\n    rpt.CurrentY = sngY + (sngHeight - 7 * sngWidth) * cFactor\r\n    rpt.Print Mid(strValue, 1, 1)\r\n    For i = 2 To 7\r\n         rpt.CurrentX = sngX + sngPre + 4 * sngWidth * cFactor + (i - 2) * 7 * cFactor * sngWidth\r\n        rpt.CurrentY = sngY + (sngHeight - 7 * sngWidth)\r\n        rpt.Print Mid(strValue, i, 1)\r\n    Next i\r\n    For i = 8 To 13\r\n         rpt.CurrentX = sngX + sngPre + 8 * sngWidth * cFactor + (i - 2) * 7 * cFactor * sngWidth\r\n        rpt.CurrentY = sngY + (sngHeight - 7 * sngWidth)\r\n        rpt.Print Mid(strValue, i, 1)\r\n    Next i\r\nEnd Sub<\/pre>\n<p>Nach der Deklaration einiger Variablen ermittelt die Prozedur zun&auml;chst den Abstand zwischen der eigentlichen linken Position des Strichcodes und der ersten Linie &#8211; also des Streifens, in dem die erste Ziffer des EAN-Codes untergebracht wird &#8211; und speichert diese in der Variablen <b>sngPre<\/b>.<\/p>\n<p>Die zweite Zuweisung legt die Breite eines einzelnen Strichs auf 0,33 mm fest und speichert diese in <b>sngWidth<\/b>. Ein Aufruf der Funktion <b>ConvertEAN <\/b>mit dem EAN-Code als Parameter liefert schlie&szlig;lich die den Code repr&auml;sentierende Kombination aus Einsen und Nullen.<\/p>\n<p>Die Strichbreite wird mit der Eigenschaft <b>DrawWidth <\/b>auf die gew&uuml;nschte Breite der Striche eingestellt. Die Eigenschaft <b>ScaleMode <\/b>sorgt mit dem Wert <b>6 <\/b>daf&uuml;r, dass alle Parameter mit der Einheit Millimeter ausgewertet werden.<\/p>\n<p>Schlie&szlig;lich legt <b>DrawMode <\/b>mit dem Wert <b>13 <\/b>fest, dass jeweils die f&uuml;r die Eigenschaft <b>ForeColor<\/b> angegebenen Farben genutzt werden &#8211; zumindest beim Einsatz der <b>Print<\/b>-Anweisung.<\/p>\n<p>Nun folgt eine Schleife, mit der die insgesamt 94 Striche auf den Bericht gedruckt werden. Die erste <b>If&#8230;Then<\/b>-Bedingung ermittelt, ob die aktuelle Ziffer eine Eins oder eine Null ist und, stellt die Strichfarbe davon abh&auml;ngig auf schwarz oder wei&szlig; ein.<\/p>\n<pre>If Mid(strCode, i + 1, 1) = 1 Then\r\n    lngColor = &amp;H0\r\nElse\r\n    lngColor = &amp;HFFFFFF\r\nEnd If<\/pre>\n<p>Die folgende <b>Select Case<\/b>-Bedingung ermittelt, ob die Linie zu einer der Start- oder Endbegrenzung oder zur Mittelmarkierung geh&ouml;rt &#8211; dabei handelt es sich um die ersten drei, das 44. bis 48. und die letzten drei Elemente. Nur diese werden mit der vollen L&auml;nge gedruckt, die &uuml;brigen werden etwas k&uuml;rzer, damit Platz f&uuml;r die Zahlen bleibt.<\/p>\n<pre>Select Case i\r\n    Case 0, 1, 2, 45, 46, 47, 48, 49, 92, 93, 94\r\n        sngLang = 0\r\n    Case Else\r\n        sngLang = -6 * sngWidth\r\nEnd Select<\/pre>\n<p>Dann zeichnet die Prozedur bereits die aktuelle Linie. Bei der Verwendung der <b>Line<\/b>-Methode ist zu beachten, dass diese in der ersten Klammer die Koordinaten des ersten Punkts und in der zweiten die Koordinaten des zweiten Punkts erwartet. Mit der <b>Line<\/b>-Methode lassen sich nicht nur Linien, sondern auch Rechtecke zeichnen &#8211; dazu geben Sie im letzten Parameter den Buchstaben B an. Damit das Rechteck auch noch mit der im vorletzten Parameter angegebenen Farbe gef&uuml;llt wird, verwenden Sie im letzten Parameter den Wert <b>BF<\/b>.<\/p>\n<p>Die Koordinaten der Linien setzen sich wie folgt zusammen:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>x1<\/b>: <b>sngX + (i * sngWidth + sngPre) <\/b>mit <b>sngX <\/b>als horizontale Startposition, <b>(i * sngWidth + sngPre) * cFactor <\/b>als Anzahl der Strichbreiten entsprechend der Position plus Abstand multipliziert mit dem Skalierungsfaktor<\/li>\n<li class=\"aufz-hlung\"><b>y1<\/b>: <b>sngY <\/b>mit <b>sngY <\/b>als vertikale Startposition<\/li>\n<li class=\"aufz-hlung\"><b>x2<\/b>: <b>sngX + ((i + 1) * sngWidth + sngPre) * cFactor <\/b>mit <b>sngX <\/b>als horizontale Startposition, <b>((i + 1) * sngWidth + sngPre) * cFactor <\/b>als Anzahl der Strichbreiten entsprechend der Position plus Abstand multipliziert mit dem Skalierungsfaktor. Um die Breite <b>sngWidth <\/b>zu erhalten, enth&auml;lt die erste Koordinate den Faktor <b>i * sngWidth <\/b>und die zweite Koordinate den Faktor <b>(i+1) * sngWidth<\/b>.<\/li>\n<li class=\"aufz-hlung\"><b>y2<\/b>: <b>sngY + (sngLang + sngHeight) * cFactor)<\/b> mit <b>sngY <\/b>als Abstand vom oberen Rand, <b>sngLang <\/b>als <b>sngHeight <\/b>als Gesamth&ouml;he der Linie und <b>sngLang <\/b>als reduzierender Faktor f&uuml;r die zwischen den Begrenzungen liegenden Linien.<\/li>\n<li class=\"aufz-hlung\"><b>lngColor<\/b>: Farbwert f&uuml;r die Linie, entweder Schwarz oder Wei&szlig;.<\/li>\n<li class=\"aufz-hlung\"><b>BF<\/b>: Linie soll als gef&uuml;lltes Rechteck angezeigt werden.<\/li>\n<\/ul>\n<p>Durch die Schleife &uuml;ber alle Werte von <b>0 <\/b>bis <b>94 <\/b>f&uuml;r die Laufvariable <b>i <\/b>werden alle 95 Linien nebeneinander angelegt, jeweils als schwarze Linie oder, um den Zwischenraum zu kennzeichnen, als wei&szlig;e Linie.<\/p>\n<p><b>Einf&uuml;gen der Zahlen unter dem Strichcode<\/b><\/p>\n<p>Fehlen noch die Zahlen, von denen die erste links neben der ersten Linie erscheinen soll, die zweite bis siebte zwischen der dritten und der vierundvierzigsten und die achte bis dreizehnte zwischen der achtundvierzigsten und dreiundneunzigsten.<\/p>\n<p>Zun&auml;chst stellt die Funktion jedoch die Schrift-Eigenschaften ein, und zwar die Farbe, die Schriftart, die Dicke und die Gr&ouml;&szlig;e. Letztere hat standardm&auml;&szlig;ig den Wert <b>10<\/b>, wird aber wie die &uuml;brigen Elemente um den Faktor <b>cFactor <\/b>skaliert:<\/p>\n<pre>rpt.ForeColor = 0\r\nrpt.FontName = &quot;Courier New&quot;\r\nrpt.FontBold = True\r\nrpt.FontSize = 10 * cFactor<\/pre>\n<p>Dann wird die erste Ziffer links von der ersten Linie ausgegeben. Die erste Linie befindet sich um die in <b>sngPre <\/b>angegebene Anzahl Millimeter multipliziert mit dem Skalierungsfaktor <b>cFactor <\/b>vom linken Rand des Strichcode-Bereichs entfernt. In diesem Bereich soll die erste Ziffer erscheinen, und zwar knapp links von der ersten Linie. Dazu wird die X-Position um drei Linienbreiten vom linken Rand in Richtung erster Linie einger&uuml;ckt:<\/p>\n<pre>rpt.CurrentX = sngX + 3 * sngWidth * cFactor<\/pre>\n<p>Wenn Sie eine andere Schriftart verwenden m&ouml;chten, m&uuml;ssen Sie hier gegebenenfalls etwas experimentieren, um ein optisch ansprechendes Bild zu erhalten. Die Y-Position wird durch folgende Zeile festgelegt &#8211; auch hier f&uuml;hrten Experimente zum gew&uuml;nschten Ergebnis:<\/p>\n<pre>rpt.CurrentY = sngY + (sngHeight - 7 * sngWidth) * cFactor<\/pre>\n<p>Schlie&szlig;lich druckt die <b>Print<\/b>-Anweisung die gew&uuml;nschte erste Ziffer:<\/p>\n<pre>rpt.Print Mid(strValue, 1, 1)<\/pre>\n<p>Danach startet die Prozedur eine Schleife &uuml;ber die Werte <b>2 <\/b>bis <b>7<\/b>, um die Ziffern in den Bereich zwischen der Anfangsmarkierung und der Mittelmarkierung einzuf&uuml;gen. Diese Schleife sieht wie folgt aus, wobei die Einr&uuml;ckung jeweils um einen von <b>i <\/b>abh&auml;ngigen Faktor erfolgt:<\/p>\n<pre>For i = 2 To 7\r\n    rpt.CurrentX = sngX + (sngPre + 4 * sngWidth) * cFactor + (i - 2) * 7 * cFactor * sngWidth\r\n    rpt.CurrentY = sngY + (sngHeight - 7 * sngWidth) * cFactor \r\n    rpt.Print Mid(strValue, i, 1)\r\nNext i<\/pre>\n<p>Die Schleife f&uuml;r die &uuml;brigen sechs Ziffern sieht prinzipiell genau so aus, verwendet aber entsprechend andere Werte:<\/p>\n<pre>For i = 8 To 13\r\n    rpt.CurrentX = sngX + (sngPre + 8 * sngWidth) * cFactor + (i - 2) * 7 * cFactor * sngWidth\r\n    rpt.CurrentY = sngY + (sngHeight - 7 * sngWidth) * cFactor\r\n    rpt.Print Mid(strValue, i, 1)\r\nNext i<\/pre>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Ausgabe von Barcodes auf Etiketten<\/p>\n<p>Als Beispiel f&uuml;r die Ausgabe von Barcodes auf Basis von Daten einer Tabelle schauen wir uns die ISBN an. Das Ergebnis soll beispielsweise wie in Bild 8 aussehen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic012.png\" alt=\"pic012.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9: Entwurf der Tabelle mit den ISBNs<\/span><\/b><\/p>\n<p>Als Erstes erstellen Sie dazu eine entsprechende Tabelle mit den EAN-Codes. Im Beispiel haben wir eine ganz einfache Tabelle namens <b>tblISBNs <\/b>erstellt, die lediglich ein Feld namens <b>ISBNID <\/b>als Prim&auml;rschl&uuml;sselfeld und ein Textfeld namens <b>ISBN <\/b>mit dem EAN-Code enth&auml;lt (s. Bild 10). Die Formatierung wird nicht direkt durch die Dateneingabe erzeugt, sondern durch die Festlegung des folgenden Ausdrucks f&uuml;r die Eigenschaft <b>Format <\/b>des Feldes <b>ISBN <\/b>im Entwurf der Tabelle:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: ISBN im Bericht f&uuml;r die Ausgabe als Etikett<\/span><\/b><\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic009.png\" alt=\"pic009.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10: ISBN aus einer Tabelle<\/span><\/b><\/p>\n<pre>&amp;&amp;&amp;-&amp;-&amp;&amp;&amp;&amp;-&amp;&amp;&amp;&amp;-&amp;<\/pre>\n<p>Jedes Und-Zeichen repr&auml;sentiert ein Zeichen des Feldinhalts, die Bindestriche werden zus&auml;tzlich angezeigt. So wird aus<\/p>\n<pre>9783944216003<\/pre>\n<p>der folgende Ausdruck:<\/p>\n<pre>978-3-9442-1600-3<\/pre>\n<p>Damit k&ouml;nnen wir uns dem Bericht zuwenden. Einen Bericht zur Ausgabe von Etiketten erstellen Sie am einfachsten, indem Sie den entsprechenden Assisten von Access aufrufen &#8211; unter Access 2010 beispielsweise mit dem Ribbon-Eintrag <b>Erstellen|Berichte|Etiketten<\/b>. Bevor Sie dies erledigen, sollten Sie die Tabelle oder Abfrage im Datenbankfenster beziehungsweise im Navigationsbereich markieren, welche die Daten f&uuml;r den Bericht liefert. Der Assistent erscheint dann etwa wie in Bild 11. Dort w&auml;hlen Sie entweder eine der vorgefertigten Etiketten-Vorlagen aus oder erstellen eine eigene Vorlage, die zur Gr&ouml;&szlig;e der ben&ouml;tigten Etiketten passt. In unserem Fall wurde eine benutzerdefinierte Gr&ouml;&szlig;e gew&auml;hlt. Der Assistent fragt auch nach mindestens einem Feld, das je Etikett erscheinen soll. W&auml;hlen Sie hier das Feld ISBN aus und platzieren Sie es oben im Bericht.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic011.png\" alt=\"pic011.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11: Berichterstellung mit dem Etiketten-Assistent<\/span><\/b><\/p>\n<p>Das Ergebnis sieht dann wie in Bild 12 aus. Die ISBN wird nun im gleichen Format angezeigt, wie wir es im Tabellenentwurf vorgegeben haben.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_05\/EAN13-web-images\/pic010.png\" alt=\"pic010.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 12: ISBN im Bericht f&uuml;r die Ausgabe als Etikett<\/span><\/b><\/p>\n<p>Allerdings soll wie bei einem richtigen Buch noch die Zeichenkette <b>ISBN <\/b>vorangestellt werden. Deshalb &auml;ndern Sie f&uuml;r den Bericht die Eigenschaft Format des Feldes mit der <b>ISBN <\/b>von<\/p>\n<pre>&amp;&amp;&amp;-&amp;-&amp;&amp;&amp;&amp;-&amp;&amp;&amp;&amp;-&amp;<\/pre>\n<p>in den folgenden Ausdruck:<\/p>\n<pre>&quot;ISBN &quot;&amp;&amp;&amp;-&amp;-&amp;&amp;&amp;&amp;-&amp;&amp;&amp;&amp;-&amp;<\/pre>\n<p>Allerdings fehlt noch das Wichtigste &#8211; n&auml;mlich der Strichcode selbst. Dieser soll f&uuml;r jeden Detailbereich entsprechend der ISBN neu gedruckt werden, also verwenden wir die Ereigniseigenschaft <b>Beim Drucken<\/b> des Detailbereichs als Grundlage f&uuml;r die Erstellung der folgenden Ereignisprozedur:<\/p>\n<pre>Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer)\r\n    EAN13 Me, Me!ISBN, 0, 4, 1, 20\r\nEnd Sub<\/pre>\n<p>Diese Prozedur ruft die bereits beschriebene Funktion <b>EAN13 <\/b>auf und &uuml;bergibt einen Verweis auf den Bericht, den aktuellen Wert des Feldes ISBN, die Koordinaten f&uuml;r die linke, obere Ecke des Strichcodes, den Skalierungsfaktor (hier 1) und die H&ouml;he des Strichcodes an die Funktion.<\/p>\n<p>Dies erzeugt genau die Etiketten mit den gew&uuml;nschten Strichcodes, die Sie dann auf den entsprechenden Produkten platzieren k&ouml;nnen.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Nach unseren Recherchen ist dies die erste L&ouml;sung f&uuml;r Access, mit der Sie Strichcodes auf Basis von EAN-13 direkt in Berichten platzieren k&ouml;nnen &#8211; und zwar ohne Verwendung einer speziellen Barcode-Schriftart. Die Erstellung verlangt sicher einiges an Flei&szlig;arbeit. Aber wenn die Vorgaben f&uuml;r die Gestaltung eines solchen Strichcodes vorliegen und das Ergebnis wie in diesem Fall den Erwartungen entspricht, lohnt sich der Aufwand.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>EAN13.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{25A2F77E-38CE-4D2E-A0EF-1158E6C18B8E}\/aiu_853.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nicht selten fragen Access-Entwickler, wie Sie Strichcodes in Berichten abbilden k&ouml;nnen. Das Internet bietet verschiedene M&ouml;glichkeiten von kostenpflichtigen Tools bis hin zu speziellen Schriftarten. Wir wollen am Beispiel von EAN-13 zeigen, wie Sie einen solchen Code mit ein wenig Handarbeit selbst generieren und in einem Bericht anzeigen k&ouml;nnen.<\/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":[662012,66052012,44000024],"tags":[],"class_list":["post-55000853","post","type-post","status-publish","format-standard","hentry","category-662012","category-66052012","category-Berichte_und_Reporting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>EAN-Strichcode mit Bordmitteln - 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\/EANStrichcode_mit_Bordmitteln\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EAN-Strichcode mit Bordmitteln\" \/>\n<meta property=\"og:description\" content=\"Nicht selten fragen Access-Entwickler, wie Sie Strichcodes in Berichten abbilden k&ouml;nnen. Das Internet bietet verschiedene M&ouml;glichkeiten von kostenpflichtigen Tools bis hin zu speziellen Schriftarten. Wir wollen am Beispiel von EAN-13 zeigen, wie Sie einen solchen Code mit ein wenig Handarbeit selbst generieren und in einem Bericht anzeigen k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:48:26+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622\" \/>\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=\"23\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"EAN-Strichcode mit Bordmitteln\",\"datePublished\":\"2020-05-22T21:48:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/\"},\"wordCount\":3709,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/d3c11214caa24ebda76d51df4879e622\",\"articleSection\":[\"2012\",\"5\\\/2012\",\"Berichte und Reporting\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/\",\"name\":\"EAN-Strichcode mit Bordmitteln - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/d3c11214caa24ebda76d51df4879e622\",\"datePublished\":\"2020-05-22T21:48:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/d3c11214caa24ebda76d51df4879e622\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/d3c11214caa24ebda76d51df4879e622\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EANStrichcode_mit_Bordmitteln\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EAN-Strichcode mit Bordmitteln\"}]},{\"@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":"EAN-Strichcode mit Bordmitteln - 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\/EANStrichcode_mit_Bordmitteln\/","og_locale":"de_DE","og_type":"article","og_title":"EAN-Strichcode mit Bordmitteln","og_description":"Nicht selten fragen Access-Entwickler, wie Sie Strichcodes in Berichten abbilden k&ouml;nnen. Das Internet bietet verschiedene M&ouml;glichkeiten von kostenpflichtigen Tools bis hin zu speziellen Schriftarten. Wir wollen am Beispiel von EAN-13 zeigen, wie Sie einen solchen Code mit ein wenig Handarbeit selbst generieren und in einem Bericht anzeigen k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:48:26+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"23\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"EAN-Strichcode mit Bordmitteln","datePublished":"2020-05-22T21:48:26+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/"},"wordCount":3709,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622","articleSection":["2012","5\/2012","Berichte und Reporting"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/","url":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/","name":"EAN-Strichcode mit Bordmitteln - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622","datePublished":"2020-05-22T21:48:26+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/d3c11214caa24ebda76d51df4879e622"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/EANStrichcode_mit_Bordmitteln\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"EAN-Strichcode mit Bordmitteln"}]},{"@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\/55000853","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=55000853"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000853\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}