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

Busca Sql De Dados Com Filtragem Para Exibição Em Grafico


Alink

Pergunta

Olá galera,

O meu dilema é o seguinte, estou a 10 dias tentado solucionar isso e não estou conseguindo estou completamente perdida, sem noção de como fazer, sem a lógica, fico horas e mais horas matutando raciocinando, mais não consigo achar uma lógica de como fazer isso.

É o seguinte, tenho um formulário de pesquisa que tem os seguintes campos:

Cliente - id do cliente num campo hidden

lojas - combobox com as lojas deste cliente

entrada - combobox com as entradas da loja selecionada deste cliente

datainicial - data inicial que irá pesquisar

horainicial - hora inicial que

datafinal - data final

horafinal - hora final

exibicaografico - combobox de como será exibido o grafico, opções: 30min, hora, dia, mês, ano.

Tenho uma tabela onde será gravados os dados da quatidade de pessoas que entraram na loja com o horario de 15 em 15 minutos no mínimo(ex: 10:00, 10:15, 10:30, 10:45, 11:00..., ex: 10 pessoas entraram 10:00, 30 entraram entre 10:00 e 10:15, 8 entraram entre 10:15 e 10:30...).

Nesta tabela tem tambems todos estes campos acima citado no formulario. E os campos data e hora, são campos separados mesmo.

Consegui fazer a instrução sql para buscar todo acima com o intervalo usando o BETWEEN e etc...

Porém a exibição do grafico por 30min, por hora, por dia, por mês e por ano, sinceramente não como fazer, não sei se devo fazer isso na instrução sql também, e se for isso mesmo não sei como fazer.

Ou se faço dentro do loop que faço para mover entre os registros, depois do select sql.

E se for essa não sei exatamente como posso fazer.

Estou precisando disso com muita urgencia, por favor me ajudem, qualquer sugestão informação, tutorial , dica, código, exemplo e etc... será muito válido e de muita ajuda.

Aguardo uma ajuda de todos.

Um Abraço a todo e grata desde já,

Patricia

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

bom vamos ver se eu entendi...

você precisa só mudar o tanto de registro que você mostra no gráfico certo.... de 30min, 1h, 1 dia.... certo?

entaum como você tá fazendo com 15 minutos??? coloca a instrução aqui .... tipo num dá pra você mudar nessa que você tem já...???

cola aqui pra eu ver.... quem sabe da pra entender melhor....

Link para o comentário
Compartilhar em outros sites

  • 0
bom vamos ver se eu entendi...

você precisa só mudar o tanto de registro que você mostra no gráfico certo.... de 30min, 1h, 1 dia.... certo?

entaum como você tá fazendo com 15 minutos??? coloca a instrução aqui .... tipo num dá pra você mudar nessa que você tem já...???

cola aqui pra eu ver.... quem sabe da pra entender melhor....

Os registros já são gravados por padrão de 15 em 15 minutos entendeu, não estou fazendo filtragem nenhum para ele exibirem assim.

de qualquer forma ai vai mais informações:

SELECT * FROM passagens WHERE idcliente = '1' AND idloja = '1' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #29/9/2007#) AND (horario BETWEEN #12:00:00# AND #23:00:00#) ORDER BY id ASC

Até ai tudo beleza, funciona que é uma beleza gera o grafico com todos os dados, porem tais os dados todos sem filtragem de exibição, exemplo:

quantidade data horario

10 9/11/2006 21:00:00

14 9/11/2006 21:15:00

32 9/11/2006 21:30:00

25 9/11/2006 21:45:00

27 9/11/2006 22:00:00

40 15/2/2007 14:00:00

50 15/2/2007 14:15:00

Quero saber como eu posso fazer essa filtragem para exibir esses dados retornados desta consulta, porem quando for de 30 em 30 minuots, somar a quantidade e exibir o grafico que estão gravados nos intervalos de 30 em 30 minutos, ex:

quantidade data horario

10 9/11/2006 21:00:00

46 9/11/2006 21:30:00

52 9/11/2006 22:00:00

Neste caso vale o mesmo para exibição por dia hora, ou seja de hora em hora 21:00, 22:00, 23:00...., por mês janeiro (1), fevereiro (2), março (3)..., e por ano 2005, 2006, 2007...

Por favor aguardo uma ajuda estou entrando em desespero, sem saber resolver isso.

Link para o comentário
Compartilhar em outros sites

  • 0

calma sem desespero...^^V

enton... tipo como você mostra os dados nos gráficos.... já que tem um padrão por que você num soma os registro num loop.... tipo cada 15 minutos num faz loop..... a cada 30 faz um loop pra somar dois registros de total de entrada.... uma hora faz loop pra somar 4.... entendeu??? quanto ao dia acho melhor você fazer uma nova query de consulta usando mais ou menos assim...

SELECT DISTINCT(data), SUM(TOTAL_DE_ENTRADAs) AS total_de_entradas,* FROM passagens WHERE idcliente = '1' AND idloja = '1' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #29/9/2007#) AND (horario BETWEEN #12:00:00# AND #23:00:00#) GROUP BY DATA ORDER BY id ASC

agora o mês melhor fazer a consulta e testar os meses que você quiser....

num sei se fui claro o suficiente.. acho que até eu me perdi aqui ^^*)

Link para o comentário
Compartilhar em outros sites

  • 0
calma sem desespero...^^V

enton... tipo como você mostra os dados nos gráficos.... já que tem um padrão por que você num soma os registro num loop.... tipo cada 15 minutos num faz loop..... a cada 30 faz um loop pra somar dois registros de total de entrada.... uma hora faz loop pra somar 4.... entendeu??? quanto ao dia acho melhor você fazer uma nova query de consulta usando mais ou menos assim...

SELECT DISTINCT(data), SUM(TOTAL_DE_ENTRADAs) AS total_de_entradas,* FROM passagens WHERE idcliente = '1' AND idloja = '1' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #29/9/2007#) AND (horario BETWEEN #12:00:00# AND #23:00:00#) GROUP BY DATA ORDER BY id ASC

agora o mês melhor fazer a consulta e testar os meses que você quiser....

num sei se fui claro o suficiente.. acho que até eu me perdi aqui ^^*)

No grafico eu mostro a quantidade,e a legenda, que será, a data e horario, ou mês, ou ano dependendo do tipo de exibição escolhida.

Entendi mais ou menos, mais teria como você me postar um exemplo aqui deste esquema de loops? Para ficar mais claro.

E a questão de quando for dia, mês ou ano ai eu uso a query que tu me postou acima né, substiuo a atual por essa né?

Ou uso as duas???

Link para o comentário
Compartilhar em outros sites

  • 0

entaum.... quando for dia você pode usar a query que eu coloquei acima.... quando for mês você pode testar usando um like tipo select 8 from tab where data like'%mmaaa' tendeu???

o loop que eu falei é mais ou menos assim ó....

digamos que v já selecionou no banco e tal..

'num sei o nome que você vai da mas eu vou fazer algo bem genérico

select case perido_exibicao

case 15min

total_loop=1

case 30min

total_loop=2

case 1h

total_loop=4

end select

'se for dia você usa a query lá.....

quando for mostra no gráfico faz assim

do while not rs.EOF

for x=1 to total_loop

total=total+rs("total_de_entrada")

rs.movenext

next

'escreve o total referente a hora e o total_de entradas....

loop

assim você tem a soma dos registro divididos de quantos em quantos você precisar.. mais ou menos isso....

Link para o comentário
Compartilhar em outros sites

  • 0

quando eu uso a query que você me madou da erro:

Microsoft JET Database Engine error '80040e21'

Cannot group on fields selected with '*'.

Ai quando eu tiro * e coloco o nome das colunas, da outro erro:

Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'id' as part of an aggregate function.

Isso sem a clausula Order BY, mais se eu testar com o orderby junto com o distinct e ainda os nomes dos campos ou o * ai da outro erro:

Microsoft JET Database Engine error '80004005'

ORDER BY clause (id) conflicts with DISTINCT.

To meia perdida nisso. Aguardo ajuda help com urgencia.

Obrigado desde já

Editado por Alink
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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...