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

Datas?!? Só Funciona Do 13 Ao 31!


Notax

Pergunta

Pessoal, não querendo abusar, mas já abusando... to com mais esse mistério... quebrando a cuca desde hoje demanhã e não consigo sequer entender...

o que ta acontecendo é que meu insert ta inserindo as datas no banco de forma correta dos dias 13 ao 31 de qualquer. mes...

tipo 13/01/07 = 13/jan/07 bem certinho no sistema brasileiro...

já as datas dos dias 01 ao 12 inverte e fica no sistema americano... ou seja se eu digito 01/02/07 (01 fev 07) ela aparece no banco 02/01/07!!!

por que será???

abaixo segue o script (parte da data) do insert que uso para inserir os dados no banco:

<%Response.Expires = 0
Dim objConn, objRs, strQuery, strConnection, historico, tipo, valor, repercussao, quantidade, chcBoleto, vezes, qtdParcela, i, dtInicial, x, dtParcela, dtVencimento, dt, data, datai
Dim anoi, mesi, diai, ComandoSQL
anoi=year(Request.Form("dtInicial"))
mesi=month(Request.Form("dtInicial"))
diai=day(Request.Form("dtInicial"))
Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA #" & DateSerial(anoi,mesi,diai) & "# ORDER BY DATA ASC"
'Set bd = Conexao.Execute(ComandoSQL)
Session.LCID=1046 
historico = Request.Form("txtDescricao")
tipo = Request.Form("cmbTipo")
'valor = Request.Form("txtValor")
valor = replace(Request.Form("txtValor"),",",".")
repercussao = Request.Form("qdrRepercussao")
Quantidade = Request.Form("txtQuantidade")
chcBoleto = Request.form("chcBoleto")
datai = request.form("txtData")

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Notax !

kara, qual DB você ta utilizando ? Access ?

o campo que usa para inserir as datas esta como Data/Hora ?

Para melhorar sua aplicação, use a função Cdate

anoi=year(Cdate(Request.Form("dtInicial")))
mesi=month(Cdate(Request.Form("dtInicial")))
diai=day(Cdate(Request.Form("dtInicial")))

Session.LCID = 1033 --> Data Padrão Americanio

Session.LCID = 1046 --> Data Padrão Brasileiro

Para saber mais leia o tópico abaixo

http://www.imasters.com.br/artigo/777/asp/..._o_sessionlcid/

falou

Link para o comentário
Compartilhar em outros sites

  • 0

então Romero... agradeço sua atençao e espero que possa continuar colaborando com esse mistério... fiz as sugestões que sugeristes... mas quando lancei a data 02/02/07 no banco apareceu assim 30/1/1900... nada a ver, certo?

eu devo estar errando em algum outro lugar... por isso estou colocando o codigo completo para caso o amigo ou mais alguém que possa contribuir tenham a visao geral do problema... de qualquer. forma valeu força...

o nome do campo onde a data é preenchida no formulário se chama txtData e não datai como eu havia postado anteriormente... desclpem o engano... mas só aconteceu aqui... e não no código... essa parte tenho certeza de que não estava errada nos meus teste ;)

forte abraço

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

  • 0

Po Bareta... brigadão pelo retorno...

Sabes que eu estava pensando em utilizar um campo pra cada... mas não sei como fazer e nem sei se isso ajudaria... visto que no meu script inicial ele inverte apenas quando os dias vão do 01 ao 12... dos dias 13 ao 31 funciona legal!

to quebrando a cabeça e já to bem sem ideias!

no caso de usar o padrão americano e só inverter na hora de exibir é um problema pra mim, pois os usuários terão de se acostumar a trabalhar com datas invertidas... o que é muito ruim... além de que poderão haver falhas de lançamentos... visto que já estamos acostumados ao nosso padrão...

Será que o amigo teria um exemplo para postar aqui de um script funcionando com um campo para dia um para mes e um para ano? como funcionaria com o insert nesse caso?

Link para o comentário
Compartilhar em outros sites

  • 0

veja que não é preciso digitar a data no format americano você vai digitar normal

data=10/11/12

data=month(data)&"/"&day(data)&"/"&year(data)
basicamente isso como contexto de inversão já 3 campos do tipo numero [dia - mes - ano]
sql="Insert into datas (dia,mes,ano) values ("&dia&","&mes&","&ano&")"
ou
sql="Insert into datas (dia,mes,ano) values ("&day(data)&","&month(data)&","&year(data)&")"

é bem simples mais em determinados casos não da pra usar assim....

Link para o comentário
Compartilhar em outros sites

  • 0

Bom... então deixa eu ver se eu entendi...

Caso eu queira continuar usando um campo único, eu poderia digitar as datas no formato certo... e no script do insert eu colocaria:

data = request.form ("txtData")

data=month(data)&"/"&day(data)&"/"&year(data)

e neste caso não uso nenhuma session.LCID, certo?

desta forma será incluso de forma correta no banco, não é isso?

valeu a força... e desclupa a incomodação!

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal... to começando a acreditar que posso estar com problema no loop e não na formatação das datas!

na verdade nem sei mais o que pensar! já estou em cima disso a tanto tempo que só de olhar fico vesgo!

a última modificação que eu fiz com auxilio do bareta e do romero trouxe uma peq. melhora... mas ainda não resolveu e o diagnóstico continua o mesmo! vejam bem:

quando lanço datas dos dias 13 ao 31 e peço para repeitr "n" vezes sai direitinho... bem bacana...

por exemplo 25/01/07 repetindo 3x = 25/01/07 25/02/07 25/03/07

agora dos dias 1 ao 12 só o primeiro lançamento sai correto, depois fica invertido... exemplo:

lanço 02/01/07 e peço para repetir 3x = 02/01/07 03/01/07 04/01/07... ou seja... o primeiro lançamento sai correto e depois aumenta só a primeira casa... mas ela não representa dias e sim meses... por que se peço para repetir 13x por exemplo, quando paça o numero 12 volta para o numero 1 e o ano aumenta...

isso me faz voltar a acreditar que com o loop não tem erro, e sim com alguma inversão que não estou conseguindo fazer!

qualquer sugestão é bem vinda! já estou no nível do desespero :)

forte abraço a todos! e tomara que possam me ajudar!

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

  • 0

valeu a atenção... mas infelizmente não funcionou denovo! só a primeira data sai certinho, as outras saem invertidas!

Pessoal, meu problema continua o mesmo... Já tentei diversas formas e não consigo corrigir... Tentei das formas que o romero sugeriu, tb. das formas que o Bareta indicou... não funcionou... e reconhecidamente estes caras são feras no assunto... o que eu quero dizer, é que pelo jeito meu caso é um mistério mesmo, pois apesar de eu ainda ser amador... esses caras com certeza não são... fico aqui pensando e matutando como eu poderia fazer para resolver esta questão... já contatei até com o servidor, que lavou suas mãos, garantindo que o meu script deva estar com algum erro... o que logicamente é possivel mesmo... deve existir alguma coisinha qualquer ainda errada, pode ser que seja um detalhe dos mais ridículos, mas se existe eu com certeza não estou vendo! o que mais me espanta é que para datas que vão dos dias 13 ao 31 funciona perfeitamente... digito no sistema brasileiro e inclui no BD no sistema brasileiro tb! a inversão pro sistema americano só ocorre nas datas que tem os dias entre 1 e 12! é como se o sistema "entendesse" que de um ao doze só pode ser mês e daí ele inverte! Chego a pensar se derepente não pode ter algum errinho no meu loop, mas eu testo ele em separado e funciona legal...

Peço portanto, encarecidamente a todos que puderem contribuir (e sei que tem vários cobras aí no forum) se tiverem um tempinho que o façam... acredito que este caso realmente poderá contribuir para outras pessoas.

Cheguei a pensar na possibilidade (dentro da meu amadorismo) se derepente não seria o caso de criar um select case específico para os dias 01 ao 12... só que eu não faço a menor ideia de como fazer isso! nem se isso é realmente possível!

Aproveito para agradecer a atenção e o carinho que muitos aqui no ScriptBrasil demenstram, ajudando desconhecido a troco de nada! isso é muito nobre e espero aumentar meus conhecimentos a ponto de poder contribuir tb!

um forte abraço a todos

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, até que um dia nasceu! consegui... lógicamente isso não terria sido possivel sem a ajuda de vocês..

mas enfim, vamos esclarecer...

Depois que o bareta deu a sugestão de desagrupar a data em tres campos, sendo um para dia, um para mes, e um para ano, as coisas começaram a clarear... até que resolvi começar do zero e ir testando função por função...

As questões de session, no meu caso, só funcionam se eu coloco primeiro 1033 e depois vou pra 1046... e isso era um problema... segunda coisa... no meio do loop eu criava uma nova condição, que eram as datas do "parcelamento" esta data, apesar de a data inicial estar bem formatada, por uma razão ou outra invirtia novamente... daí eu coloquei única e exclusivamente nesta variável "dtParcela" que é igual a variável "data" a ser inclusa no banco a sugestão do romero... ou seja:

data = Cdate(month (data) &"/"& day (data) &"/"& year (data))

o que eu acho que tava acontecendo era uma salada de fruta... porque eu tava formatando dtParcela, que é igual a data... e depois reformatava data denovo... então eu arrumava, desarrumava, arrumava denovo e assim dava o xabú que vocês viram...

Putz... é difícil até de explicar quando deu certo! rsss

mas enfim... era isso... agradeço a contribuição e a atenção de todos...

um forte abraço

notax

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