Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dataset

Converter numero para extenso

Recommended Posts

Olá... eu gravo no banco a quantidade de parcelas que a pessoa vai pagar. Por mes.Ex:

2612

e no contrato, tem que sair:

vinte seis (26) vezes

Então eu pego o valor do banco em numero e tenho que converter ele para extenso... Na internet eu só achei pra converter pra extenso em reais. vinte e seis reais.... Mas eu nao preciso desse exemplo... eu preciso que saia somente o numero por extenso.Alguém tem um modelo ?Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, eu axo q você vai terq se matar e criar uma função doida pra fazer isso, eu nunca vi algo parecido.Me mostra o exemplo na q você axou na net q converte para reais, para ver se agente consegue fazer uma adptação (gambi), para atender as suas necessidades, falowwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você já tem o modelo "em mãos" é só analizar e "cortar" os excessos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu pego o valor do banco em numero e tenho que converter ele para extenso... Na internet eu só achei pra converter pra extenso em reais. vinte e seis reais....

Mas eu nao preciso desse exemplo... eu preciso que saia somente o numero por extenso.

Acho que seria interessante você colocar essa função no

Laboratorio de Scripts

 

http://forum.imasters.com.br/index.php?showforum=97

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí está a função que converte para extenso em reais

 

para chamar faça um <!--#Include File = "extenso.asp"-->

 

response.write extenso(26)

vai resultar: vinte e seis reais

 

response.write extenso(2333.25)

vai retornar: dois mil e tezentos e trinta e tres reais e vinte e cinco centavos

 

Pois então... o que será que faço ? será que eu mudo esse monstro aí ? Não sei se vou conseguir fazer isso funcionar depois de mecher no código.

 

Se alguém puder me ajudar.. fico agradecido.

 

<%Dim x_Centavos, x_I, x_J, x_K, x_Numero, x_QtdCentenas, x_TotCentenas, x_TxtExtenso( 900 ), x_TxtMoeda( 6 ), x_ValCentena( 6 ), x_Valor, x_ValSoma' Matrizes de textosx_TxtMoeda( 1 ) = "rea"x_TxtMoeda( 2 ) = "mil"x_TxtMoeda( 3 ) = "milh"x_TxtMoeda( 4 ) = "bilh"x_TxtMoeda( 5 ) = "trilh"x_TxtExtenso( 1 ) = "um"x_TxtExtenso( 2 ) = "dois"x_TxtExtenso( 3 ) = "tres"x_TxtExtenso( 4 ) = "quatro"x_TxtExtenso( 5 ) = "cinco"x_TxtExtenso( 6 ) = "seis"x_TxtExtenso( 7 ) = "sete"x_TxtExtenso( 8 ) = "oito"x_TxtExtenso( 9 ) = "nove"x_TxtExtenso( 10 ) = "dez"x_TxtExtenso( 11 ) = "onze"x_TxtExtenso( 12 ) = "doze"x_TxtExtenso( 13 ) = "treze"x_TxtExtenso( 14 ) = "quatorze"x_TxtExtenso( 15 ) = "quinze"x_TxtExtenso( 16 ) = "dezesseis"x_TxtExtenso( 17 ) = "dezessete"x_TxtExtenso( 18 ) = "dezoito"x_TxtExtenso( 19 ) = "dezenove"x_TxtExtenso( 20 ) = "vinte"x_TxtExtenso( 30 ) = "trinta"x_TxtExtenso( 40 ) = "quarenta"x_TxtExtenso( 50 ) = "cinquenta"x_TxtExtenso( 60 ) = "sessenta"x_TxtExtenso( 70 ) = "setenta"x_TxtExtenso( 80 ) = "oitenta"x_TxtExtenso( 90 ) = "noventa"x_TxtExtenso( 100 ) = "cento"x_TxtExtenso( 200 ) = "duzentos"x_TxtExtenso( 300 ) = "trezentos"x_TxtExtenso( 400 ) = "quatrocentos"x_TxtExtenso( 500 ) = "quinhentos"x_TxtExtenso( 600 ) = "seiscentos"x_TxtExtenso( 700 ) = "setentos"x_TxtExtenso( 800 ) = "oitocentos"x_TxtExtenso( 900 ) = "novecentos"' Função Principal de Conversão de Valores em ExtensoFunction Extenso( x_Numero )	x_Numero = FormatNumber( x_Numero , 2 )	x_Centavos = right( x_Numero , 2 )	x_ValCentena( 0 ) = 0	x_QtdCentenas = Int( ( Len( x_Numero ) + 1 ) / 4 )	For x_I = 1 To x_QtdCentenas		x_ValCentena( x_I ) = ""	Next	'	x_I = 1	x_J = 1	For x_K = Len( x_Numero ) - 3 To 1 Step -1		x_ValCentena( x_J ) = mid( x_Numero , x_K , 1 ) & x_ValCentena( x_J )		If x_I / 3 = Int( x_I / 3 ) Then			x_J = x_J + 1			x_K = x_K - 1		End If		x_I = x_I + 1	Next	x_TotCentenas = 0	Extenso = ""	For x_I = x_QtdCentenas To 1 Step -1		x_TotCentenas = x_TotCentenas + Int( x_ValCentena( x_I ) )		If Int( x_ValCentena( x_I ) ) <> 0 Or ( Int( x_ValCentena( x_I ) ) = 0 And x_I = 1 )Then			If Int( x_ValCentena( x_I ) = 0 And Int( x_ValCentena( x_I + 1 ) ) = 0 And x_I = 1 )Then				Extenso = Extenso & ExtCentena( x_ValCentena( x_I ) , x_TotCentenas ) & " de " & x_TxtMoeda( x_I )			Else				Extenso = Extenso & ExtCentena( x_ValCentena( x_I ) , x_TotCentenas ) & " " & x_TxtMoeda( x_I )			End If			If Int( x_ValCentena( x_I ) ) <> 1 Or ( x_I = 1 And x_TotCentenas <> 1 ) Then				Select Case x_I					Case 1						Extenso = Extenso & "is"					Case 3, 4, 5						Extenso = Extenso & "ões"				End Select			Else				Select Case x_I					Case 1						Extenso = Extenso & "l"					Case 3, 4, 5						Extenso = Extenso & "ão"				End Select			End If		End If		If Int( x_ValCentena( x_I - 1 ) ) = 0 Then			Extenso = Extenso		Else			If ( Int( x_ValCentena( x_I + 1 ) ) = 0 And ( x_I + 1 ) <= x_QtdCentenas ) Or ( x_I = 2 ) Then				Extenso = Extenso & " e "			Else				Extenso = Extenso & ", "			End If		End If	Next	If x_Centavos > 0 Then		If Int( x_Centavos ) = 1 Then				Extenso = Extenso & " e " & ExtDezena( x_Centavos ) & " centavo"		Else				Extenso = Extenso &  " e " & ExtDezena( x_Centavos ) & " centavos"		End If	End If	Extenso = UCase( Left( Extenso , 1 ) )&right( Extenso , Len( Extenso ) - 1 )End FunctionFunction ExtDezena( x_Valor )' Retorna o Valor por Extenso referente à DEZENA recebidaExtDezena = ""If Int( x_Valor ) > 0 Then	If Int( x_Valor ) < 20 Then		ExtDezena = x_TxtExtenso( Int( x_Valor ) )	Else		ExtDezena = x_TxtExtenso( Int( Int( x_Valor ) / 10 ) * 10 )		If ( Int( x_Valor ) / 10 ) - Int( Int( x_Valor ) / 10 ) <> 0 Then			ExtDezena = ExtDezena & " e " & x_TxtExtenso( Int( right( x_Valor , 1 ) ) )		End If	End IfEnd IfEnd FunctionFunction ExtCentena( x_Valor, x_ValSoma )ExtCentena = ""If Int( x_Valor ) > 0 Then	If Int( x_Valor ) = 100 Then		ExtCentena = "cem"	Else		If Int( x_Valor ) < 20 Then			If Int( x_Valor ) = 1 Then				If x_ValSoma - Int( x_Valor ) = 0 Then					ExtCentena = "hum"				Else					ExtCentena = x_TxtExtenso( Int( x_Valor ) )				End If			Else					ExtCentena = x_TxtExtenso( Int( x_Valor ) )			End If		Else			If Int( x_Valor ) < 100 Then				ExtCentena = ExtDezena( right( x_Valor , 2 ) )			Else				ExtCentena = x_TxtExtenso( Int( Int( x_Valor ) / 100 )*100 )				If ( Int( x_Valor ) / 100 ) - Int( Int( x_Valor ) / 100 ) <> 0 Then					ExtCentena = ExtCentena & " e " & ExtDezena( right( x_Valor , 2 ) )				End If			End If		End If	End IfEnd IfEnd Function%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eeeeeita p....q monstrengo, até parece código asp gerado por dreamWeaver, mais axo q é isso ae mesmo é uma função bem complexa, vou dar uma fuçada ake, se conseguir alguma coisa retorno...faloooww

Compartilhar este post


Link para o post
Compartilhar em outros sites

já encontrei uma função que fazia issomas perdi quando sai do meu antigo trampoou pelo menos acho que perdi pois pode estar em algum dos cds que gravei

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é cara... locura de codigo... Existe tantos modelos por aí, de tudo quanto é tipo.. mas por incrível que pareça, ainda nao vi nenhum que faz a conversão para numeros sem associar com valores em reais...Ó ceus... vou fuçar nesse bixo... vamos ver o que acontece...

Compartilhar este post


Link para o post
Compartilhar em outros sites

pior que o que eu tinha era assim...voce ja tentou adaptar este ai???

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve ae manow, axo q fikou jóia...

 

<%	Dim x_Centavos, x_I, x_J, x_K, x_Numero, x_QtdCentenas, x_TotCentenas, x_TxtExtenso( 900 ), x_TxtMoeda( 6 ), x_ValCentena( 6 ), x_Valor, x_ValSoma	' Matrizes de textos	x_TxtMoeda( 1 ) = ""	x_TxtMoeda( 2 ) = "mil"	x_TxtMoeda( 3 ) = "milh"	x_TxtMoeda( 4 ) = "bilh"	x_TxtMoeda( 5 ) = "trilh"	x_TxtExtenso( 1 ) = "um"	x_TxtExtenso( 2 ) = "dois"	x_TxtExtenso( 3 ) = "tres"	x_TxtExtenso( 4 ) = "quatro"	x_TxtExtenso( 5 ) = "cinco"	x_TxtExtenso( 6 ) = "seis"	x_TxtExtenso( 7 ) = "sete"	x_TxtExtenso( 8 ) = "oito"	x_TxtExtenso( 9 ) = "nove"	x_TxtExtenso( 10 ) = "dez"	x_TxtExtenso( 11 ) = "onze"	x_TxtExtenso( 12 ) = "doze"	x_TxtExtenso( 13 ) = "treze"	x_TxtExtenso( 14 ) = "quatorze"	x_TxtExtenso( 15 ) = "quinze"	x_TxtExtenso( 16 ) = "dezesseis"	x_TxtExtenso( 17 ) = "dezessete"	x_TxtExtenso( 18 ) = "dezoito"	x_TxtExtenso( 19 ) = "dezenove"	x_TxtExtenso( 20 ) = "vinte"	x_TxtExtenso( 30 ) = "trinta"	x_TxtExtenso( 40 ) = "quarenta"	x_TxtExtenso( 50 ) = "cinquenta"	x_TxtExtenso( 60 ) = "sessenta"	x_TxtExtenso( 70 ) = "setenta"	x_TxtExtenso( 80 ) = "oitenta"	x_TxtExtenso( 90 ) = "noventa"	x_TxtExtenso( 100 ) = "cento"	x_TxtExtenso( 200 ) = "duzentos"	x_TxtExtenso( 300 ) = "trezentos"	x_TxtExtenso( 400 ) = "quatrocentos"	x_TxtExtenso( 500 ) = "quinhentos"	x_TxtExtenso( 600 ) = "seiscentos"	x_TxtExtenso( 700 ) = "setentos"	x_TxtExtenso( 800 ) = "oitocentos"	x_TxtExtenso( 900 ) = "novecentos"	' Função Principal de Conversão de Valores em Extenso	Function Extenso( x_Numero )		x_Numero = FormatNumber( x_Numero , 2 )		x_Centavos = right( x_Numero , 2 )		x_ValCentena( 0 ) = 0		x_QtdCentenas = Int( ( Len( x_Numero ) + 1 ) / 4 )		For x_I = 1 To x_QtdCentenas			x_ValCentena( x_I ) = ""		Next		'		x_I = 1		x_J = 1		For x_K = Len( x_Numero ) - 3 To 1 Step -1			x_ValCentena( x_J ) = mid( x_Numero , x_K , 1 ) & x_ValCentena( x_J )			If x_I / 3 = Int( x_I / 3 ) Then				x_J = x_J + 1				x_K = x_K - 1			End If			x_I = x_I + 1		Next		x_TotCentenas = 0		Extenso = ""		For x_I = x_QtdCentenas To 1 Step -1			x_TotCentenas = x_TotCentenas + Int( x_ValCentena( x_I ) )			If Int( x_ValCentena( x_I ) ) <> 0 Or ( Int( x_ValCentena( x_I ) ) = 0 And x_I = 1 )Then				If Int( x_ValCentena( x_I ) = 0 And Int( x_ValCentena( x_I + 1 ) ) = 0 And x_I = 1 )Then					Extenso = Extenso & ExtCentena( x_ValCentena( x_I ) , x_TotCentenas ) & " de " & x_TxtMoeda( x_I )				Else					Extenso = Extenso & ExtCentena( x_ValCentena( x_I ) , x_TotCentenas ) & " " & x_TxtMoeda( x_I )				End If				If Int( x_ValCentena( x_I ) ) <> 1 Or ( x_I = 1 And x_TotCentenas <> 1 ) Then					Select Case x_I						Case 1							Extenso = Extenso & ""						Case 3, 4, 5							Extenso = Extenso & "ões"					End Select				Else					Select Case x_I						Case 1							Extenso = Extenso & "l"						Case 3, 4, 5							Extenso = Extenso & "ão"					End Select				End If			End If			If Int( x_ValCentena( x_I - 1 ) ) = 0 Then				Extenso = Extenso			Else				If ( Int( x_ValCentena( x_I + 1 ) ) = 0 And ( x_I + 1 ) <= x_QtdCentenas ) Or ( x_I = 2 ) Then					Extenso = Extenso & " "				Else					Extenso = Extenso & " "				End If			End If		Next		If x_Centavos > 0 Then			If Int( x_Centavos ) = 1 Then					Extenso = Extenso & " e " & ExtDezena( x_Centavos ) & " "			Else					Extenso = Extenso &  " e " & ExtDezena( x_Centavos ) & " "			End If		End If		Extenso = UCase( Left( Extenso , 1 ) )&right( Extenso , Len( Extenso ) - 1 )	End Function	Function ExtDezena( x_Valor )	' Retorna o Valor por Extenso referente à DEZENA recebida	ExtDezena = ""	If Int( x_Valor ) > 0 Then		If Int( x_Valor ) < 20 Then			ExtDezena = x_TxtExtenso( Int( x_Valor ) )		Else			ExtDezena = x_TxtExtenso( Int( Int( x_Valor ) / 10 ) * 10 )			If ( Int( x_Valor ) / 10 ) - Int( Int( x_Valor ) / 10 ) <> 0 Then				ExtDezena = ExtDezena & " e " & x_TxtExtenso( Int( right( x_Valor , 1 ) ) )			End If		End If	End If	End Function	Function ExtCentena( x_Valor, x_ValSoma )	ExtCentena = ""	If Int( x_Valor ) > 0 Then		If Int( x_Valor ) = 100 Then			ExtCentena = "cem"		Else			If Int( x_Valor ) < 20 Then				If Int( x_Valor ) = 1 Then					If x_ValSoma - Int( x_Valor ) = 0 Then						ExtCentena = "um "					Else						ExtCentena = x_TxtExtenso( Int( x_Valor ) )					End If				Else						ExtCentena = x_TxtExtenso( Int( x_Valor ) )				End If			Else				If Int( x_Valor ) < 100 Then					ExtCentena = ExtDezena( right( x_Valor , 2 ) )				Else					ExtCentena = x_TxtExtenso( Int( Int( x_Valor ) / 100 )*100 )					If ( Int( x_Valor ) / 100 ) - Int( Int( x_Valor ) / 100 ) <> 0 Then						ExtCentena = ExtCentena & " e " & ExtDezena( right( x_Valor , 2 ) )					End If				End If			End If		End If	End If	End Function	'response.write extenso(1900132)%>

oppps, esse ta melhor hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu brother...

 

Ficou joia... resolveu o meu problema aqui... te devo uma...

 

Falow... obrigadao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tinha uma dessas que adaptei de um VBzão, mas bem mais complexa:

<%Option Explicit
Function IIF(Expression,TruePart,FalsePart)
If Eval(Expression) Then
	IIF = TruePart
Else
	IIF = FalsePart
End If
End Function
Function Extenso_Valor(pdbl_Valor)
'Rotina Criada para ler um número e transformá-lo em extenso
'Limite máximo de 9 Bilhões (9.999.999.999,99)
'Não aceita números negativos
'Criada em : 17/12/2004 - Carlos Alberto Cotta Seilhe

Dim strValorExtenso 'Variável que irá armazenar o valor por extenso do número informado
Dim strNumero 'Irá armazenar o número para exibir por extenso
Dim strCentena, strDezena, strUnidade 
Dim dblCentavos, dblValorInteiro
Dim intContador
Dim bln_Bilhao, bln_Milhao, bln_Mil, bln_Real, bln_Unidade

'Verificar se foi informado um dado indevido
If Not IsNumeric(pdbl_Valor) Or IsEmpty(pdbl_Valor) Then 
	strValorExtenso = "Função só suporta números"
ElseIf pdbl_Valor <= 0 Then 'Verificar se há valor negativo ou nada foi informado
	strValorExtenso = ""
'Verificar se foi informado um valor não suportado pela função
ElseIf pdbl_Valor > 9999999999.99 Then 
	strValorExtenso = "Valor não Suportado pela Função"
Else
	'Gerar Extenso Centavos
	dblCentavos = pdbl_Valor - Int(pdbl_Valor)
	'Gerar Extenso parte Inteira
	dblValorInteiro = Int(pdbl_Valor)

	If dblValorInteiro > 0 Then
		For intContador = Len(Trim(CStr(dblValorInteiro))) To 1 Step -1
			strNumero = Mid(Trim(CStr(dblValorInteiro)), (Len(Trim(CStr(dblValorInteiro))) - intContador) + 1, 1)
			Select Case intContador
				Case 10	'Bilhão
					strValorExtenso = fcn_Numero_Unidade(strNumero) + IIf(strNumero > "1", " Bilhões ", " Bilhão ")
					bln_Bilhao = True
				Case 9, 6, 3   'Centena
					If strNumero > "0" Then
						strCentena = Mid(Trim(CStr(dblValorInteiro)), (Len(Trim(CStr(dblValorInteiro))) - intContador) + 1, 3)
						If strCentena > "100" And strCentena < "200" Then
							strValorExtenso = strValorExtenso + " Cento e "
						Else
							strValorExtenso = strValorExtenso + " " + fcn_Numero_Centena(strNumero)
						End If
						If intContador = 9 Then
							bln_Milhao = True
						ElseIf intContador = 6 Then
							bln_Mil = True
						End If
					End If
				Case 8, 5, 2   'Dezena de Milhão
					If strNumero > "0" Then
						strDezena = Mid(Trim(CStr(dblValorInteiro)), (Len(Trim(CStr(dblValorInteiro))) - intContador) + 1, 2)
						If strDezena > 10 And strDezena < 20 Then
							strValorExtenso = strValorExtenso + IIf(Trim(Right(strValorExtenso, 5)) = "entos", " e ", " ") + fcn_Numero_Dezena0(Right(strDezena, 1))
							bln_Unidade = True
						Else
							strValorExtenso = strValorExtenso + IIf(Trim(Right(strValorExtenso, 5)) = "entos", " e ", " ") + fcn_Numero_Dezena1(strNumero)
							bln_Unidade = False
						End If
						If intContador = 8 Then
							bln_Milhao = True
						ElseIf intContador = 5 Then
							bln_Mil = True
						End If
					End If
				Case 7, 4, 1   'Unidade de Milhão
					If strNumero > "0" And Not bln_Unidade Then
						If Trim(Right(strValorExtenso, 5)) = "entos" Or Trim(Right(strValorExtenso, 3)) = "nte" Or Trim(Right(strValorExtenso, 3)) = "nta" Then
							strValorExtenso = strValorExtenso + " e "
						Else
							strValorExtenso = strValorExtenso + " "
						End If
						strValorExtenso = strValorExtenso + fcn_Numero_Unidade(strNumero)
					End If
					If intContador = 7 Then
						If bln_Milhao Or strNumero > "0" Then
							strValorExtenso = strValorExtenso + IIf(strNumero = "1" And Not bln_Unidade, " Milhão ", " Milhões ")
							bln_Milhao = True
						End If
					End If
					If intContador = 4 Then
						If bln_Mil Or strNumero > "0" Then
							strValorExtenso = strValorExtenso + " Mil "
							bln_Mil = True
						End If
					End If
					If intContador = 1 Then
						If (bln_Bilhao And Not bln_Milhao And Not bln_Mil And Right(Trim(CStr(dblValorInteiro)), 3) = 0) Or _
						   (Not bln_Bilhao And bln_Milhao And Not bln_Mil And Right(Trim(CStr(dblValorInteiro)), 3) = 0) Then
						   strValorExtenso = strValorExtenso + " de "
						End If
						strValorExtenso = strValorExtenso + IIf(dblValorInteiro > 1, " Reais ", " Real ")
					End If
					bln_Unidade = False
			End Select
		Next
	End If

	If dblCentavos > 0 And dblCentavos < 0.1 Then
		strNumero = Right(Trim(CStr(Round(dblCentavos, 2))), 1)
		strValorExtenso = strValorExtenso + IIf(dblValorInteiro > 0, " e ", " ") + fcn_Numero_Unidade(strNumero) + IIf(strNumero > "1", " Centavos ", " Centavo ")
	ElseIf dblCentavos > 0.1 And dblCentavos < 0.2 Then
		strNumero = Right(Trim(CStr(Round(dblCentavos, 2) - 0.1)), 1)
		strValorExtenso = strValorExtenso + IIf(dblValorInteiro > 0, " e ", " ") + fcn_Numero_Dezena0(strNumero) + " Centavos "
	Else
		If dblCentavos > 0 Then
			strNumero = Mid(Trim(CStr(dblCentavos)), 2, 1)
			strValorExtenso = strValorExtenso + IIf(dblValorInteiro > 0, " e ", " ") + fcn_Numero_Dezena1(strNumero)
			If Len(Trim(CStr(dblCentavos))) > 2 Then
				strNumero = Right(Trim(CStr(Round(dblCentavos, 2))), 1)
				strValorExtenso = strValorExtenso + " e " + fcn_Numero_Unidade(strNumero)
			End If
			strValorExtenso = strValorExtenso + " Centavos "
		End If
	End If

 End If
 Extenso_Valor = Trim(strValorExtenso)
End Function

Function fcn_Numero_Unidade(pstrUnidade)
'Vetor que irá conter o número por extenso
Dim array_Unidade(9)

array_Unidade(0) = "Um"
array_Unidade(1) = "Dois"
array_Unidade(2) = "Três"
array_Unidade(3) = "Quatro"
array_Unidade(4) = "Cinco"
array_Unidade(5) = "Seis"
array_Unidade(6) = "Sete"
array_Unidade(7) = "Oito"
array_Unidade(8) = "Nove"

fcn_Numero_Unidade = array_Unidade(CInt(pstrUnidade) - 1)
End Function

Function fcn_Numero_Dezena0(pstrDezena0)
'Vetor que irá conter o número por extenso
Dim array_Dezena0(9)

array_Dezena0(0) = "Onze"
array_Dezena0(1) = "Doze"
array_Dezena0(2) = "Treze"
array_Dezena0(3) = "Quatorze"
array_Dezena0(4) = "Quinze"
array_Dezena0(5) = "Dezesseis"
array_Dezena0(6) = "Dezessete"
array_Dezena0(7) = "Dezoito"
array_Dezena0(8) = "Dezenove"

fcn_Numero_Dezena0 = array_Dezena0(Cint(pstrDezena0) - 1)
End Function

Function fcn_Numero_Dezena1(pstrDezena1)
'Vetor que irá conter o número por extenso
Dim array_Dezena1(9)

array_Dezena1(0) = "Dez"
array_Dezena1(1) = "Vinte"
array_Dezena1(2) = "Trinta"
array_Dezena1(3) = "Quarenta"
array_Dezena1(4) = "Cinquenta"
array_Dezena1(5) = "Sessenta"
array_Dezena1(6) = "Setenta"
array_Dezena1(7) = "Oitenta"
array_Dezena1(8) = "Noventa"

fcn_Numero_Dezena1 = array_Dezena1(CInt(pstrDezena1) - 1)
End Function

Function fcn_Numero_Centena(pstrCentena)
'Vetor que irá conter o número por extenso
Dim array_Centena(9)

array_Centena(0) = "Cem"
array_Centena(1) = "Duzentos"
array_Centena(2) = "Trezentos"
array_Centena(3) = "Quatrocentos"
array_Centena(4) = "Quinhentos"
array_Centena(5) = "Seiscentos"
array_Centena(6) = "Setecentos"
array_Centena(7) = "Oitocentos"
array_Centena(8) = "Novecentos"

fcn_Numero_Centena = array_Centena(CInt(pstrCentena) - 1)
End Function
%><FORM action="" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name="Numero"><br>
<INPUT type="submit" value="Enviar" id=submit1 name=submit1>
</FORM><br>
<%If Request.Form("Numero") <> "" Then
Response.Write "O Valor por extenso de: "& Request.Form("Numero") &" é: "& Extenso_Valor(Request.Form("Numero"))
End If
%>

Tive até que "reinventar" a função IIF para ter que mexer o mínimo possível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

velhinho, perae q eu descobri um erro, vopostar de novo, pega ela...

 

<%	dim x_centavos, x_i, x_j, x_k, x_numero, x_qtdcentenas, x_totcentenas, x_txtextenso( 900 ), x_txtmoeda( 6 ), x_valcentena( 6 ), x_valor, x_valsoma	' matrizes de textos	x_txtmoeda( 1 ) = ""	x_txtmoeda( 2 ) = "mil"	x_txtmoeda( 3 ) = "milh"	x_txtmoeda( 4 ) = "bilh"	x_txtmoeda( 5 ) = "trilh"	x_txtextenso( 1 ) = "um"	x_txtextenso( 2 ) = "dois"	x_txtextenso( 3 ) = "tres"	x_txtextenso( 4 ) = "quatro"	x_txtextenso( 5 ) = "cinco"	x_txtextenso( 6 ) = "seis"	x_txtextenso( 7 ) = "sete"	x_txtextenso( 8 ) = "oito"	x_txtextenso( 9 ) = "nove"	x_txtextenso( 10 ) = "dez"	x_txtextenso( 11 ) = "onze"	x_txtextenso( 12 ) = "doze"	x_txtextenso( 13 ) = "treze"	x_txtextenso( 14 ) = "quatorze"	x_txtextenso( 15 ) = "quinze"	x_txtextenso( 16 ) = "dezesseis"	x_txtextenso( 17 ) = "dezessete"	x_txtextenso( 18 ) = "dezoito"	x_txtextenso( 19 ) = "dezenove"	x_txtextenso( 20 ) = "vinte"	x_txtextenso( 30 ) = "trinta"	x_txtextenso( 40 ) = "quarenta"	x_txtextenso( 50 ) = "cinquenta"	x_txtextenso( 60 ) = "sessenta"	x_txtextenso( 70 ) = "setenta"	x_txtextenso( 80 ) = "oitenta"	x_txtextenso( 90 ) = "noventa"	x_txtextenso( 100 ) = "cento"	x_txtextenso( 200 ) = "duzentos"	x_txtextenso( 300 ) = "trezentos"	x_txtextenso( 400 ) = "quatrocentos"	x_txtextenso( 500 ) = "quinhentos"	x_txtextenso( 600 ) = "seiscentos"	x_txtextenso( 700 ) = "setentos"	x_txtextenso( 800 ) = "oitocentos"	x_txtextenso( 900 ) = "novecentos"	' função principal de conversão de valores em extenso	function extenso( x_numero )		x_numero = formatnumber( x_numero , 2 )		x_centavos = right( x_numero , 2 )		x_valcentena( 0 ) = 0		x_qtdcentenas = int( ( len( x_numero ) + 1 ) / 4 )		for x_i = 1 to x_qtdcentenas			x_valcentena( x_i ) = ""		next		'		x_i = 1		x_j = 1		for x_k = len( x_numero ) - 3 to 1 step -1			x_valcentena( x_j ) = mid( x_numero , x_k , 1 ) & x_valcentena( x_j )			if x_i / 3 = int( x_i / 3 ) then				x_j = x_j + 1				x_k = x_k - 1			end if			x_i = x_i + 1		next		x_totcentenas = 0		extenso = ""		for x_i = x_qtdcentenas to 1 step -1			x_totcentenas = x_totcentenas + int( x_valcentena( x_i ) )			if int( x_valcentena( x_i ) ) <> 0 or ( int( x_valcentena( x_i ) ) = 0 and x_i = 1 )then				if int( x_valcentena( x_i ) = 0 and int( x_valcentena( x_i + 1 ) ) = 0 and x_i = 1 )then					extenso = extenso & extcentena( x_valcentena( x_i ) , x_totcentenas ) & " de " & x_txtmoeda( x_i )				else					extenso = extenso & extcentena( x_valcentena( x_i ) , x_totcentenas ) & " " & x_txtmoeda( x_i )				end if				if int( x_valcentena( x_i ) ) <> 1 or ( x_i = 1 and x_totcentenas <> 1 ) then					select case x_i						case 1							extenso = extenso & ""						case 3, 4, 5							extenso = extenso & "ões"					end select				else					select case x_i						case 1							extenso = extenso & ""						case 3, 4, 5							extenso = extenso & "ão"					end select				end if			end if			if int( x_valcentena( x_i - 1 ) ) = 0 then				extenso = extenso			else				if ( int( x_valcentena( x_i + 1 ) ) = 0 and ( x_i + 1 ) <= x_qtdcentenas ) or ( x_i = 2 ) then					extenso = extenso & " "				else					extenso = extenso & " "				end if			end if		next		if x_centavos > 0 then			if int( x_centavos ) = 1 then					extenso = extenso & " e " & extdezena( x_centavos ) & " "			else					extenso = extenso &  " e " & extdezena( x_centavos ) & " "			end if		end if		extenso = ucase( left( extenso , 1 ) )&right( extenso , len( extenso ) - 1 )	end function	function extdezena( x_valor )	' retorna o valor por extenso referente à dezena recebida	extdezena = ""	if int( x_valor ) > 0 then		if int( x_valor ) < 20 then			extdezena = x_txtextenso( int( x_valor ) )		else			extdezena = x_txtextenso( int( int( x_valor ) / 10 ) * 10 )			if ( int( x_valor ) / 10 ) - int( int( x_valor ) / 10 ) <> 0 then				extdezena = extdezena & " e " & x_txtextenso( int( right( x_valor , 1 ) ) )			end if		end if	end if	end function	function extcentena( x_valor, x_valsoma )	extcentena = ""	if int( x_valor ) > 0 then		if int( x_valor ) = 100 then			extcentena = "cem"		else			if int( x_valor ) < 20 then				if int( x_valor ) = 1 then					if x_valsoma - int( x_valor ) = 0 then						extcentena = "um "					else						extcentena = x_txtextenso( int( x_valor ) )					end if				else						extcentena = x_txtextenso( int( x_valor ) )				end if			else				if int( x_valor ) < 100 then					extcentena = extdezena( right( x_valor , 2 ) )				else					extcentena = x_txtextenso( int( int( x_valor ) / 100 )*100 )					if ( int( x_valor ) / 100 ) - int( int( x_valor ) / 100 ) <> 0 then						extcentena = extcentena & " e " & extdezena( right( x_valor , 2 ) )					end if				end if			end if		end if	end if	end function%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.