У меня есть поле (строка), которое выглядит так: '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, чтобы правильно выполнить форматирование... и затем использовать ее в отчете. Но это гораздо более сложная тема... поэтому я не буду ее здесь касаться.