Hallo,
ich habe ein Datenbank-Feld, in dem unformatiert die Zahlen für einen Barcode stehen (inkl. Prüfziffer). Das kann bunt gemischt ein EAN-8, EAN-13, UPC-A oder UPC-E sein. Wenn ich nun auf einem Etikett diese Zahlen als Barcode darstellen möchte, dann geht das nicht so einfach, weil die Funktion Barcode() den Typ als Parameter benötigt und außerdem der String mit den Zahlen speziell formatiert sein muss.
Um dies zu vereinfachen, wollte ich eine DesignerFunction erstellen, die den ResultType Barcode hat. Diese könnte den Typ des Barcodes ermitteln und ein entsprechendes Barcode-Objekt erzeugen. Also habe ich im Event EvaluateFunction den ResultValue gesetzt:
e.ResultValue = new LlBarcode(sEAN, typ, true)
Das LlBarcode-Object ist auch gültig, IsWellFormed ist true, der Content passt auch. Aber wenn ich den Wert einem Barcode-Feld im Etikett via Formel zuweisen möchte, kommt ein “Fehler: Barcode-Text hat falsches Format” und im Expression-Editor erscheint als Ergebnis der Formel “combit.Reporting.LlBarcode”.
Wenn ich als ResultValue den Content nehme:
e.ResultValue = new LlBarcode(sEAN, typ, true).Content
dann kommt das richtige Ergebnis heraus, aber ich kann den Typ des Barcodes nicht mehr beeinflussen (z.B. drucken wir als Fallback einen Code-39, wenn die Nummer kein UPC oder EAN ist).
Ich konnte in der Dokumentation leider nichts finden, wie man korrekt einen Barcode als Return-Value einer DesignerFunction erstellt, der dann auch in der Formel beim Barcode-Inhalt im Designer verwendet werden kann.
Vielleicht kann mir hier jemand weiter helfen?