Wie kann ich ein Textfeld im Microsoft Access Report Designer formatieren?

Wie kann ich ein Textfeld im Microsoft Access Report Designer formatieren?

Ich habe ein Feld (eine Zeichenfolge), das beim Ausdrucken in meinem Bericht folgendermaßen aussieht: „0000000840509001“. Ich möchte, dass es folgendermaßen aussieht: „84-05-090.01“. Gibt es eine Möglichkeit, dies auf der Berichtsentwurfsebene zu tun?

Grundsätzlich möchte ich führende Nullen entfernen und die verbleibende Zeichenfolge in das Format ##-##-###.## bringen.

Antwort1

leider gibt es keine einheitliche Methode zum Entfernen führender Nullen … aber hier ist ein kleiner Trick, den ich gelernt habe …

format(replace(ltrim(replace([your-field-name],"0"," "))," ","0"),##-##-###.##)

heruntergebrochen...

format(
  replace(
    ltrim(
      replace(
        [your-field-name],
        "0",
        " "
      )
    ),
    " ",
    "0"
  ),
  "##-##-###.##"
)

Die Lösung des Wahnsinns besteht darin, alle Nullen durch ein Leerzeichen zu ersetzen und es dann nur auf der linken Seite zu „trimmen“. (Wir möchten nicht, dass die letzten Nullen verschwinden.) Dann ersetzen Sie die Leerzeichen wieder durch Nullen … und formatieren es schließlich nach Ihren Wünschen.

Anstatt zu versuchen, die Ziffern zu kürzen, können Sie es alternativ auch mit cint() in eine tatsächliche Ganzzahl umwandeln und es dann folgendermaßen formatieren:

format(cint([your-field-name]),"##-##-###.##")

Beide Methoden funktionieren möglicherweise nicht wie gewünscht, einfach weil keine Fehlerprüfung durchgeführt wird, ob die bereitgestellte Eingabe gültig ist. Wenn Sie beispielsweise 10 (oder mehr) signifikante Ziffern statt 9 haben, werden die führenden Ziffern automatisch abgeschnitten. Außerdem werden bei Verwendung von cInt keine „Zeichen“ wie „0000000ABCDEFGHI“ oder ähnliches akzeptiert.

Möglicherweise möchten Sie tatsächlich eine Funktion in VB-Script erstellen, um die Formatierung richtig durchzuführen ... und diese dann in Ihrem Bericht verwenden. Aber das ist ein viel komplexeres Thema ... deshalb werde ich hier nicht näher darauf eingehen.

verwandte Informationen