Jump to content
Fórum Script Brasil
  • 0

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


Notax
 Share

Question

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 to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Notax
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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!

Edited by Notax
Link to comment
Share on other sites

  • 0

experimente a sql

ComandoSQL = "SELECT * FROM a_pagar WHERE DATA between #"&datainicial&"# and #"&datafinal&"# ORDER BY DATA ASC,ID"

seleciona o intervalo de datas ordena por data em ascendente caso a data seja repetida usa o id como criterio...

Link to comment
Share on other 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 to comment
Share on other 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

Edited by Notax
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...