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

Dica Para Gravar Valor Datas E Moedas


jucacabala

Pergunta

estou postando porque me ajudou muito pode ser muito util para outras pessoas.

se preferir o link http://www.superasp.com.br/paginas_exibir_...p?dep=0,0&id=85

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 FormataData(Data)

  Dim v

  v = Right("0" & Mid(Data,4, 2),2) & "/" & Right("0" & Left(Data, 2),2) & "/" & DatePart("yyyy", Data)

  v = Cdate(v)

  FormataData = 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

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...