Microsoft Access レポート デザイナーでテキスト フィールドをフォーマットするにはどうすればよいですか?

Microsoft Access レポート デザイナーでテキスト フィールドをフォーマットするにはどうすればよいですか?

レポートに印刷すると「0000000840509001」のように表示されるフィールド (文字列) があります。これを「84-05-090.01」のように表示したいのですが、レポート デザイン レベルでこれを実現する方法はありますか?

基本的には、先頭のゼロを削除し、残りの文字列を ##-##-###.## 形式にします。

答え1

残念ながら、先頭のゼロを削除する単一の方法はありません...しかし、私が学んだちょっとしたコツがあります...

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

壊れた…

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

狂気の方法は、すべてのゼロをスペース文字に置き換えてから、左側のみを「トリム」することです。(末尾のゼロを消したくないので) 次に、スペース文字をゼロに戻して... 最後に、希望どおりにフォーマットします。

あるいは、数字を切り捨てるのではなく、cint() を使用して実際の整数に変換し、次のようにフォーマットすることもできます。

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

どちらの方法も、希望どおりに動作しない可能性があります... 提供された入力が有効かどうかのエラー チェックがないためです。つまり、9 桁ではなく 10 桁 (またはそれ以上) の有効桁がある場合、先頭の桁が暗黙的に切り捨てられます... また、cInt を使用すると、「0000000ABCDEFGHI」などの「文字」は受け入れられません...

実際に、VB スクリプトで関数を作成して適切にフォーマットし、それをレポートで使用することもできます。ただし、これは非常に複雑な問題なので、ここでは触れません。

関連情報