CrystalReports: Barcode-Etikett für Artikel/Geräte: Unterschied zwischen den Versionen
Zeile 223: | Zeile 223: | ||
* Klicken Sie mit der rechten Maustaste auf den Detail-Bereich und wählen „Bereich formatieren“ aus. | * Klicken Sie mit der rechten Maustaste auf den Detail-Bereich und wählen „Bereich formatieren“ aus. | ||
* Stellen Sie folgendes ein: Danach fügen Sie die gewünschten weiteren Felder in das Formular ein, z.B. Artikelbezeichnung {MART.BEZEICHNUNG} Artikeltyp {MART.TYP} Einzelartikel-Ser.Nr. {MARTEINZ.IDENTNR} usw. | * Stellen Sie folgendes ein: Danach fügen Sie die gewünschten weiteren Felder in das Formular ein, z.B. Artikelbezeichnung {MART.BEZEICHNUNG} Artikeltyp {MART.TYP} Einzelartikel-Ser.Nr. {MARTEINZ.IDENTNR} usw. | ||
+ | |||
+ | == Wichtig! == | ||
+ | CrystalReports 12 hat einen Bug, der für den Etikettendruck elementar ist: Bei sehr kleinen Seiten versucht es, die Inhalte an das Formular anzupassen. Das Ergebnis ist ein mini-kleiner Druck, oft auch noch versetzt und gedreht! Bis heute (Ende 2012) gibt dafür noch keine Lösung. Deshalb müssen derzeit die Etiketten-Formulare (Reports) mit '''CrystalReports 8.5''' erstellt werden! Im '''Etiketten-Druck-Dialog''' muss diese Version angegeben werden! | ||
+ | |||
+ | == Links == | ||
+ | |||
+ | * [[Reflex Übersicht|REFLEX Übersicht]] | ||
+ | * [[GEVAS-Professional|GEVAS-Professional Übersicht]] | ||
+ | * [[Allgemeines Übersicht|Allgemeines]] | ||
+ | * [[CrystalReports, Formulare und Reports|CrystalReports, Formulare und Reports]] | ||
+ | * [[Listen allgemein|Listen allgemein]] | ||
+ | * [[Barcode und Etiketten allgemein|Barcode und Etiketten allgemein]] |
Version vom 18. Oktober 2012, 22:51 Uhr
Hier beschrieben, wie man ein Formular für ein Artikel-Etikett erstellt oder ändert.
Inhaltsverzeichnis
1 Voraussetzungen:
Sie benötigen:
- Crystal-Reports: Mit diesem Programm wird das Formular bearbeitet.
- Einen Etikettendrucker: Im Normalfall handelt es sich dabei um einen speziellen Drucker, der (nur) Etiketten bedrucken kann, z.B. einen Thermotransfer-Drucker mit Kunststoffetiketten.
- Den Treiber für den Etikettendrucker: Auch wenn der Etikettendrucker nicht direkt an Ihrem PC angeschlossen ist, müssen Sie den Treiber für den Etikettendrucker auf Ihrem PC installieren. Nur dann können Sie in CrystalReports das Format des Etiketts auswählen/einstellen!
- Eine Barcode-Schriftart für die Inventarnummer: Wenn Ihr Etikettendrucker eingebaute Barcodes hat, können Sie diese ggf. verwenden. Einzelheiten dazu entnehmen Sie der Beschreibung des Druckers. Alternativ dazu können Sie auch eine True-Type-Schriftart verwenden. Die Schriftart für den Barcode-Typ "2of5i" können Sie von unserem Support erhalten. In diesem Fall benötigen Sie auch noch eine CrystalReports-Formel, die die benötigten Zeichen für den 2of5i-Barcode und ggf. eine Prüfziffer errechnet. Ein entsprechendes Muster-Formular können Sie auch von unserem Support erhalten.
2 Vorgehensweise
An einem Beispiel sollen die einzelnen Schritte erläutert werden. So soll das Etikett aussehen:
Dies entspricht dem Standard-Etikett von GEVITAS. Sie können dieses als Basis für Ihr eigenes Etikett benutzen.
2.1 Drucker einrichten in CrystalReports
Öffnen Sie CrystalReports und das Musteretikett. Klicken Sie dann auf "Datei->Drucker einrichten". Wählen Sie Ihren Etikettendrucker und das Etikettenformat aus. Beispiel:
Erst danach können Sie im CrystalReports-Editor sehen, welche Dimensionen das Etikett hat.
Es empfiehlt sich, mit "Datei->Seite einrichten" die Seitenränder auf 0 zu stellen:
In der Entwurfsansicht sieht das ganze dann z.B. so aus:
Wenn die Inventarnummer bei Ihnen nicht als Barcode erscheint sondern im Klartext, so haben Sie vergessen, die Schriftart "i2of5Gevitas.ttf" zu installieren!
2.2 Einfügen der Formel für den 2/5i-Barcode
Wenn Sie das GEVITAS-Standardformular benutzen, ist eine Formel für den Barcode i2of5Gevitas schon vorhanden. Wenn nicht, müssen Sie diese selbst erstellen. Sie müssen keine Formel verwenden, wenn...
- ...Sie einen anderen Barcode verwenden
- ...Sie einen eingebauten Barcode des Etikettendruckers verwenden
Die Formel lautet:
// Formel für Berechnung der Inventarnummer für Schriftart "I2OF5GEVITAS"
// ------------------------------------------------------------------ // Diese Formel kann zusätzlich eine Prüfziffer generieren. // Bei nicht korrekter Anzahl der Stellen wird eine "0" vorrangestellt WhilePrintingRecords; NumberVar iMitPruefZiff := 1; // Bei 1 wird die Prüfziffer mit generiert StringVar sInv; // Inventarnummer StringVar sBar; // Barcode- Nummer NumberVar i; NumberVar k; NumberVar iq1; // Quersumme aus den ungeraden Positionen NumberVar iq2; // Quersumme aus den geraden Positionen NumberVar i_Pruefziffer; NumberVar i_Das_Ergebnis_der_Berechnung; StringVar s_BarcodeNummer_Helfer; StringVar s_Paarweise_Darstellung; //_________________________________ // // Schritt 1.) Die zu kodierende Inventarnummer holen: sInv := {MARTEINZ.InventarNr}; // Inventarnummer aus Datenbank holen //_________________________________ // // Schritt 2.) Die zu kodierende Inventarnummer holen: // Überprüfen, ob überhaupt gültige werte in der Inventarnummer sind // Eine zu kodierende Nummer (hier: Inventarnummer) darf nur Ziffern enthalten: For i := 1 To Len(sInv) Do // Alle Zeichen einzeln überprüfen ( k := Asc(Mid(sInv, i, 1)); If (k < Asc("0")) Or (k > Asc("9")) Then sInv := ""; // Inventarnummer ungültig > löschen ); //_________________________________ // // Schritt 3.) Ausgabestring leeren: sBar := ""; //_________________________________ // // Schritt 4.) Falls erwünscht Prüfziffer anhängen:: If (sInv <> "") Then // Inventarnummer ist ein gültiger String > Berechnung starten ( If (iMitPruefZiff = 1) Then ( iq1 := 0; // Quersummenzähler leeren iq2 := 0; i_Pruefziffer := 1; //PMB//120710// i_Das_Ergebnis_der_Berechnung := 0; //PMB//120710// s_BarcodeNummer_Helfer := ""; //PMB//120710// // Bei Interleaved 2 aus 5 Code wird jede Ziffer die an einer ungerade STELLE steht(von RECHTS!!! nach LINKS!!! gesehen -> DOWNTO) // zuerst miteinander addiert und dann die so entstandene Quersumme mal 3 multipliziert. // Danach wird das Ergebnis durch 10 geteilt. Der Rest stellt die Prüfziffer dar // Weil von RECHTS nach LINKS gesehen muss die Reihenfolge umgedreht werden! // Beispiel: eine Barcodenummer '245138' hat an der 1 Position von Rechts nach Links gesehen eine 8. // Zählt die erste ungearde Stelle (1) hat eine 8: // Schaut man jedoch von Links nach Rechts ist die 8 an einer GERADEN Stelle (6). // Also ein Konstrukt wie etwa: // for i := i_String_Laenge downto 1 do // if (i mod 2) = 1 then // Ungerade Stelle hat immer als REST eine 1 // kann hier richtig NICHT funktionieren. // Um Fehler zu vermeiden MUSS man der GESAMMTEN String zuerst UMDREHEN: // String zuerst UMDREHEN: For i := 1 To Len(sInv) Do ( s_BarcodeNummer_Helfer := s_BarcodeNummer_Helfer + Mid(sInv, i, 1); //PMB//120710// ); // Zuerst werden zwei Quersummen der ungeraden (iq1) und geraden (iq2) Stellen gebildet: For i := 1 To Len(s_BarcodeNummer_Helfer) Do // Quersumme errechnen ( If (i Mod 2) = 1 Then // Quersumme aus den ungeraden Positionen iq1 := iq1 + (Asc(Mid(s_BarcodeNummer_Helfer, i, 1)) - Asc("0")) Else // Quersumme aus den geraden Positionen iq2 := iq2 + (Asc(Mid(s_BarcodeNummer_Helfer, i, 1)) - Asc("0")); ); // Die Quersumme der ungeraden (iq1) Stellen wird jetzt mal 3 multipliziert (3 * iq1) // und dazu wird die Quersumme der geraden (iq2) addiert: k := (3 * iq1) + iq2; // Summe errechnen // Jetzt wird das Ergebnis durch 10 geteilt. i_Das_Ergebnis_der_Berechnung := k mod 10; // Das Ergebnis der Substruktion ist die Prüfzahll die an s_BarcodeNummer angehängt wird (Wenn Rest gleich 0 ist, so ist die Prüfziffer 0 *) (if ((i_Das_Ergebnis_der_Berechnung > 0) and (i_Das_Ergebnis_der_Berechnung < 10)) then i_Pruefziffer := 10 - i_Das_Ergebnis_der_Berechnung else i_Pruefziffer := 0; ); sInv := sInv + Chr(Asc("0") + i_Pruefziffer); // zu Inventarnummer die Prüfziffer anhängen ); // für If (iMitPruefZiff = 1) Then //_________________________________ // // Schritt 5.) Eine Barcodenummer muss eine gerade Anzahl von Stellen haben // Im 2/5 interleaved System kann aufgrund der Codierungstechnik nur eine gerade // Anzahl von Stellen verschlüsselt werden. Will man eine ungerade Anzahl von Zeichen darstellen, // so muss man dem Code eine Null voranstellen (aus 123 wird 0123)oder eine selbsterstellte Prüfziffer anhängen. // Da hier schon eventuel eine Prüfziffer angehängt wurde zählt nur ob die Anzahl der Ziffer gerade oder ungerade ist. // Ist diese ungerade, dann wird eine Null '0' dazu addiert If (Len(sInv) Mod 2) = 1 Then sInv := "0" + sInv; // Eine Barcodenummer muss eine gerade Anzahl von Stellen haben //_________________________________ // // Schritt 6.) Decodierung // Zielsetzung ist es durch eine paarweise Darstellung der zu codierenden Ziffern eine Platzersparnis zu erzielen. // Der Code ist aus 2 breiten und 3 schmalen Strichen, bzw. 2 breiten und 3 schmalen Lücken aufgebaut. // Zwei Ziffern bilden immer ein Paar: Die erste Ziffer wird aus 5 Strichen dargestellt, // die zweite Ziffer wird durch die unmittelbar folgenden Lücken der ersten Ziffer dargestellt. // Fünf Striche und Lücken stellen also ein Ziffernpaar dar. s_BarcodeNummer_Helfer := ""; s_Paarweise_Darstellung := ""; For i := 1 To Len(sInv) Do ( s_Paarweise_Darstellung := s_Paarweise_Darstellung + Mid(sInv, i, 1); If (i Mod 2) = 0 Then ( // Hier sind 2 Ziffern im String s_Paarweise_Darstellung: // Diese werden nun in das entsprechende ANSI-Zeichen umgewandelt. IF ToNumber(s_Paarweise_Darstellung) < 50 then s_BarcodeNummer_Helfer := s_BarcodeNummer_Helfer + Chr(ToNumber(s_Paarweise_Darstellung) + 48) else s_BarcodeNummer_Helfer := s_BarcodeNummer_Helfer + Chr(ToNumber(s_Paarweise_Darstellung) + 142); s_Paarweise_Darstellung := ""; ); ); //_________________________________ // // Schritt 7.) Start - Stop Zeichen // Als Result bekommt man hier eine Barcode für die Schriftart 'I2OF5GEVITAS.TTF' If s_BarcodeNummer_Helfer <> "" Then sBar := "(" + s_BarcodeNummer_Helfer + ")"; // Inventarnummer mit Start und Stop- Zeichen versehen ); sBar; // Ausgeben der Zeichenfolge als Text für Schriftart "I2OF5GEVITAS" |
Beachten Sie, dass Kommentare in CrystalReports mit // beginnen!
Fügen Sie die Formel in Ihr Formular ein. Wenn Sie das Ergebnis der Formel lesen wollen, stellen Sie z.B. die Schriftart „Arial“ ein. Wenn der Barcode angezeigt werden soll, stellen Sie die Schriftart "I2OF5GEVITAS.TTF" ein!
2.3 Einfügen der Formel für den Code39-Barcode
Diese Barcode verwendet als Start- und Stopp-Zeichen das Sternchen ( * ). Um einen korrekten Barcode zu erhalten, müssen Sie diese Formel erstellen:
- "*" + {MARTEINZ.INVENTARNR} + "'*"
...und in Ihr Formular ziehen. Hierfür benötigen Sie dann eine spezielle Schriftart, die man z.B. im Internet beziehen kann.
2.4 Formatieren des Detail-Bereichs
Da ja jedes Etikett eine Seite (wenn auch eine kleine!) darstellt, müssen Sie den Detail-Bereich noch folgendrmaßen formatieren:
- Klicken Sie mit der rechten Maustaste auf den Detail-Bereich und wählen „Bereich formatieren“ aus.
- Stellen Sie folgendes ein: Danach fügen Sie die gewünschten weiteren Felder in das Formular ein, z.B. Artikelbezeichnung {MART.BEZEICHNUNG} Artikeltyp {MART.TYP} Einzelartikel-Ser.Nr. {MARTEINZ.IDENTNR} usw.
3 Wichtig!
CrystalReports 12 hat einen Bug, der für den Etikettendruck elementar ist: Bei sehr kleinen Seiten versucht es, die Inhalte an das Formular anzupassen. Das Ergebnis ist ein mini-kleiner Druck, oft auch noch versetzt und gedreht! Bis heute (Ende 2012) gibt dafür noch keine Lösung. Deshalb müssen derzeit die Etiketten-Formulare (Reports) mit CrystalReports 8.5 erstellt werden! Im Etiketten-Druck-Dialog muss diese Version angegeben werden!