Usuário com melhor resposta
Formatação de uma String adicionando uma mascara.. .

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
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 SnippetPublic 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 IfEnd 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.
Todas as Respostas
-
-
-
-
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.... -
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 Blockif (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
-
-
-
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 ? -
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... -
-
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. -
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 SnippetPublic 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 IfEnd 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.
-
-
-
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. -
Se quiser uma função ajeitada que verifica se é CPF ou CNPJ e aplica a formatação.
Formata Cpf/Cnpj e adiciona zeros na esquerdapublic 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
- Sugerido como Resposta Junior Galvão - MVPMVP domingo, 17 de novembro de 2019 16:09
-
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 -
-
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]