none
Formatação de uma String adicionando uma mascara.. . RRS feed

  • Pergunta

  • Pessoal alguem sabe me dizer como é que faço pra formatar um campo do tipo string?
    preciso adicionar uma mascara num campo que tras uma string com CPF...
    no caso seria o seguinte, teria que transformar essa string:
    01234567891
    em
    012.345.678-47
    o mesmo tenho o mesmo problema para CNPJ, mas solucionando um resolve o outro...

    se agluem souber como fazer mandar ai pra mim da uma olha...


    VALEU

    quarta-feira, 19 de dezembro de 2007 11:41

Respostas

  • Welington,

     

    Neste caso, a melhor solução e criar uma função para formatar o CPF/CNPJ

     

    Como implementar:

    No menu Report - Report Properties, selecione a aba Code e adicione o código em anexo:

     

    Code Snippet

    Public Function FormatarCPFCNPJ(Valor As String) As String

        If InStr(1, Valor, ".") <> 0 Or _
           Trim(Valor) = "" Then
           
            'o campo informado já está formatado ou é vazio
            FormatarCPFCNPJ = Valor
       
        ElseIf Len(Valor) = 11 Then
            'CPF
            FormatarCPFCNPJ = Mid(Valor, 1, 3) & "." & _
                              Mid(Valor, 4, 3) & "." & _
                              Mid(Valor, 7, 3) & "-" & _
                              Mid(Valor, 10, 2)
               
        Else
            'CNPJ
            FormatarCPFCNPJ = Mid(Valor, 1, 2) & "." & _
                              Mid(Valor, 3, 3) & "." & _
                              Mid(Valor, 6, 3) & "/" & _
                              Mid(Valor, 9, 4) & "-" & _
                              Mid(Valor, 13, 2)
           
        End If

    End Function

     

     

    Como usar:

     

    Por exemplo: Se vc está utilizando um controle Table no item Body do relatório, clique com o botão da direita no mouse em uma coluna e selecione a opção Expression (será aberta a janela para definir a expressão do campo).

     

    Code Snippet

    =code.FormatarCPFCNPJ(cstr(Fields!CPFCNPJ.Value))

     

     

    []'s

     

    Laércio.

    quinta-feira, 9 de outubro de 2008 15:20

Todas as Respostas

  • Edimar Ramos,

     

    Você deve criar uma expression para este campo e utilizar a função para string chamada Format.

     

    quarta-feira, 19 de dezembro de 2007 11:43
  • Sabe me dizer como ficaria essa expression ?
    Ja fiz alguns testes utilizando o Format mas nao obtive sucesso..
    Ja consegui para numeros e datas, porem para uma string nao consegui....


    quarta-feira, 19 de dezembro de 2007 12:15
  • Edimar Ramos,

     

    Selecione este textbox, clique com o botão da direita, abra as propriedades, e depois a guia format.

     

    Neste guia, você poderá fazer toda a formatação do objeto.

    quarta-feira, 19 de dezembro de 2007 16:14
  • Junior, meu problema está justamente na expressao...

    por exemplo:
    para formatar um numero eu utilizei:
    =Format(Fields!NumPedido.Value, "##-####").ToString()
    Para exibir: 01-2007

    e para formatar uma data:
    =String.Format("{0: dd/MM/yyyy}", Fields!DataPedido.Value)
    para exibir: 19/12/2007

    ou entao para formatar valores tipo moeda:
    =Format(Fields!Valor.Value, "F")

    Porem não consegui utilizar o FORMAT para adicionar uma mascara no campo CPF (que é uma string)
    Eu consegui aqui uma solução so num sei se é a melhor, mais pelo menos ta funcionando, onde eu pego as partes dessa string e vou concatenando com os demais caracters.... Veja como ficou:

    = "CPF: " + MID(Fields!Cpf.Value, 1, 3) + "." + MID(Fields!Cpf.Value, 4, 3) + "." + MID(Fields!Cpf.Value, 7, 3)+ "-" + MID(Fields!Cpf.Value, 10, 2)

    dessa forma tenho consigo exibir 000.000.000-00, so acho que deve ter uma forma mais pratica de fazer isso...


    obs: estou gerando o relatorio pelo report do Visual Studio 2005...




    Valeu pela atenção cara....

    quarta-feira, 19 de dezembro de 2007 16:51
  • Edimar,

     

    A formatação acredito que seja igual a do String.Format do C#.


    Dá uma olhada nesse artigo:

    http://blog.brasildotnet.net/2007/02/23/

     

    A parte que interessa está aqui:

     

    Code Block

    if (format == "CNPJ")
    return string.Format(@"{0:00\.000\.000\/0000\-00}", Convert.ToDouble(_texto));
    else if (format == "CPF")
    return string.Format(@"{0:000\.000\.000\-00}", Convert.ToInt32(_texto));

     

     

    Veja que ele converte o valor do campo antes de apresentar na tela. Eu fiz um teste no RS colocando os valores:

    "Format" do meu textbox "000\.000\.000\-00" e no campo Value "=Int(Fields!CPF.Value)"

     

    Ou colocando tudo no campo Value =Format(Int(Fields!CPF.Value), "000\.000\.000\-00")

     

    Ae ele aparentemente mostra corretamente o CPF. Com CNPJ deve funcionar da mesma forma.

     

    Abraço

     

    Boreki

    quarta-feira, 19 de dezembro de 2007 17:22
  • Edimar,

     

    Então não seria da mesma forma que você fez para formatar o número do pedido.

     

    A principio em minhas aplicações eu também faço da forma que você esta fazendo.

    quarta-feira, 19 de dezembro de 2007 17:28
  • Ai, a forma indicada pelo Boreki funcionou blz....


    =Format(Int(Fields!CPF.Value), "000\.000\.000\-00")



    Valeu Boreki...

    Valeu Junior...


    Brigadão pelas dicas....

    quarta-feira, 19 de dezembro de 2007 19:27
  • Pessoal estou tendo um novo problema para essa questão de formatações aqui que ta me deixando de cabelos brancos.. srsrrs
    A minha situação é a seguinte.. Eu tenho na minha tabela um campo CNPJ (string) que preciso exibir no relatorio com a formatação de cnpj..
    So que nem todas empresas tem CNPJ... com isso quando estou formatando esta aparecendo #Error ....
    Para me ajudar tem um campo TipoNascionalidade que me retorna B para Brasileiro e E para Estrangeiro....

    Ja tentei milhares de formas mais todas deram erro.... veja algumas forma:


    =iif(Fields!CNPJ.Value = " ", " ", Format(Int(Fields!CNPJ.Value), "##\.###\.###\/####\-##"))
    =iif(Fields!CNPJ.Value = " ", " ", FormatNumber((Fields!CNPJ.Value), "00\.000\.000\/0000\-00"))
    =Iif(Fields!TipoNacionalidade.Value = "B", Format(Int(Fields!CNPJ.Value), "00\.000\.000\/0000\-00"), Nothing)
    =Iif((Fields!TipoNacionalidade.Value = "B"), (Format(CDbl(Fields!CNPJ.Value), "##\.###\.###\/####\-##")), Fields!CNPJ.Value)



    Obs: Quando faço o iif sem aplicar a formatação funciona blz... porem quando manda aplicar a formatação da erro...

    Alguem pode me dar uma Luz em relação a isso ?


    quinta-feira, 24 de julho de 2008 15:11
  • Eu acredito que deve haver uma forma mais inteligente para fazer isso...
    Mas enquanto nao descubro qual estou fazendo a formatação na "unha" mesmo... estilo comentei ai acima para Cpf ..

    Dai esta assim:

    =Iif((Fields!TipoNacionalidade.Value = "B"), (MID(Fields!CNPJ.Value, 1, 2) + "." + MID(Fields!CNPJ.Value, 3, 3) + "." + MID(Fields!CNPJ.Value, 6, 3)+ "/" + MID(Fields!CNPJ.Value, 9, 4)+ "-" + MID(Fields!CNPJ.Value, 12, 2)), Nothing))


    Se alguem souber uma forma mais eficiente, post ai...

    Valeu...
    quinta-feira, 24 de julho de 2008 17:50
  • E ae galera blz?

    Eu tentei todos estas formatações mas não obtive sucesso.

    Será que é algum problema na configuração do programa???

    Atenciosamente.

    Welington Pereira.

     

    sexta-feira, 15 de agosto de 2008 18:46
  • Galera eu tentei esta Expressão Aqui mas deu um erro:

    =IIF(Int(Len(Fields!CGC.Value -11 )), (Mid(Fields!CGC.Value ,0,3)+ "." +Mid(Fields!CGC.Value ,3,3)+ "." + Mid(Fields!CGC.Value ,6,3) + "-" +Mid(Fields!CGC.Value , 9,2)),  (Mid(Fields!CGC.Value ,0,2) + "."+Mid(Fields!CGC.Value, 2,3) +"." +Mid(Fields!CGC, 5,3)+ "/" +Mid(Fields!CGC.Value ,8,4)+ "-" +Mid(Fields!CGC.Value, 12, 2)))

     

    na hora de compilar aparece a seguinte frase


    Error 4 [rsCompilerErrorInExpression] The Value expression for the textbox ‘CGC’ contains an error: [BC30311] Valor do tipo 'Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.Field' não pode ser convertido em 'String'. c:\users\wpereira.miu\documents\visual studio 2005\projects\sgt\sgt\CT_ENTI.rdl 0 0 


    A intenção é:

    Se a pessoa for Fisica então aparecerá o Numero de CPF 000.000.000-00
    Se for Juridica então aparecerá 00.000.000/000-00



    Atenciosamente

    Welington Pereira.

    quinta-feira, 9 de outubro de 2008 13:01
  • Welington,

     

    Neste caso, a melhor solução e criar uma função para formatar o CPF/CNPJ

     

    Como implementar:

    No menu Report - Report Properties, selecione a aba Code e adicione o código em anexo:

     

    Code Snippet

    Public Function FormatarCPFCNPJ(Valor As String) As String

        If InStr(1, Valor, ".") <> 0 Or _
           Trim(Valor) = "" Then
           
            'o campo informado já está formatado ou é vazio
            FormatarCPFCNPJ = Valor
       
        ElseIf Len(Valor) = 11 Then
            'CPF
            FormatarCPFCNPJ = Mid(Valor, 1, 3) & "." & _
                              Mid(Valor, 4, 3) & "." & _
                              Mid(Valor, 7, 3) & "-" & _
                              Mid(Valor, 10, 2)
               
        Else
            'CNPJ
            FormatarCPFCNPJ = Mid(Valor, 1, 2) & "." & _
                              Mid(Valor, 3, 3) & "." & _
                              Mid(Valor, 6, 3) & "/" & _
                              Mid(Valor, 9, 4) & "-" & _
                              Mid(Valor, 13, 2)
           
        End If

    End Function

     

     

    Como usar:

     

    Por exemplo: Se vc está utilizando um controle Table no item Body do relatório, clique com o botão da direita no mouse em uma coluna e selecione a opção Expression (será aberta a janela para definir a expressão do campo).

     

    Code Snippet

    =code.FormatarCPFCNPJ(cstr(Fields!CPFCNPJ.Value))

     

     

    []'s

     

    Laércio.

    quinta-feira, 9 de outubro de 2008 15:20
  • Valeu Laércio," funcionou perfeito".


    Abrassssssssssssssss

     

    quinta-feira, 9 de outubro de 2008 16:39
  •  

    Laercio,

    Funcionou legal a Funçãio, mas o CPF aparece em formato de CNPJ.



    atenciosamente.

    Welington Pereira.

    quinta-feira, 9 de outubro de 2008 18:18
  • Laercio, Como a Função não deu certo, tentei esta expressão

    =IIF((Fields!Natureza.Value = 1),(mid(Fields!CGC.Value,0,2)+"."+mid(Fields!CGC.Value,2,3)+"."+mid(Fields!CGC.Value, 5,3)+"/"+mid(Fields!CGC.Value, 8,4)+"-"+mid(Fields!CGC.Value, 12,2)), (mid(Fields!CGC.Value, 0,3)+"."+mid(Fields!CGC.Value, 3,3)+"."+mid(Fields!CGC.Value,6,3)+"-"+mid(Fields!CGC.Value, 9,2)))


    O Fields Natureza, se refera a Pessoa Juridica ou fisica, então, se o Fields Natureza for igual a 1(Pessoa Juridica), ele aparecerá o Formato CNPJ, senão é pessoa fisica então aparecerá formato, CFP.

    Só que aparece #ERROR no campo e a frase

    Input string was not in a correct format.

     

    segunda-feira, 13 de outubro de 2008 13:11
  • Se quiser uma função ajeitada que verifica se é CPF ou CNPJ e aplica a formatação.

     

    Formata Cpf/Cnpj e adiciona zeros na esquerda

    public static string FormatarCpfCnpj(string strCpfCnpj)

    {

        if (strCpfCnpj.Length <= 11)

        {

            MaskedTextProvider mtpCpf = new MaskedTextProvider(@"000\.000\.000-00");

            mtpCpf.Set(ZerosEsquerda(strCpfCnpj, 11));

            return mtpCpf.ToString();

        }

        else

        {

            MaskedTextProvider mtpCnpj = new MaskedTextProvider(@"00\.000\.000/0000-00");

            mtpCnpj.Set(ZerosEsquerda(strCpfCnpj, 11));

            return mtpCnpj.ToString();

        }

    }

     

    public static string ZerosEsquerda(string strString, int intTamanho)

    {

        string strResult = "";

        for (int intCont = 1; intCont <= (intTamanho - strString.Length); intCont++)

        {

            strResult += "0";

        }

        return strResult + strString;

    }

     

     

    []´s

     

    Drausio Henrique Chiarotti

     

    sexta-feira, 12 de dezembro de 2008 12:50
  • Laercio Bom dia tudo bem?

    Estou com um problema pra uma expressao de um textbox no reportviewer.

    Estou utilizando assim =iif(Fields!PlanoFinanceiro.Value.Descricao = "null", "", Fields!PlanoFinanceiro.Value.Descricao)

    O que acontece nesse caso é que se a descrição esta vazia no textbox do relatório exibe como #error.

    Como posso tratar isso para não apresentar esse #error.

    Grata,
    Érica Ongaro
    segunda-feira, 1 de fevereiro de 2010 13:15
  • Mas nesse caso se p CPF começar com números 0 (zero) ele vai ignorar esses zeros. :/
    sexta-feira, 15 de novembro de 2019 16:22
  • Keven,

    Nesta situação teremos que fazer outro tratamento, identificando a existência do zero no primeiro digito.

    Neste link poderemos encontrar mais detalhes sobre as regras e validações de CPF:

    http://www.profcardy.com/cardicas/cpf.php


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 17 de novembro de 2019 16:14