Shopping Hospedagem Fórum Contato
     
   O portal do desenvolvedor ASP Florianópolis-SC, Sábado - 18 de Novembro de 2017  
Busca

Menu do site
Efetuar Login
Usuário:

Senha:

 Esqueceu a senha?
Login automático

 Cadastre-se
Dê adeus aos problemas com data e moeda
Avaliações: 25   -   Minha nota: Média Geral: 5  

Tenho certeza que muitas pessoas, inclusive eu, já tiveram vários problemas com relação à data e moeda em seus sistemas, enquanto desenvolviam ou quando migravam o sistema para outro servidor.

Tentaram de várias formas corrigir o problema, usando conversores, mudando o LCID para alterar o formato para Americano, ou Português, ou até mesmo para outra configuração.

No final, alguns sempre conseguiam solucionar o problema. Mas, caso o mesmo sistema fosse migrado para outro servidor de configuração diferente, novamente o problema surgia.

Vou mostrar um método a ser utilizado, que jamais trará problemas deste tipo.

Este tipo de tratamento evita que, independente da configuração do seu servidor, os dados sejam interpretados de forma diferente.

Quando formos usar dados do tipo moeda ou data, devemos sempre tratar estes dados no formato americano. Para tanto, devemos então usar sempre o LCID americano:

Session.LCID = 1033

Desta forma, os dados serão gravados no banco de dados no formato americano (9999.99 para moeda, mm/dd/aa para data), quando capturados estes dados, saberemos que estarão no formato americano, o mesmo formato que estamos usando em nosso sistema.

O correto é mudar o formato apenas na exibição destes valores, ou seja, converter para o formato desejado somente depois capturados os dados.

 

Exibindo os dados no formato desejado

Para exibir dados do tipo moeda no formato Brasileiro, utilize a função abaixo:

Function FormataMoeda(valor)
  sp = Mid(FormatNumber(1000, 0, -1, 0, -1),2,1)
  sv = Mid(FormatNumber(0.1, 1, -1, 0, -1),2,1)
  If isNumeric(valor) Then
    v = FormatNumber (valor, 2, -1, 0, -1)
  Else
    v = FormatNumber (0, 2, -1, 0, -1)
  End If
  v = Replace(v, sp, "p")
  v = Replace(v, sv, "v")
  v = Replace(v, "p", ".")
  v = Replace(v, "v", ",")
  FormataMoeda = v
End Function

Basta escrever o valor da seguinte forma:

Response.Write FormataMoeda(objRS("valor"))

Para exibir os dados do tipo data no formato brasileiro, utilize a função abaixo:

Function FormataData(Data)
  If Data <> "" Then
    FormataData = Right("0" & DatePart("d", Data),2) & "/" & Right("0" & DatePart("m", Data),2) & "/" & DatePart("yyyy", Data)
  End If
End Function

Basta escrever a data da seguinte forma:

Response.Write FormataData(objRS("data"))

 

Gravando os dados corretamente

Para gravar dados do tipo moeda no banco de dados, devemos levar em consideração se o valor está ou não no formato americano.
Caso o valor á ser gravado, veio de um formulário, e esteja no formato brasileiro, utilize a função abaixo:

Function FormataMoedaAmericano(valor)
  Dim v
  v = valor
  v = Trim(v)
  v = Replace(v,".","")
  v = Replace(v,",",".")
  v = ccur(v)
  FormataMoedaAmericano = v
End Function

Basta gravar o valor da seguinte forma:

objRS("valor") = FormataMoedaAmericano(Request.Form("valor"))

Caso o valor a ser gravado já esteja no formato americano, não é necessário o uso da função, como mostra o exemplo abaixo:

objRS("valor") = Request.Form("valor")

Para gravar dados do tipo moeda no banco de dados, devemos levar em consideração se o valor está ou não no formato americano.
Caso o valor á ser gravado, veio de um formulário, e esteja no formato brasileiro, utilize a função abaixo:

Function FormataDataAmericano
(Data)
  Dim v
  v = Right("0" & Mid(Data,4, 2),2) & "/" & Right("0" & Left(Data, 2),2) & "/" & DatePart("yyyy", Data)
  v = Cdate(v)
  FormataDataAmericano = v
End Function

Basta gravar a data da seguinte forma:

objRS("data") = FormataData(Request.Form("data"))

Caso a data a ser gravada já esteja no formato americano, não é necessário o uso da função, como mostra o exemplo abaixo:

objRS("data") = Request.Form("data")

Espero ter ajudado á todos.

Um grande abraço!

Fabiano Dias
fabiano@superasp.com.br

www.superasp.com.br
O portal do desenvolvedor ASP




SuperASP do Brasil Ltda

03.066.522/0001-84
Av. Rio Branco 433 - Centro - Florianopolis - SC
Contato

© 2001/2008 - Superasp do Brasil Ltda. Todos os direitos reservados