Filtro por Periodo e Total por dia!!!
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:
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,
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
Curtidas 0
Respostas
Olavojr
23/11/2006
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.
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.
GOSTEI 0
Marcelovms
23/11/2006
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.
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.
GOSTEI 0
Macario
23/11/2006
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;
GOSTEI 0
Djorius
23/11/2006
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
SUM - Soma todos os registros da coluna.
COUNT - Retorna o número de registros que atendem a condição
GOSTEI 0
Marcelovms
23/11/2006
Pessoal,
Desculpe a ignorância, mais ainda não consegui.
Minha tabela Paradox tem os seguintes campos: Data, Protocolo, Usuario.
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.
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.
GOSTEI 0
Marcelovms
23/11/2006
Alguem me dá uma força ai galera!!!
GOSTEI 0
Marcelovms
23/11/2006
PSC
GOSTEI 0
Marco Salles
23/11/2006
Se eu fosse fazer isto , pelo que eu entendi , também faria desta forma
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...
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...
GOSTEI 0
Marcelovms
23/11/2006
[quote:b412495e18=´Marco Salles´]Se eu fosse fazer isto , pelo que eu entendi , também faria desta forma
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.
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.
GOSTEI 0
Marco Salles
23/11/2006
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
GOSTEI 0
Marcelovms
23/11/2006
[quote:1c84bbe483=´Marco Salles´]
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!!!
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!!!
GOSTEI 0
Marco Salles
23/11/2006
que deus abençoes a todos nos.
obrigado.
obrigado.
GOSTEI 0