Guest marceloteixeira_2003 Postado Outubro 16, 2004 Denunciar Share Postado Outubro 16, 2004 olá,gente preciso saber como transformar um campo no relatório de R$1,00 para extenso Um Real Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Outubro 31, 2004 Denunciar Share Postado Outubro 31, 2004 qual linguagem você ta usando ? Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Novembro 1, 2004 Denunciar Share Postado Novembro 1, 2004 qual linguagem você ta usando ? estou usando o acess 2000 ou xp Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 3, 2004 Denunciar Share Postado Novembro 3, 2004 Olá, crie uma Function na parte de Módulos com esse código. Function Extenso(nValor As String) As String 'Faz a validação do argumento If IsNull(nValor) Or nValor > 999999999.99 Then Exit Function 'Declara as variáveis da função Dim intContador As Integer Dim intTamanho As Integer Dim strValor As String Dim strParte As String Dim strFinal As String Dim strGrupo(4) As String Dim strTexto(4) As String 'Define matrizes com extensos parciais Dim strUnid(19) As String strUnid(1) = "um ": strUnid(2) = "dois ": strUnid(3) = "três ": strUnid(4) = "quatro ": strUnid(5) = "cinco ": strUnid(6) = "seis ": strUnid(7) = "sete ": strUnid(8) = "oito ": strUnid(9) = "nove ": strUnid(10) = "dez ": strUnid(11) = "onze ": strUnid(12) = "doze ": strUnid(13) = "treze ": strUnid(14) = "quatorze ": strUnid(15) = "quinze ": strUnid(16) = "dezesseis ": strUnid(17) = "dezessete ": strUnid(18) = "dezoito ": strUnid(19) = "dezenove " Dim strDezena(9) As String strDezena(1) = "dez ": strDezena(2) = "vinte ": strDezena(3) = "trinta ": strDezena(4) = "quarenta ": strDezena(5) = "cinqüenta ": strDezena(6) = "sessenta ": strDezena(7) = "setenta ": strDezena(8) = "oitenta ": strDezena(9) = "noventa " Dim strCentena(9) As String strCentena(1) = "cento ": strCentena(2) = "duzentos ": strCentena(3) = "trezentos ": strCentena(4) = "quatrocentos ": strCentena(5) = "quinhentos ": strCentena(6) = "seiscentos ": strCentena(7) = "setecentos ": strCentena(8) = "oitocentos ": strCentena(9) = "novecentos " 'Divide o valor em vários grupos strValor = Format$(nValor, "0000000000.00") strGrupo(1) = Mid$(strValor, 2, 3) 'Milhão strGrupo(2) = Mid$(strValor, 5, 3) 'Milhar strGrupo(3) = Mid$(strValor, 8, 3) 'Centena strGrupo(4) = "0" + Mid$(strValor, 12, 2) 'Centavo 'Processa cada grupo For intContador = 1 To 4 strParte = strGrupo(intContador) intTamanho = Switch(Val(strParte) < 10, 1, Val(strParte) < 100, 2, Val(strParte) < 1000, 3) If intTamanho = 3 Then If Right$(strParte, 2) <> "00" Then strTexto(intContador) = strTexto(intContador) + strCentena(Left(strParte, 1)) + "e " intTamanho = 2 Else strTexto(intContador) = strTexto(intContador) + IIf(Left$(strParte, 1) = "1", "cem ", strCentena(Left(strParte, 1))) End If End If If intTamanho = 2 Then If Val(Right(strParte, 2)) < 20 Then strTexto(intContador) = strTexto(intContador) + strUnid(Right(strParte, 2)) Else strTexto(intContador) = strTexto(intContador) + strDezena(Mid(strParte, 2, 1)) If Right$(strParte, 1) <> "0" Then strTexto(intContador) = strTexto(intContador) + "e " intTamanho = 1 End If End If End If If intTamanho = 1 Then strTexto(intContador) = strTexto(intContador) + strUnid(Right(strParte, 1)) End If Next intContador 'Gera o formato final do texto If Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 0 And Val(strGrupo(4)) <> 0 Then strFinal = strTexto(4) + IIf(Val(strGrupo(4)) = 1, "centavo", "centavos") Else strFinal = "" If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) = 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões de ", "milhão de "), "") End If If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) = 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões e ", "milhão e "), "") End If If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) = 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões e ", "milhão e "), "") End If If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) = 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "") End If If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) <> 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "") End If If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) <> 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "") End If If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) <> 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões de ", "milhão de "), "") End If If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) <> 0 Then strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "") End If If Val(strGrupo(3)) = 0 Then strFinal = strFinal + IIf(Val(strGrupo(2)) <> 0, strTexto(2) + "mil ", "") Else If Val(strGrupo(4)) = 0 Then strFinal = strFinal + IIf(Val(strGrupo(2)) <> 0, strTexto(2) + "mil e ", "") Else strFinal = strFinal + IIf(Val(strGrupo(2)) <> 0, strTexto(2) + "mil, ", "") End If End If If Val(strGrupo(4)) = 0 Then strFinal = strFinal + strTexto(3) + IIf(Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 1, "real ", "reais ") Else strFinal = strFinal + strTexto(3) + IIf(Val(strGrupo(3)) <> 1, IIf(Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 1, "real ", "reais "), "real ") End If strFinal = strFinal + IIf(Val(strGrupo(4)) <> 0, "e " + strTexto(4) + IIf(Val(strGrupo(4)) = 1, "centavo", "centavos"), "") End If If Left(strFinal, 1) = "u" Then Extenso = "H" & Mid$(strFinal, 1) Else Extenso = UCase(Mid$(strFinal, 1, 1)) & Mid$(strFinal, 2) End If Dim aux As String * 250 aux = Trim(Extenso) ' e alterar esta linha para trim(Extenso) While Len(Trim(aux)) <> 250 aux = Trim(aux) & "-x" Wend Extenso = aux End Functione numa caixa de texto coloque: =Extenso([nome do campo])Abs. Progr'amador. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest marceloteixeira_2003
olá,
gente preciso saber como transformar um campo no relatório de R$1,00 para extenso Um Real
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados