Ir para conteúdo
Fórum Script Brasil
  • 0

Valor por Extenso e Data Completa!


Parenti

Pergunta

Olá pessoal do ScriptBrasil, estou com uns problemas no Access...

Estou tentando colocar Valor por Extenso, por exemplo eu digito R$ 1.000,00 e converte para Mil Reais

Outro probleminha: Escolhi o Formato Data Completa, e apareceu terça-feira, 30 de novembro de 2008, preciso tirar o "terça-feira,"

desde já agradeço!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Oi

Para fazer o que você quer com relação a data, a única forma

que conheço é mudar as configurações regionais

DATA COMPLETA: Exibe de acordo com a sua configuração regional do Painel de controle do windows -» Terça, 25 de agosto de 2007 (exemplo).

Se mudar lá, deixar apenas para que apareça o dia/mês/ano verá que no

teu banco de dados ficará do mesmo modo.

Porém deve existir um outro meio; que nossos caros colegas devem saber.

Não devo ter ajudado muito, porém vai que a informação te ajude.

Link para o comentário
Compartilhar em outros sites

  • 0

Com relação ao valor por extenso tente esta dica, fiz e deu certo.

E não manjo de linguagem VBA.

Function Extenso95(nValor)

If IsNull(nValor) Or nValor <= 0 Or nValor > 9999999.99 Then

Exit Function

End If

Dim nContador, nTamanho As Integer

Dim cValor, cParte, cFinal As String

ReDim aGrupo(4), aTexto(4) As String

ReDim aUnid(19) As String

aUnid(1) = "UM ": aUnid(2) = "DOIS ": aUnid(3) = "TRES "

aUnid(4) = "QUATRO ": aUnid(5) = "CINCO ": aUnid(6) = "SEIS "

aUnid(7) = "SETE ": aUnid(8) = "OITO ": aUnid(9) = "NOVE "

aUnid(10) = "DEZ ": aUnid(11) = "ONZE ": aUnid(12) = "DOZE "

aUnid(13) = "TREZE ": aUnid(14) = "QUATORZE ": aUnid(15) = "QUINZE "

aUnid(16) = "DEZESSEIS ": aUnid(17) = "DEZESSETE ": aUnid(18) = "DEZOITO "

aUnid(19) = "DEZENOVE "

ReDim aDezena(9) As String

aDezena(1) = "DEZ ": aDezena(2) = "VINTE ": aDezena(3) = "TRINTA "

aDezena(4) = "QUARENTA ": aDezena(5) = "CINQUENTA "

aDezena(6) = "SESSENTA ": aDezena(7) = "SETENTA ": aDezena(8) = "OITENTA "

aDezena(9) = "NOVENTA "

ReDim aCentena(9) As String

aCentena(1) = "CENTO ": aCentena(2) = "DUZENTOS "

aCentena(3) = "TREZENTOS ": aCentena(4) = "QUATROCENTOS "

aCentena(5) = "QUINHENTOS ": aCentena(6) = "SEISCENTOS "

aCentena(7) = "SETECENTOS ": aCentena(8) = "OITOCENTOS "

aCentena(9) = "NOVECENTOS "

cValor = Format$(nValor, "0000000000.00")

aGrupo(1) = Mid$(cValor, 2, 3)

aGrupo(2) = Mid$(cValor, 5, 3)

aGrupo(3) = Mid$(cValor, 8, 3)

aGrupo(4) = "0" + Mid$(cValor, 12, 2)

For nContador = 1 To 4

cParte = aGrupo(nContador)

nTamanho = Switch(Val(cParte) < 10, 1, Val(cParte) < 100, 2, Val(cParte) < 1000, 3)

If nTamanho = 3 Then

If Right$(cParte, 2) <> "00" Then

aTexto(nContador) = aTexto(nContador) + aCentena(Left(cParte, 1)) + "E "

nTamanho = 2

Else

aTexto(nContador) = aTexto(nContador) + IIf(Left$(cParte, 1) = "1", "CEM ", aCentena(Left(cParte, 1)))

End If

End If

If nTamanho = 2 Then

If Val(Right(cParte, 2)) < 20 Then

aTexto(nContador) = aTexto(nContador) + aUnid(Right(cParte, 2))

Else

aTexto(nContador) = aTexto(nContador) + aDezena(Mid(cParte, 2, 1))

If Right$(cParte, 1) <> "0" Then

aTexto(nContador) = aTexto(nContador) + "E "

nTamanho = 1

End If

End If

End If

If nTamanho = 1 Then

aTexto(nContador) = aTexto(nContador) + aUnid(Right(cParte, 1))

End If

Next

If Val(aGrupo(1) + aGrupo(2) + aGrupo(3)) = 0 And Val(aGrupo(4)) <> 0 Then

cFinal = aTexto(4) + IIf(Val(aGrupo(4)) = 1, "CENTAVO", "CENTAVOS")

Else

cFinal = ""

cFinal = cFinal + IIf(Val(aGrupo(1)) <> 0, aTexto(1) + IIf(Val(aGrupo(1)) > 1, IIf(aGrupo(2) Mod 100 = 0, "MILHÕES ", "MILHÕES, "), IIf(aGrupo(2) Mod 100 = 0, "MILHÃO E ", IIf(aGrupo(2) = 0 And aGrupo(3) = 0, "MILHÃO ", "MILHÃO, "))), "")

If Val(aGrupo(2) + aGrupo(3)) = 0 Then

cFinal = cFinal + "DE "

Else

If Val(aGrupo(3)) = 0 Then

cFinal = cFinal + IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL ", "")

Else

cFinal = cFinal + IIf(Val(aGrupo(3)) Mod 100 = 0 And aGrupo(4) = 0, IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL E ", ""), IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL, ", ""))

End If

End If

cFinal = cFinal + aTexto(3) + IIf(Val(aGrupo(1) + aGrupo(2) + aGrupo(3)) = 1, "REAL ", "REAIS ")

cFinal = cFinal + IIf(Val(aGrupo(4)) <> 0, "E " + aTexto(4) + IIf(Val(aGrupo(4)) = 1, "CENTAVO", "CENTAVOS"), "")

End If

Extenso95 = cFinal

End Function

Para testa-la, experimente inserir num formulário 2 caixas de texto, sendo uma para receber valores monetários (que poderemos chama-la de "txtValor") e a outra para observar o resultado da conversão (denominada "txtExtenso"). No evento "AfterUpdate" da primeira, cole o código abaixo:

If IsNull(txtValor) Or txtValor = "" Then

txtExtenso = Null

Exit Sub

Else

txtExtenso = Extenso95(txtValor.Text)

End If

Desculpe...faltou informar:

Esta formula você tem que criar um módulo para ela.

Esta informação você não cole neste módulo:

Para testa-la, experimente inserir num formulário 2 caixas de texto, sendo uma para receber valores monetários (que poderemos chama-la de "txtValor") e a outra para observar o resultado da conversão (denominada "txtExtenso"). No evento "AfterUpdate" da primeira, cole o código abaixo:

If IsNull(txtValor) Or txtValor = "" Then

txtExtenso = Null

Exit Sub

Else

txtExtenso = Extenso95(txtValor.Text)

End If

Na caixa de texto após atualizar cole somente somente esta parte:

If IsNull(txtValor) Or txtValor = "" Then

txtExtenso = Null

Exit Sub

Else

txtExtenso = Extenso95(txtValor.Text)

End If

É a única coisa que consegui fazer sem dar erro.

A problema é que gera duas caixas.

Mas enfim...quem sabe te ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Marcia Torquato, obrigado pelas ajudas...

Porém em relação ao Valor por Extenso estou precisando de algo assim:

Nas propriedades do campo data (tabela):

Formato: Data Completa

Máscara de entrada: 99/99/0000;0;_

Quando eu Digito: 10/11/2008

troca sozinho (e aparece no relatório): terça, 10 de novembro de 2008

Gostária de configurar para ficar assim:

Formato: um mil reais

Máscara de entrada: R$ 1.000,00

Estava pensando em algo como o construtor de eventos

se puder me ajudar eu agradeço

Link para o comentário
Compartilhar em outros sites

  • 0

Oi

Deixa ver se eu entendi.

Pelo que você escreveu, tu quer data abreviada 28/11/2008,

se na tua tabela esta configurado para data completa vai aparecer por

extenso (sexta-feira, 28 de novembro de 2008), você pode alterar a

tabela para data abreviada e caso não queira mecher na tabela vá no

teu relatório e na caixa de texto Data em propriedades/dados altere a

mascará de entrada para Data Abreviada...

Só estou na dúvida se é isso que você quer.

E me desculpe na primeira, eu havia entendido que você não queria

que aparecesse apenas o dia da semana.

Com relação ao valor em R$ confesso que não entendi exatamente o

que você quer!

Editado por Marcia Torquato
Link para o comentário
Compartilhar em outros sites

  • 0

Então Marcia Torquato

Eu já consegui fazer isso:

Quando eu Digito: 10/11/2008

troca sozinho (e aparece no relatório): terça, 10 de novembro de 2008

Como eu fiz?

fui em estrutura da tabela e no campo data eu configurei:

Formato: Data Completa

Máscara de entrada: 99/99/0000;0;_

Beleza, terminado (com a Data)

O problema é que eu Gostária de configurar da mesma forma, porém em outro campo (o campo valor):

Formato: um mil reais //tentar aqui implementar aquele código que você me passou, pois o normal aqui é definir como moeda

Máscara de entrada: R$ 1.000,00 //E na Máscara de Entrada eu usar o estilo Moeda

obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Marcia Torquato, quero agradecer suas ajudas e dizer que a solução (em forma de exemplo) tem nesse link:

Quem quizer escrever por Extenso ou Preenchimento de Cheques pode usar esse exemplo:

http://www.esnips.com/doc/c40a3440-8525-49...78e/DemoExtenso

Preenchimento de Cheques

Valeu...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...