Média últimos meses ou dias
Pessoal...
Meu sistema (delphi + firebird) controla a entrada de pacientes no pronto socorro do hospital que trabalho.
Preciso fazer algumas médias de atendimento; uma delas é a média de atendimento [b:35c8f375c4]mensal[/b:35c8f375c4] dos últimos [b:35c8f375c4]10 meses[/b:35c8f375c4].
Outra é a média [b:35c8f375c4]diária[/b:35c8f375c4] de atendimento dos últimos [b:35c8f375c4]10 meses [/b:35c8f375c4]também.
Na tabela FICHAS tenho todas as fichas gravadas e nesta tabela existe o campo DATAFICHA do tipo date que guarda a data da ficha de atendimento.
Como poderia realizar este cálculo.... será que um stored procedure era melhor, ou dá pra fazer de outro modo mais simples??
Meu sistema (delphi + firebird) controla a entrada de pacientes no pronto socorro do hospital que trabalho.
Preciso fazer algumas médias de atendimento; uma delas é a média de atendimento [b:35c8f375c4]mensal[/b:35c8f375c4] dos últimos [b:35c8f375c4]10 meses[/b:35c8f375c4].
Outra é a média [b:35c8f375c4]diária[/b:35c8f375c4] de atendimento dos últimos [b:35c8f375c4]10 meses [/b:35c8f375c4]também.
Na tabela FICHAS tenho todas as fichas gravadas e nesta tabela existe o campo DATAFICHA do tipo date que guarda a data da ficha de atendimento.
Como poderia realizar este cálculo.... será que um stored procedure era melhor, ou dá pra fazer de outro modo mais simples??
Armando.boza
Curtidas 0
Respostas
Rômulo Barros
04/02/2005
Vamos fazer um método para cálcular a média dos últimos 10 meses. Baseado neste método, vc conseguirá desenvolver o método para as médias dos dias.
...
[color=red:9bee8cdd8d][b:9bee8cdd8d]Espero ter ajudado.[/b:9bee8cdd8d][/color:9bee8cdd8d] :wink: :wink:
...
Uses DateUtils; ... ... procedure TfrmPrincipal.Button1Click(Sender: TObject); Var QueryMedAtendMes : TSQLQuery; begin Try QueryMedAtendMes := TSQLQuery.Create(Nil); With(QueryMedAtendMes)Do Begin SQLConnection := MeuSqlConnection; SQL.Text := ´ SELECT (COUNT(*) / 10)As MediaMensal ´ + ´ FROM FICHAS ´ + ´ WHERE DATAFICHA BETWEEN :DTINICIAL AND :DTFINAL ´; Params[0].AsDate := IncMonth(Date,-10); // Dez meses atrás da data atual Params[1].AsDate := Date; Open(); ShowMessage(´Médias de Atendimentos mensais nos últimos 10 meses: ´ + Fields[0].AsString); End; Finally FreeAndNil(QueryMedAtendMes); End; end;
[color=red:9bee8cdd8d][b:9bee8cdd8d]Espero ter ajudado.[/b:9bee8cdd8d][/color:9bee8cdd8d] :wink: :wink:
GOSTEI 0
Armando.boza
04/02/2005
Amigo... sua explicação não poderia ser melhor... muito obrigado...
Agora, eu estou um pouco confuso pois meus conhecimentos em programação não são muito grandes... mas pelo que entendi vc cria uma query direto no comando e no final vc descarta ela ou ela continua criada?
Muito obrigado
[quote:a1829a1390=´Undeclared Identifier´]Vamos fazer um método para cálcular a média dos últimos 10 meses. Baseado neste método, vc conseguirá desenvolver o método para as médias dos dias.
...
[color=red:a1829a1390][b:a1829a1390]Espero ter ajudado.[/b:a1829a1390][/color:a1829a1390] :wink: :wink:[/quote:a1829a1390]
Agora, eu estou um pouco confuso pois meus conhecimentos em programação não são muito grandes... mas pelo que entendi vc cria uma query direto no comando e no final vc descarta ela ou ela continua criada?
Muito obrigado
[quote:a1829a1390=´Undeclared Identifier´]Vamos fazer um método para cálcular a média dos últimos 10 meses. Baseado neste método, vc conseguirá desenvolver o método para as médias dos dias.
...
Uses DateUtils; ... ... procedure TfrmPrincipal.Button1Click(Sender: TObject); Var QueryMedAtendMes : TSQLQuery; begin Try QueryMedAtendMes := TSQLQuery.Create(Nil); With(QueryMedAtendMes)Do Begin SQLConnection := MeuSqlConnection; SQL.Text := ´ SELECT (COUNT(*) / 10)As MediaMensal ´ + ´ FROM FICHAS ´ + ´ WHERE DATAFICHA BETWEEN :DTINICIAL AND :DTFINAL ´; Params[0].AsDate := IncMonth(Date,-10); // Dez meses atrás da data atual Params[1].AsDate := Date; Open(); ShowMessage(´Médias de Atendimentos mensais nos últimos 10 meses: ´ + Fields[0].AsString); End; Finally FreeAndNil(QueryMedAtendMes); End; end;
[color=red:a1829a1390][b:a1829a1390]Espero ter ajudado.[/b:a1829a1390][/color:a1829a1390] :wink: :wink:[/quote:a1829a1390]
GOSTEI 0
Rômulo Barros
04/02/2005
Amigo... sua explicação não poderia ser melhor... muito obrigado...
Agora, eu estou um pouco confuso pois meus conhecimentos em programação não são muito grandes... mas pelo que entendi vc cria uma query direto no comando e no final vc descarta ela ou ela continua criada?
Muito obrigado
[quote:49a20821b0=´Undeclared Identifier´]Vamos fazer um método para cálcular a média dos últimos 10 meses. Baseado neste método, vc conseguirá desenvolver o método para as médias dos dias.
...
[color=red:49a20821b0][b:49a20821b0]Espero ter ajudado.[/b:49a20821b0][/color:49a20821b0] :wink: :wink:
[/quote:49a20821b0]Uses DateUtils; ... ... procedure TfrmPrincipal.Button1Click(Sender: TObject); Var QueryMedAtendMes : TSQLQuery; begin Try QueryMedAtendMes := TSQLQuery.Create(Nil); With(QueryMedAtendMes)Do Begin SQLConnection := MeuSqlConnection; SQL.Text := ´ SELECT (COUNT(*) / 10)As MediaMensal ´ + ´ FROM FICHAS ´ + ´ WHERE DATAFICHA BETWEEN :DTINICIAL AND :DTFINAL ´; Params[0].AsDate := IncMonth(Date,-10); // Dez meses atrás da data atual Params[1].AsDate := Date; Open(); ShowMessage(´Médias de Atendimentos mensais nos últimos 10 meses: ´ + Fields[0].AsString); End; Finally FreeAndNil(QueryMedAtendMes); End; end;
[color=red:49a20821b0]Eu instancio uma query em runtime e, após exibir o resultado no [b:49a20821b0]ShowMessage[/b:49a20821b0], eu Libero a query de memória através da linha [b:49a20821b0]FreeAndNil(QueryMedAtendMes); [/b:49a20821b0][/color:49a20821b0]
GOSTEI 0
Armando.boza
04/02/2005
Amigo....
Esqueci de perguntar... aquela função IncMonth.. ela pega só o mes da data e diminui 10...certo!?..
Mas e para calcular os dias dos últimos 10 meses... existe outra função parecida???
[quote:4bcabd405b=´Undeclared Identifier´]
[color=red:4bcabd405b]Eu instancio uma query em runtime e, após exibir o resultado no [b:4bcabd405b]ShowMessage[/b:4bcabd405b], eu Libero a query de memória através da linha [b:4bcabd405b]FreeAndNil(QueryMedAtendMes); [/b:4bcabd405b][/color:4bcabd405b][/quote:4bcabd405b]
Esqueci de perguntar... aquela função IncMonth.. ela pega só o mes da data e diminui 10...certo!?..
Mas e para calcular os dias dos últimos 10 meses... existe outra função parecida???
[quote:4bcabd405b=´Undeclared Identifier´]
Amigo... sua explicação não poderia ser melhor... muito obrigado...
Agora, eu estou um pouco confuso pois meus conhecimentos em programação não são muito grandes... mas pelo que entendi vc cria uma query direto no comando e no final vc descarta ela ou ela continua criada?
Muito obrigado
[quote:4bcabd405b=´Undeclared Identifier´]Vamos fazer um método para cálcular a média dos últimos 10 meses. Baseado neste método, vc conseguirá desenvolver o método para as médias dos dias.
...
[color=red:4bcabd405b][b:4bcabd405b]Espero ter ajudado.[/b:4bcabd405b][/color:4bcabd405b] :wink: :wink:
[/quote:4bcabd405b]Uses DateUtils; ... ... procedure TfrmPrincipal.Button1Click(Sender: TObject); Var QueryMedAtendMes : TSQLQuery; begin Try QueryMedAtendMes := TSQLQuery.Create(Nil); With(QueryMedAtendMes)Do Begin SQLConnection := MeuSqlConnection; SQL.Text := ´ SELECT (COUNT(*) / 10)As MediaMensal ´ + ´ FROM FICHAS ´ + ´ WHERE DATAFICHA BETWEEN :DTINICIAL AND :DTFINAL ´; Params[0].AsDate := IncMonth(Date,-10); // Dez meses atrás da data atual Params[1].AsDate := Date; Open(); ShowMessage(´Médias de Atendimentos mensais nos últimos 10 meses: ´ + Fields[0].AsString); End; Finally FreeAndNil(QueryMedAtendMes); End; end;
[color=red:4bcabd405b]Eu instancio uma query em runtime e, após exibir o resultado no [b:4bcabd405b]ShowMessage[/b:4bcabd405b], eu Libero a query de memória através da linha [b:4bcabd405b]FreeAndNil(QueryMedAtendMes); [/b:4bcabd405b][/color:4bcabd405b][/quote:4bcabd405b]
GOSTEI 0
Marcosrocha
04/02/2005
Amigo....
Esqueci de perguntar... aquela função IncMonth.. ela pega só o mes da data e diminui 10...certo!?..
Mas e para calcular os dias dos últimos 10 meses... existe outra função parecida???
Existe Sim!! Abra a DateUtils que lá tem IncYear, IncMonth, IncDay, e muitas outras mais...
GOSTEI 0
Rômulo Barros
04/02/2005
:lol: [color=darkblue:eb59f00b94][i:eb59f00b94][b:eb59f00b94]Afe !!! Estão ressucitando defunto agora, é ?[/b:eb59f00b94][/i:eb59f00b94][/color:eb59f00b94]
GOSTEI 0