Fórum Filtro por Periodo e Total por dia!!! #333587

23/11/2006

0

Pessoal, preciso de uma ajuda.

Sou iniciante e estou fazendo um programa que controla abertura de chamados tecnicos em uma loja.

Uso table, Query e DataSource, tudo paradox.

Tenho que fazer um filtro por periodo, por exemplo, todos os chamados abertos do dia 01/01/06 até 01/01/2007, tenho uma rotina que faz essa busca via SQL:

While Query1 do begin close; SQL.Clear; SQL.Add(´Select * From Tabela1´); SQL.Add(´Where DATA between :dtinicial and :dtfinal´); SQL.Add(´order by DATA, NUM_PROTOCOLO´); Parambyname(´dtinicial).asdate : Strtodate(edit1.text); Parambyname(´dtFinal).asdate : Strtodate(edit2.text); Open; end;


Seria basicamente assim, no comando acima consigo filtrar todos os registros desse periodo, mas sai varios registros para cada dia, eu queria assim:

Por exemplo:
Dia Total
01 20
02 15

E assim por diante, não quero que repita datas e sim some a quantidade de protocolos abertos na data e no DBGrid apareça só o total de Protocolos abertos naquele dia.

Me ajudem por favor galera!!!

Agradeço antecipadamente.

Sds,


Marcelovms

Marcelovms

Responder

Posts

24/11/2006

Olavojr

mude sua instrução SQL, para algo parecido com isso:

While Query1 do
begin
close;
SQL.Clear;
SQL.Add(´Select DATA, SUM(VALOR) From Tabela1´);
SQL.Add(´Where DATA between :dtinicial and :dtfinal´);
SQL.Add(´GROUP BY DATA´);
SQL.Add(´order by DATA´);
Parambyname(´dtinicial).asdate : Strtodate(edit1.text);
Parambyname(´dtFinal).asdate : Strtodate(edit2.text);
Open;
end;

ou seja, agrupe e some, perceba q NUM_PROTOCOLO sumiu, acredito q algo parecido lhe ajude. []´s.


Responder

Gostei + 0

24/11/2006

Marcelovms

Blz,

Mas como faço para escrever o total na frente da data no DBGrid.,

Ex:
Data Total
23/11/2006 10
24/11/2006 15


Alguem pode me dar uma força, mais uma vez.

Agradeço antecipadamente.

Sds.


Responder

Gostei + 0

24/11/2006

Macario

Blz, Mas como faço para escrever o total na frente da data no DBGrid., Ex: Data Total 23/11/2006 10 24/11/2006 15 Alguem pode me dar uma força, mais uma vez. Agradeço antecipadamente. Sds.


Ola use:

While Query1 do begin close; SQL.Clear; SQL.Add(´Select DATA, SUM(VALOR) [b:d2ef169c30]as TOTAL[/b:d2ef169c30] From Tabela1´); SQL.Add(´Where DATA between :dtinicial and :dtfinal´); SQL.Add(´GROUP BY DATA´); SQL.Add(´order by DATA´); Parambyname(´dtinicial).asdate : Strtodate(edit1.text); Parambyname(´dtFinal).asdate : Strtodate(edit2.text); Open; end;



Responder

Gostei + 0

24/11/2006

Djorius

se você quiser o número de chamados então troque onde está SUM por COUNT.

SUM - Soma todos os registros da coluna.
COUNT - Retorna o número de registros que atendem a condição


Responder

Gostei + 0

24/11/2006

Marcelovms

Pessoal,

Desculpe a ignorância, mais ainda não consegui.

Minha tabela Paradox tem os seguintes campos: Data, Protocolo, Usuario.

While Query1 do begin close; SQL.Clear; SQL.Add(´Select DATA, count(Protocolo) as TOTAL From Cadastro´); SQL.Add(´Where DATA between :dtinicial and :dtfinal´); SQL.Add(´GROUP BY DATA´); SQL.Add(´order by DATA´); Parambyname(´dtinicial).asdate : Strtodate(edit1.text); Parambyname(´dtFinal).asdate : Strtodate(edit2.text); Open; end;


Coloquei o codido dentro de um button, mais quando clico dá erro e não aparece nada no DbGrid.

Nem o campo data aparece preenchido.

Já tentei de todos os jeitos para ficar assim:
Data Total de Registros deste dia
23/11/2006 15


Conto com a ajuda de voces.

Um abraço.


Responder

Gostei + 0

24/11/2006

Marcelovms

Alguem me dá uma força ai galera!!!


Responder

Gostei + 0

25/11/2006

Marcelovms

PSC


Responder

Gostei + 0

25/11/2006

Marco Salles

Se eu fosse fazer isto , pelo que eu entendi , também faria desta forma
While Query1 do begin close; SQL.Clear; SQL.Add(´Select DATA, count(Protocolo) as TOTAL From Cadastro´); SQL.Add(´Where DATA between :dtinicial and :dtfinal´); SQL.Add(´GROUP BY DATA´); SQL.Add(´order by DATA´); Parambyname(´dtinicial).asdate : Strtodate(edit1.text); Parambyname(´dtFinal).asdate : Strtodate(edit2.text); Open; end;


Mas so por curiosidade:

O dbgrid esta ligado ao DataSource , que esta ligado ao Query de maneira Correta ???

Segundo .. [b:169badc018]Voce definiu a nivel de projeto Tfields para a query [/b:169badc018]??: Caso afirmativo ,[b:169badc018] limpe [/b:169badc018]os tfields da query e execute novamente e post os resultados

Boa sorte...


Responder

Gostei + 0

25/11/2006

Marcelovms

[quote:b412495e18=´Marco Salles´]Se eu fosse fazer isto , pelo que eu entendi , também faria desta forma
While Query1 do begin close; SQL.Clear; SQL.Add(´Select DATA, count(Protocolo) as TOTAL From Cadastro´); SQL.Add(´Where DATA between :dtinicial and :dtfinal´); SQL.Add(´GROUP BY DATA´); SQL.Add(´order by DATA´); Parambyname(´dtinicial).asdate : Strtodate(edit1.text); Parambyname(´dtFinal).asdate : Strtodate(edit2.text); Open; end;


Mas so por curiosidade:

O dbgrid esta ligado ao DataSource , que esta ligado ao Query de maneira Correta ???

Segundo .. [b:b412495e18]Voce definiu a nivel de projeto Tfields para a query [/b:b412495e18]??: Caso afirmativo ,[b:b412495e18] limpe [/b:b412495e18]os tfields da query e execute novamente e post os resultados

Boa sorte...[/quote:b412495e18]

Colega fiz o seguinte:

Tenho um query e um datasource.

No datasource, coloquei o dataset como Query1.

O DbGrid coloque o Datasource como datasource1.

No comando SQL do Query1 coloquei select * From Cadastro.

E no botão 1 coloquei o codigo:

While Query1 do
begin
close;
SQL.Clear;
SQL.Add(´Select DATA, count(Protocolo) as TOTAL From Cadastro´);
SQL.Add(´Where DATA between :dtinicial and :dtfinal´);
SQL.Add(´GROUP BY DATA´);
SQL.Add(´order by DATA´);
Parambyname(´dtinicial).asdate : Strtodate(edit1.text);
Parambyname(´dtFinal).asdate : Strtodate(edit2.text);
Open;
end;

O campo data fica correto, mas não aparece o resultado.

Precisa declarar alguma variavel para aparecer o campo total???, porque minha tabela não possui campo total, possui DATA, PROTOCOLO, NOME(que seria o nome do vendedor).

Gostaria que ficasse no Grid duas colunas (Data e Total) e abaixo fosse preenchido com os valores da tabela.

Mê dê uma força colega já estou desesperado.


Responder

Gostei + 0

25/11/2006

Marco Salles

Mê dê uma força colega já estou desesperado.


seus problemas acabaram amigo... Basta escrever o codigo sugerido de maneira correta , porque este que voce postou por ultimo tem erro de sintaxi..

Mas o que voce deve fazer para começar a mudar o seu animo e ir no dbGrid dar um click nele e depois escolher a opção coluns editor .. Dai voce deve selecionar todos os campos e elimina-los.. Deixando-os vazios

Rode o programa e click no botão.. Pronto a coluna de nome ´Tota´l ja deve aparecer


Responder

Gostei + 0

25/11/2006

Marcelovms

[quote:1c84bbe483=´Marco Salles´]
Mê dê uma força colega já estou desesperado.


seus problemas acabaram amigo... Basta escrever o codigo sugerido de maneira correta , porque este que voce postou por ultimo tem erro de sintaxi..

Mas o que voce deve fazer para começar a mudar o seu animo e ir no dbGrid dar um click nele e depois escolher a opção coluns editor .. Dai voce deve selecionar todos os campos e elimina-los.. Deixando-os vazios

Rode o programa e click no botão.. Pronto a coluna de nome ´Tota´l ja deve aparecer[/quote:1c84bbe483]

Que Deus te abençoe colega, funcionou uma beleza!!!


Responder

Gostei + 0

26/11/2006

Marco Salles

que deus abençoes a todos nos.

obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar