Dúvida em Pesquisa MySQL...

Delphi

03/09/2006

Bom Pessoal... Tenho esta pesquisa que esta funcionando perfeita mente... Minha dúvida segue a baixo da pesquisa...

with DmDados.QryPesquisa01 do
begin
Close;
SQL.Text := ´select tbproclote.CodLote, tbproclote.CodCost, tbcost.Nmcost, Data, Hora ´ +
´from tbproclote ´ +
´left join tbcost on tbcost.CodCost = tbproclote.CodCost ´ +
´where (Data Like:Dia) and (hora between :HoraInicio and :HoraFinal) and (tbproclote.CodCost Like:Codigo)´;
ParamByName(´Dia´).AsDate := DateTimePicker1.Date;
ParamByName(´HoraInicio´).AsString := ComboBox1.Text;
ParamByName(´HoraFinal´).AsString := ComboBox2.Text;
ParamByName(´Codigo´).AsString := Label2.Caption;
Open;

Eu presiso Fazer mais três pesquisas, que são...
[color=red:d3df76f6c3]SELECT COUNT(CodLote) FROM tbproclote
[color=red]SELECT MAX(Hora) FROM tbproclote
SELECT MIN(Hora) FROM tbproclote[/color:d3df76f6c3]

Até aqui tudo bem... Esta pesquisa retorna os seguintes valores...
CodLote
CodCost
NmCost
Data
Hora

De que forma eu vou poder capturar a hora com o maior valor, para atribuir a uma variável...
Desta mesma forma eu preciso capturar a hora com o menor valor, e atribuir a uma variável...
E contar a quantidade de ocorrencias (Count) neste Pesquisa, e atribuir a uma variável...

Eu acredito que devo adquirir estas informações do DBGrid, que esta ligado a [color=red:d3df76f6c3]QryPesquisa01[/color:d3df76f6c3]...

Com esta pesquisa vou obter o seguinte resultado...
vou pegar a maior hora (Ex.: 10:00:00) subtrair a menor hora (Ex.: 09:00:00), dai vou dividir este tempo pelo valor
do [color=red:d3df76f6c3]Count[/color:d3df76f6c3] (Ex.: 36) para obter o tempo médio de cada processo efetuado; o que me daria um total de
1,6 minutos por processo...

Desculpas se não esta bem esplicado mas é muito importante para mim...

Antecipadamente agradeço a atenção... Um Abraço a Todos...


Adelor Silva

Adelor Silva

Curtidas 0

Respostas

Adelor Silva

Adelor Silva

03/09/2006

O Count eu consegui fazer... utilizei o seguinte código...

begin
DmDados.QryPesquisa01.DisableControls;
Qtd := 0;
DmDados.QryPesquisa01.First;
while
not DmDados.QryPesquisa01.Eof do
begin
Qtd := Qtd + 1;
DmDados.QryPesquisa01.Next;
end;
Label1.Caption := FloatToStr(Qtd);
DmDados.QryPesquisa01.First;
DmDados.QryPesquisa01.EnableControls;
end;

Agora só preciso descobri o maior valor em horas e o menor valor e horas...


GOSTEI 0
Adelor Silva

Adelor Silva

03/09/2006

Pessoal... Acabei terminando as minha pesquisas... gostaria de uma opinião sobre como ficou... ai vai o codigo...

procedure TFrmPsqLote.Button1Click(Sender: TObject);
var
Soma, Qtd : Integer;
MaxHora, MinHora : TDateTime;
begin
begin
with DmDados.QryPesquisa01 do
begin
Close;
SQL.Text := ´select tbproclote.CodLote, tbproclote.CodCost, tbcost.Nmcost, Data, Hora ´ +
´from tbproclote ´ +
´left join tbcost on tbcost.CodCost = tbproclote.CodCost ´ +
´where (Data Like:Dia) and (hora between :HoraInicio and :HoraFinal) and (tbproclote.CodCost Like:Codigo)Order By Hora´;
ParamByName(´Dia´).AsDate := DateTimePicker1.Date;
ParamByName(´HoraInicio´).AsString := ComboBox1.Text;
ParamByName(´HoraFinal´).AsString := ComboBox2.Text;
ParamByName(´Codigo´).AsString := Label2.Caption;
Open;
begin
DBGrid1.Columns[0].Title.Caption := ´Lote´;
DBGrid1.Columns[0].Title.Alignment := taCenter;
DBGrid1.Columns[0].Width := 35;
DBGrid1.Columns[1].Title.Caption := ´Cod´;
DBGrid1.Columns[1].Alignment := taCenter;
DBGrid1.Columns[1].Width := 35;
DBGrid1.Columns[2].Title.Caption := ´Costureira´;
DBGrid1.Columns[2].Title.Alignment := taLeftJustify;
DBGrid1.Columns[2].Width := 250;
DBGrid1.Columns[3].Title.Caption := ´Data´;
DBGrid1.Columns[3].Title.Alignment := taCenter;
DBGrid1.Columns[3].Width := 65;
DBGrid1.Columns[4].Title.Caption := ´Hora´;
DBGrid1.Columns[4].Title.Alignment := taCenter;
DBGrid1.Columns[4].Width := 50;
end;
end;
end;
//Conta a Quantidade de Ocorrências na Pesquisa
begin
DmDados.QryPesquisa01.DisableControls;
Qtd := 0;
DmDados.QryPesquisa01.First;
while
not DmDados.QryPesquisa01.Eof do
begin
Qtd := Qtd + 1;
DmDados.QryPesquisa01.Next;
end;
Label1.Caption := FloatToStr(Qtd);
DmDados.QryPesquisa01.First;
DmDados.QryPesquisa01.EnableControls;
end;
//Soma um Campo da Pesquisa
begin
DmDados.QryPesquisa01.DisableControls;
Soma := 0;
DmDados.QryPesquisa01.First;
while not DmDados.QryPesquisa01.Eof do
begin
soma := Soma + DmDados.QryPesquisa01.FieldByName(´CodCost´).Value;
DmDados.QryPesquisa01.Next;
end;
Label4.Caption := FloatToStr(soma);
DmDados.QryPesquisa01.First;
DmDados.QryPesquisa01.EnableControls;
end;
//Encontra a Maior Hora da Pesquisa
begin
DmDados.QryPesquisa01.DisableControls;
MaxHora := StrToTime(´00:00:00´);
DmDados.QryPesquisa01.First;
while not DmDados.QryPesquisa01.Eof do
begin
if MaxHora < DmDados.QryPesquisa01.FieldByName(´Hora´).Value then
begin
MaxHora := DmDados.QryPesquisa01.FieldByName(´Hora´).Value;
DmDados.QryPesquisa01.Next;
end;
end;
Label5.Caption := TimeToStr(MaxHora);
DmDados.QryPesquisa01.First;
DmDados.QryPesquisa01.EnableControls;
end;
//Encontra a Menor Hora da Pesquisa
begin
DmDados.QryPesquisa01.DisableControls;
MinHora := StrToTime(´23:59:59´);
DmDados.QryPesquisa01.Last;
while not DmDados.QryPesquisa01.Bof do
begin
if MinHora > DmDados.QryPesquisa01.FieldByName(´Hora´).Value then
begin
MinHora := DmDados.QryPesquisa01.FieldByName(´Hora´).Value;
DmDados.QryPesquisa01.Prior;
end;
end;
Label6.Caption := TimeToStr(MinHora);
DmDados.QryPesquisa01.First;
DmDados.QryPesquisa01.EnableControls;
end;
//Calcula Média entre Cada Processo
Label7.Caption := TimeToStr((MaxHora - MinHora)/Qtd);
end;


GOSTEI 0
POSTAR