Veröffentlicht 28. Dezember 20168 j Hey liebe IT-Freunde , Ich habe ein Problem mit Crystal Reports bzw eher mit einem Script in der Crystal-Syntax. Ich sollte einen Barcode 128 mit 13 Stellen "Generieren" bzw es so anstellen, dass wenn ich es einscanne, dass mir die 13 Stellige ISBN Nummer auf dem Scanner angezeigt wird. Leider ist es gerade so, dass nur 12 Zeichen angezeigt werden und die letzte Zahl abgeschnitten wird. Hier ist einmal ein Bild von der Syntax. Ich hoffe ihr könnt mir da weiter helfen. Mfg
29. Dezember 20168 j Dem Code nach nutzt Du die Methode mit Fonts zur Barcodeerzeugung. Siehe z.B. http://www.idautomation.com/barcode-faq/code-128/ Steht denn alles als Barcode zu druckende (inkl. Checksumme) in Deiner "barcode"-Variablen drin? Evtl. kann man am Scanner auch die Prüfsumme deaktivieren, etc.. Wenn Du den Code kopierbar mit Beispieldaten (TmpDruck_Buchlaufkarten.ISBN) eingestellt hättest, hätte evtl.jemand das probieren können. Tja..
30. Dezember 20168 j Autor stringvar barcode := ''; stringvar belegnr := ''; numbervar p0 := 0; numbervar p1 := 0; numbervar p2 := 0; numbervar p3 := 0; numbervar p4 := 0; numbervar p5 := 0; numbervar p6 := 0; numbervar p7 := 0; //belegnr := LEFT('000', (13 - LENGTH(totext({TmpDruck_Buchlaufkarten.ISBN}))))+ totext({TmpDruck_Buchlaufkarten.ISBN}); belegnr := '0'+{TmpDruck_Buchlaufkarten.ISBN}; p0 := tonumber(MID(belegnr, 1, 2)); p1 := tonumber(MID(belegnr, 3, 2)); p2 := tonumber(MID(belegnr, 5, 2)); p3 := tonumber(MID(belegnr, 7, 2)); p4 := tonumber(MID(belegnr, 9, 2)); p5 := tonumber(MID(belegnr, 11, 2)); p6 := tonumber(MID(belegnr, 13, 2)); p7 := Remainder((105 + (p0*1) + (p1*2) + (p2*3) + (p3*4) + (p4*5) + (p5*6) + (p6*7)), 103); barcode := 'Í'; if p0 = 0 THEN barcode := barcode + 'Ï' else if p0 >= 95 THEN barcode := barcode + chr(p0 + 100) else barcode := barcode + chr(p0 + 32); if p1 = 0 THEN barcode := barcode + 'Ï' else if p1 >= 95 THEN barcode := barcode + chr(p1 + 100) else barcode := barcode + chr(p1 + 32); if p2 = 0 THEN barcode := barcode + 'Ï' else if p2 >= 95 THEN barcode := barcode + chr(p2 + 100) else barcode := barcode + chr(p2 + 32); if p3 = 0 THEN barcode := barcode + 'Ï' else if p3 >= 95 THEN barcode := barcode + chr(p3 + 100) else barcode := barcode + chr(p3 + 32); if p4 = 0 THEN barcode := barcode + 'Ï' else if p4 >= 95 THEN barcode := barcode + chr(p4 + 100) else barcode := barcode + chr(p4 + 32); if p5 = 0 THEN barcode := barcode + 'Ï' else if p5 >= 95 THEN barcode := barcode + chr(p5 + 100) else barcode := barcode + chr(p5 + 32); if p6 = 0 THEN barcode := barcode + 'Ï' else if p6 >= 95 THEN barcode := barcode + chr(p6 + 100) else barcode := barcode + chr(p6 + 32); if p7 = 0 THEN barcode := barcode + 'Ï' else if p7 >= 95 THEN barcode := barcode + chr(p7 + 100) else barcode := barcode + chr(p7 + 32); barcode := barcode + 'Î'; barcode; Das wäre der komplette Code. Wir haben an sich schon alles versucht was wir konnten, sind auch so weit gekommen, dass die Komplette ISBN angezeigt wird, nur mit einer führender 0 am Anfang, die wir dort einfach nicht weg kriegen.
30. Dezember 20168 j Anscheinend codiert die Funktion in Code128C - zu sehen z.B. an der "105" in p7 := Remainder((105... Bei Code C werden Zahlen immer paarweise kodiert: Z.B. "00", "90", "66", etc. - das bedeutet bei ungerader Stellenzahl entweder vorn oder hinten aufgefüllt werden muss. Andere Möglichkeiten: - Bei Code128 vor der 13. Stelle einen Wechsel auf eine andere Tabelle machen - wie das geht steht z.B. in dem idautomation-Link. Beachte, dass auch die Prüfsummenberechnung angepasst werden muss. - Bei Code128 gleich eine andere Tabelle (A oder B ) nutzen - der erzeugte Code muss nicht unbedingt länger werden) - Anderen Barcode verwenden (EAN13?) Hth & Guten Rutsch! Ripper
31. Dezember 20168 j Warum denn eigentlich als Code128? Die ISBN13 ist eine EAN13. Da muss eine Prüfzifferberechnung durchgeführt werden, über die wird die Korrektheit des Barcodes geprüft. Sprich 12-Stellen Inhalt + 1 Stelle Prüfziffer. https://de.wikipedia.org/wiki/Internationale_Standardbuchnummer#ISBN-13
9. Januar 20178 j Autor Hey, Dankeschön für die guten und schnellen Antworten. Das Problem hat sich soweit geklärt. wir haben bei unseren MDE-Geräten einfach die Prüfsummen deaktiviert... Ja, manchmal denkt man einfach viel zu kompliziert Mfg
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.