Ir para conteúdo

POWERED BY:

Arquivado

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

Damage inc.

Erro ao agrupar datas de eventos enviadas pela url

Recommended Posts

Olá pessoal, estou montando uma agenda de eventos, mas não estou conseguindo pegar o valor que passo pela url. Este valor é uma data (ex: 8/8/2007) e a partir desta, listar todos os eventos deste dia. Essa data é retirada do prorio banco de dados e jogada na url.Existem 2 paginas: - agenda.asp: nesta eu faço o select, somo o número de eventos de um dia e agrupo por data, para depois exibir os eventos por dia. Então aparece na tela as datas cadastradas, junto da quantidade de eventos deste dia e um link para a página agenda_info.asp passando a data do evento em questão. Aqui está tudo ok.- agenda_info.asp: vai listar todos os eventos da data que será recuperada pela url. Aqui o valor não é recebido, apesar de estar sendo passado pela url.Para recuperar o valor montei o select simples:

<%Dim rsFestas, diadia = Request.QueryString("dia")Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta="&dia&"")%>

Na hora de exibir os dados da o erro: BOF ou EOF são verdadeiros, ou o registro atual foi excluído. Todos os campos do BD estão preenchidos corretamente, então não entendo o prq do erro.Alguém poderia me dar uma ajuda dizendo o que estou fazendo de errado?Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele ñ achou...

 

Trate o erro simples com IF

 

<%
Dim rsFestas, dia
dia = Request.QueryString("dia")
Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta='"&dia&"'")
  If RsFestas.Eof Then
	 Response.Write("Nada encontrado")
  Else
	 Response.Write("Encontrado")
  End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele ñ achou...Trate o erro simples com IF

Ted k', acontece que o campo dataFesta no BD é do tipo data/hora, então neste caso ele retorna o erro: Tipo de dados imcompatível na expressão de critério. linha 140 (a linha do select) .Colocando aspas simples ele retorna em branco, no caso "Nada encontrado". Acho que o problema é a forma como devo receber esse valor do tipo data/hora. Se eu passo o campo para o tipo "texto" ele não listará na ordem correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro...qual banco de dados?segundo...como está o valor dentro da varaivel dia??

O banco é ACCESS.O valor passado é a data do evento, por exemplo : 8/8/2007Na página agenda.asp ele agrupa por data e cria um link com cada data diferente. Na página agenda_info.asp ele vai pegar esta data na url e vai listar os eventos deste dia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que usar # no campo data/hora no access

Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")
lembrando que no seu banco de dados o formato da data deve ser d/m/aaaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que usar # no campo data/hora no access

Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")
lembrando que no seu banco de dados o formato da data deve ser d/m/aaaa
Coloquei o # e agora funcionou, mas esta acontecendo algo estranho. Quando o dia do evento é inferior a 13 ele retorna os campos em branco (o mesmo para todos os meses). Ah, com excessão do dia 8, que funciona normal.Então o dia 8 e do 13 ao 31 funcionam, o resto não. Já verifiquei o campo dataFesta e está no formato d/a/yyyy (Data abreviada). Os dados que foram inseridos nas tabelas são os mesmos em todos os dias do mês, então se fosse para gerar erros era para ser em todos os dias, né.Alguém faz idéia do que pode estar acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve colocar o session.lcid=1043 no inicio da página. eu costumo sempre usar uma função pra colocar os valores corretos para o formato desejado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso estava acontecendo comigo faz um tempo, se eu não me engano o ACCESS tem o formato de data como mm/dd/aaaa. Tente fazer uma função que mude o mm/dd para dd/mm.

 

Exemplo:

Function FormataData(data)		Dim dia,mes,ano		dia = Mid(data,1,2)	mes = Mid(data,4,2)	ano = Mid(data,7,4)		data = mes & "/" & dia & "/" & ano		FormataData = data	End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer pegar só o dia???

 

já tentou usar a função DatePart?

 

Dim dia, data
data = "10/10/2007"
dia = DatePart("d",data)

Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve colocar o session.lcid=1043 no inicio da página. eu costumo sempre usar uma função pra colocar os valores corretos para o formato desejado

Acho que no meu caso não precisa da LCID, pois é uma agenda de eventos para rodar no computador mesmo.

Isso estava acontecendo comigo faz um tempo, se eu não me engano o ACCESS tem o formato de data como mm/dd/aaaa. Tente fazer uma função que mude o mm/dd para dd/mm.

Já verifiquei o formato e está correto (d/m/yyyy), se estivesse trocado ele não aceitaria as datas tipo, 20/8/2007.

você quer pegar só o dia???já tentou usar a função DatePart?

Estou tentando pegar a data completa, enviada pela url da página anterior. O que estou tentando é agrupar todos os campos com a mesma data. Na verdade já consegui, pois estava faltando o sinal # na parte do código “WHERE dataFesta=#"&dia&"#”, como me indicou o jonathandj.O problema agora é que ele pega algumas datas e outras não. Por exemplo, quando envio pela url o dia: 5/8/2007 a pagina de exibir todos os registros com essa data, não lista nada, fica em branco. Quando a data enviada é 8/8/2007 ela lista todos os campos. Depois ela só volta a listar depois do dia 13 (em qualquer mês).Não faço idéia do que pode ser, pois se está listando algumas datas, não tem prq não listar todas.Fiz o seguinte teste para verificar se era problema no BD: Este retorna os 5 campos que tem esta data.
<%Dim rsFestas, diadia = "8/8/2007"Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>
Este não retorna os 3 campos que tem esta data.
<%Dim rsFestas, diadia = "5/8/2007"Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>
Enfim, o problema não está no BD. Muito estranho isso! :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um teste desta forma e veja qual retorna correto

a ideia é pegar o dia 5 de agosto de 2007 e verifique se realmente existem registros gravados para esse periodo

<%session.lcid=1046Dim rsFestas, diadia = "5/8/2007"Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>
depois assim

<%session.lcid=1046Dim rsFestas, diadia = "8/5/2007"Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>
depois informa se um desses deu certo e qual

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um teste desta forma e veja qual retorna correto

a ideia é pegar o dia 5 de agosto de 2007 e verifique se realmente existem registros gravados para esse periodo

<%session.lcid=1046Dim rsFestas, diadia = "5/8/2007"Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>
depois assim

<%session.lcid=1046Dim rsFestas, diadia = "8/5/2007"Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>
depois informa se um desses deu certo e qual
Opa jonathandj, o segundo exemplo "8/5/2007" funcionou, retornando os valores dos campos que tem o dia 5 de agosto. Agora não entendo como as datas acima de 13 retornam os valores corretos. Uma hora ele retorna certo e outra ele inverte.

 

Bem, então vejam se o raciocínio está correto. Tenho que jogar uma funcão antes do select, que inverta o dia e mês para depois passar o valor #"&dia&"#, ou mesmo inverter antes de jogar na url. Vou fazer os testes e ver se isso gerará erros com as datas acima do dia 13.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente

<%session.lcid=1046Dim rsFestas, diadia = Request.QueryString("dia")dia = month(dia)&"/"&day(dia)&"/"&year(dia)Set rsFestas = objConn.execute("SELECT * FROM Cadastros WHERE dataFesta=#"&dia&"#")%>

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.