Ir para conteúdo

POWERED BY:

Arquivado

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

delgisa

[Resolvido] gravar data dd/mm/aaaa no access com asp

Recommended Posts

Saudações!!!

 

Tenho um formulário com código asp pra gravar datas em banco de dados access

 

Acontece o seguinte:

Se a data atual for: 20/01/2010

No banco grava assim: 01/20/2010

 

Mas se a data atual for: 11/01/2011

No banco grava assim: 11/01/2011

 

Notei que o tal do access grava no formato mmddaaaa. No 1º exemplo (20/01/2010), como 20 é maior que 12, o access simplesmente inverte, achando que o 20 que estou tentando gravar é mês.

 

Pessoal, pode até parecer uma dúvida muito primária, mas estou lutando com isso faz tempo.

Se alguém tiver uma solução pra mim. Detalhe: não posso mudar de banco de dados. Pelo menos por enquanto. Quando der eu migro para o MySql, mas agora tenho que permanecer com o Access.

 

Abraços

Jardel Paes

Compartilhar este post


Link para o post
Compartilhar em outros sites

O access sempre grava no formato MM/DD/AAAA

 

o que acontece é que se voce inclui um data no formato errado com o dia maior que 12 ele espertamente corrige para voce

 

Mas voce voce erradamente incluir uma data com o dia menor o igual a 12 ele não tem como adivinhar que incluiu no formato errado e inclui como deveria

 

Para evitar erros SEMPRE formate a data para o padrao que o access espera de voce MM/DD/AAAA

Compartilhar este post


Link para o post
Compartilhar em outros sites

O access sempre grava no formato MM/DD/AAAA

 

o que acontece é que se voce inclui um data no formato errado com o dia maior que 12 ele espertamente corrige para voce

 

Mas voce voce erradamente incluir uma data com o dia menor o igual a 12 ele não tem como adivinhar que incluiu no formato errado e inclui como deveria

 

Para evitar erros SEMPRE formate a data para o padrao que o access espera de voce MM/DD/AAAA

 

 

Ok Mário,

 

Você teria um exemplo aí de como eu faria para formatar a data neste formato mmddaaaa?

Eu teria que formatar no momento que eu insiro os dados no access?

 

Veja minha SQL de Insert:

 

Conn.execute "INSERT INTO processo (codtipoprocesso, codtitular, datainicioprocesso, numeroprocesso) VALUES   ("&codtipoprocesso&", "&codtitular&", '"&datainicioprocesso&"', '"&numeroprocesso&"')"

 

Se puder me dar mais uma ajudinha...

grato

 

Jardel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Agustoclaro

 

Creio não poder mudar o campo pra texto, pois preciso dele como data para usa-lo em minha cláusula where, pois preciso trazer aniversariantes do mês ou processo dentro do mês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uni os topicos para juntar as respostas que foram dadas.

 

Bom, vejo algumas possibilidades para o seu caso:

 

Você pode tratar a data antes de inserir no banco de dados, usando as funções day(), month(), year() e depois inserir no banco de dados que seria um campo texto e não data, pois geraria o mesmo problema que está tendo agora.

 

Pode mudar o campo de data para texto e com isso nenhuma verificação seria feita, e não ocorre esse erro.

 

Ou comparar a data e se for inferior a 12, formata-la para o padrão do banco de dados.

 

Note que trabalhar com datas as vezes pode ser um processo chato, pois cada banco de dados tem suas particularidades e precisa adaptar o sistema a forma como os dados são armazenados.

 

Uma vez adaptados, basta criar rotinas para tratar a data antes de inserir no bd, e ao recupera-la e exibir ao usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

use essa função

 

Formato: dd-mm-aaaa

<%
Function ConverterDataBanco(ConDataBanco)
ConDataBanco = Right("0"&Day(ConDataBanco),2) &"-"& Right("0"&Month(ConDataBanco),2) &"-"& Year(ConDataBanco)
ConverterDataBanco = ConDataBanco
End Function

Response.Write(ConverterDataBanco(Date()))
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

muda o campo pro tipo texto

 

Se puder sugerir algo não faça isso

 

Procure sempre utilizar o tipo de dados correto

 

evitará muitos problemas se sua aplicação crescer além de economizar espaço no db

 

 

Ok Mário,

 

Você teria um exemplo aí de como eu faria para formatar a data neste formato mmddaaaa?

Eu teria que formatar no momento que eu insiro os dados no access?

 

Veja minha SQL de Insert:

 

Conn.execute "INSERT INTO processo (codtipoprocesso, codtitular, datainicioprocesso, numeroprocesso) VALUES   ("&codtipoprocesso&", "&codtitular&", '"&datainicioprocesso&"', '"&numeroprocesso&"')"

 

Se puder me dar mais uma ajudinha...

grato

 

Jardel

 

pode formatar no próprio asp

 

basicamente utilizará as funções de manipulação de texto para montar a data no formato adequado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok pessoal, muito obrigado pelas dicas. Agora consegui.

Só para não deixar meus irmãos que por ventura tiverem a mesma dúvida que eu sem solução, deixo abaixo o que eu fiz em meus código para dar certo.

 

Na linha abaixo eu recupero os dados vindo de um formulário:

<%
datainicioprocesso = request.form(server.HTMLEncode("datainicioprocesso"))
%>

 

Agora eu vou atribuir à variável "data" (que fiz dela uma matriz ou vetor, sei lá, rsrsrs) o valor da variável acima que recebeu os dados do formulário (datainicioprocesso), mas com um pequeno "gigantesco" detalhe:

Usei o comando Split, que faz uma varredura na variável procurando por / e quando acha, armazena dentro da posição 0 (zero), 1 (um) e 2 (dois) da matriz.

Imaginemos que a data que está no campo seja (22/01/2011 21:24:03), então nossa matriz ficará assim:

data(0)=22

data(1)=01

data(2)= 2011 21:24:03

isso tudo é feito na linha de código abaixo:

<%
data = split(datainicioprocesso,"/")
%>

 

agora nesta linha, eu ordeno a data da forma que eu quiser, neste caso mm/dd/aaaa hh:mm:ss e atribuo este valor à varíavel "data_convertida"

<%
data_convertida=data(1)&"/"&data(0)&"/"&data(2)
%>

 

Pronto, agora na minha select, eu igualo essa variável ao campo do banco para comparação.

 

 

Bom pessoal, sou bem leigo em ASP, se alguém tiver uma solução melhor, poeste aí... é sempre bão enriquecermos noss fórum!!!

 

Abraços a todos e valeu!

jardel Paes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns pela solução

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.