Как отформатировать текстовое поле в конструкторе отчетов 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]),"##-##-###.##")

Ни один из методов не может работать так, как вам хотелось бы... просто потому, что не выполняется проверка ошибок, если предоставленные входные данные являются допустимыми. Например, если у вас 10 (или более) значащих цифр вместо 9... он молча усечет первые цифры... Кроме того, использование cInt не будет принимать «символы», такие как «0000000ABCDEFGHI» или что-то в этом роде...

Вы можете на самом деле создать функцию в vb-script, чтобы правильно выполнить форматирование... и затем использовать ее в отчете. Но это гораздо более сложная тема... поэтому я не буду ее здесь касаться.

Связанный контент