Ich versuche dynamisch verschiedene Zahlenwerte richtig in einem Report zu formatieren.
Ich habe bereits rausgefunden, dass man bei Feldern einer Tabelle das Format anpassen kann, um die Anzahl an Nachkommastellen festzulegen. Leider konnte ich keine Möglichkeit finden eine “Mindestdezimalstellen”-Option einzustellen.
Ich möchte nämlich eine Nachkommastelle mindestens immer anzeigen, auch wenn diese 0 ist. Durch die Option “Optimierter Nachkommaanteil” kann man aber nur entweder alle nachfolgenden Nullen entfernen, oder wenn diese Option deaktiviert ist, lebt man mit bis zu der Anzahl an Nachkommastellen, die man weiter oben angegeben hat.
Über die Funktion Fstr() konnte man durch den dritten Parameter auch nur mitteilen, das alle nachfolgenden Nullen entfernt werden, nicht aber wie viele Nachkommastellen mindestens angezeigt werden sollten. Zumindest hab ich nicht rausfinden können wie das gehen würde.
Das wäre die Formel die ich verwendet habe: Fstr$(Articles.WeightPerUnitKg, "?&.####", 4)
Ich hätte erwartet, dass man es so ähnlich wie in C# mit .ToString("0.0###") lösen könnte, aber wenn ich eine 0 vor die '#'s schreibe, wird einfach eine 0 immer davor geschrieben, was natürlich den Wert verändern würde.
tatsächlich gibt es für diese Anforderung - in der Form - so direkt leider keine Möglichkeit, um das wie von dir gewünscht umsetzen zu können.
Vor diesem Hintergrund würden wir stattdessen empfehlen das mithilfe einer entsprechenden Designer-Funktion in C# zu realisieren, mit der dann auch die Formatierung in C# vorgenommen werden kann.
Gib uns gerne nochmal eine Rückmeldung ob es ggf. für dich möglich war das auf diesem Weg zu lösen.
Erstmal danke für die schnelle Antwort.
Ich hab zwar nicht ganz verstanden, was mit Designer-Funktion in C# gemeint war, aber ich habs jetzt recht simpel anders gelöst.
Ich hab über C# in meinem Objekt (das ich dann dem SchemaAwareJsonDataProvider mitgebe) einfach bei dem benötigtem Feld den Datentypen von decimal zu string geändert und dann wie oben erwähnt die Methode .ToString("0.0###") angefügt.
Im Designer hab ich dann einfach bei allen Fehlermeldungen LocVal(Articles.WeightPerUnitKg) verwendet, wo es als Zahl gebraucht war (aufgrund von Vergleichen o. ä.) und da wo ich es einfach nur anzeigen lassen wollte das Feld selbst stehen lassen ohne Formatierung, da es ja dann schon formatiert ist
Du kannst dir eine eigene Funktion bauen, auf die du im code reagierst und diese findest dann im Formelassistenten wie alle anderen Funktionen Genauso Actions usw.
combit liefert hier sogar ein coole Sample aus für das erweitern des Designer, findest hier →