Como posso formatar um campo de texto no Microsoft Access Report Designer?

Como posso formatar um campo de texto no Microsoft Access Report Designer?

Eu tenho um campo (uma string) que se parece com isto: '0000000840509001' quando impresso no meu relatório. Quero que fique assim: '84-05-090.01'. Existe alguma maneira de fazer isso no nível de design do relatório?

Basicamente, quero retirar os zeros iniciais e colocar a string restante em um formato ##-##-###.##.

Responder1

infelizmente não existe um método único para remover os zeros iniciais... mas aqui está um pequeno truque que aprendi...

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

quebrado...

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

O método para a loucura é substituir todos os zeros por um caractere de espaço e depois "cortá-los" apenas no lado esquerdo. (não queremos que os zeros finais desapareçam), em seguida, substitua os caracteres de espaço por zeros... e, finalmente, formate-o da maneira que desejar.

Alternativamente... em vez de tentar cortar os dígitos... você também pode convertê-lo em um número inteiro real usando cint() e formatá-lo assim:

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

Qualquer um dos métodos pode não funcionar da maneira desejada... simplesmente porque não há erro ao verificar se a entrada fornecida é válida. ou seja, se você tiver 10 (ou mais) dígitos significativos em vez de 9... isso truncaria silenciosamente os dígitos iniciais... também usar cInt não aceitará "caracteres" como "0000000ABCDEFGHI" ou qualquer outra coisa...

Você pode querer criar uma função em vb-script para fazer sua formatação corretamente... e então usá-la em seu relatório. Mas este é um assunto muito mais complexo... então não vou tocar nele aqui.

informação relacionada