我有一个字段(字符串),打印在报告上时看起来像这样:“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]),"##-##-###.##")
这两种方法可能都无法按您想要的方式工作......仅仅是因为没有错误检查所提供的输入是否有效。即,如果您有 10 个(或更多)有效数字而不是 9 个......它会默默地截断前导数字......此外,使用 cInt 不会接受“字符”,例如“0000000ABCDEFGHI”或其他......
您可能希望在 vb-script 中创建一个函数来正确进行格式化...然后在报告中使用它。但这是一个更复杂的主题...所以我不会在这里讨论它。