Fórum Média últimos meses ou dias #267431
04/02/2005
0
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
Curtir tópico
+ 0Posts
04/02/2005
Rômulo Barros
...
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
04/02/2005
Armando.boza
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
04/02/2005
Rômulo Barros
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
04/02/2005
Armando.boza
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´]
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
17/03/2005
Marcosrocha
Existe Sim!! Abra a DateUtils que lá tem IncYear, IncMonth, IncDay, e muitas outras mais...
Gostei + 0
17/03/2005
Rômulo Barros
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)