Enigma: mostrar Progresso de um select????
Ola colegas quem de voces ja viu, algo ou sabe como mostrar o progresso de um select?
ja procurei achei um topico no forum falando sobre callback do BDE mas isso nao ´e o que eu pretendo
tentei de uma forma bem simples ao menos demonstrar que o select estaria em progresso tipo:
btnConfirma.Enabled:= false;
btnVoltar.Enabled:=false;
Screen.Cursor:= crSQLWait;
Timer1.Enabled:=true;// onde o timer mostra/oculta um label
try
with QryTemp do
begin
..............
.............
Open;
end;
Screen.Cursor:= crDefault;
btnImprime.Enabled:=true;
btnVoltar1.Enabled:=true;
Timer1.Enabled:=false;
.............
MAS QUANDO EU DISPARO O SELECT ELE NAO ATIVA O TIMER
ALGUEM TEM UMA DICA, OU UMA SOLUÇÃO
GRATO PELA ATENÇÃO
ja procurei achei um topico no forum falando sobre callback do BDE mas isso nao ´e o que eu pretendo
tentei de uma forma bem simples ao menos demonstrar que o select estaria em progresso tipo:
btnConfirma.Enabled:= false;
btnVoltar.Enabled:=false;
Screen.Cursor:= crSQLWait;
Timer1.Enabled:=true;// onde o timer mostra/oculta um label
try
with QryTemp do
begin
..............
.............
Open;
end;
Screen.Cursor:= crDefault;
btnImprime.Enabled:=true;
btnVoltar1.Enabled:=true;
Timer1.Enabled:=false;
.............
MAS QUANDO EU DISPARO O SELECT ELE NAO ATIVA O TIMER
ALGUEM TEM UMA DICA, OU UMA SOLUÇÃO
GRATO PELA ATENÇÃO
Macario
Curtidas 0
Respostas
Rodrigo Coutinho
02/10/2003
Olá amigo utilize o comando Application.ProcessMessages que ele permite executar varios comandos em quanto nao termina um while por exemplo.
[]s, Rodrigo Coutinho
[]s, Rodrigo Coutinho
GOSTEI 0
Macario
02/10/2003
Voce poderia me dar um exemplo de como ´encaixar´
Application.progessmessages no código abaixo?
Outra coisa com isso eu poderia usar uma progressbar ou gauge?
ou pelo menos usar um timer para fazer um label ficar piscando enquanto o select nao termina?
Application.progessmessages no código abaixo?
Outra coisa com isso eu poderia usar uma progressbar ou gauge?
ou pelo menos usar um timer para fazer um label ficar piscando enquanto o select nao termina?
procedure TfrmFAnaCli.btnConfirmaClick(Sender: TObject);
begin
btnConfirma.Enabled:= false;
btnVoltar.Enabled:=false;
Screen.Cursor:= crSQLWait;
try
with QryTemp do
begin
Close;
DatabaseName := DM.TArqEmpr.DatabaseName;
SQL.Clear;
SQL.Add(´select´);
SQL.Add(´C.v1 as Cod, C.v2 as Cliente, C.v4 as Municipio, C.v5 as UF,´);
SQL.Add(´C.v12 as Contato, C.v13 as Telefone, R.v1 as codrep,´);
SQL.Add(´R.v2 as Representante, C.Datacad,´);
SQL.Add(´Max (N.Dnf) as Data,Max(N.nnf) as Nota, max (N.vlr) as Valor´);
SQL.Add(´from arqclie C, arqprnf N, arqrepr R´);
SQL.Add(´Where (C.v1 = N.ncl) and (N.nre = R.v1) and´ );
SQL.Add(´(c.v1 between :cli1 and :cli2) and´);
SQL.Add(´(n.nre between :rep1 and :rep2)´);
SQL.Add(´Group by C.v1, C.v2, C.v4, C.v5, C.v12,C.v13,R.v1, R.v2, C.datacad´);
SQL.Add(´order by R.v1,C.v1´);
Params[0].Value := mdtCliIni.Text;
Params[1].Value := mdtCliFim.Text;
Params[2].Value := mdtRepIni.Text;
Params[3].Value := mdtRepFim.Text;
Open;
end;
Screen.Cursor:= crDefault;
Tempo.Caption:= IntToStr(QryTemp.RecordCount);
btnImprime.Enabled:=true;
btnVoltar1.Enabled:=true;
except
begin
ShowMessage(´Erro de execução!´);
btnConfirma.Enabled:= true;
btnVoltar.Enabled:=true;
Screen.Cursor:= crDefault;
btnImprime.Enabled:=false;
btnVoltar1.Enabled:=False;
end;
end;
end;
GOSTEI 0
Afarias
02/10/2003
bom, em SGBD (como IB) NÃO tem como mostrar o progresso de um select! -- não sei quanto a paradox ou dbase mas acho tb não dá.
T+
T+
GOSTEI 0
Macario
02/10/2003
bom, em SGBD (como IB) NÃO tem como mostrar o progresso de um select! -- não sei quanto a paradox ou dbase mas acho tb não dá.
T+
Colegas realmente esta dificl. a função que tem neste forum que utiliza functions do BDE é meia complicada pra mim poder acertar ela para funcionar corretamente
Outra coisa que exponho...é que nao consigo executar qualquer outro procedimento quando o select é iniciado ate ele terminar por que será que ocorre isso. tipo o timer citado acima
GOSTEI 0
Marlon Spiess
02/10/2003
Oi, não entendi muito bem sua duvida, mas se vc vai jogar o resultado da query pra grid, não há como mostrar o progress, mas se for fazer um processo com o resultado, é só usa progressBar. Espero ter ajudado, qualquer duvida favor retornar.
Boa sorte
Boa sorte
GOSTEI 0
Macario
02/10/2003
O resultado vai para um grid sim... mas o problema é!
1. o select é sobre [b:0597e7650c]dbf[/b:0597e7650c]
2. voces ja tem ideia da demora que deve ser...certo?
3. a minha necessidade em ter [b:0597e7650c]´algo´[/b:0597e7650c] que mostre progresso
é para que o usuario nao pense que o micro travou, pois dependendo do select ele demora até mais de 5 minutos
por isso a necessidade de algo imitando um progresso
como ja disse tentei usar um timer para fazer um label ficar piscando mas quando ativo o timer e em seguida entra o select o timer para de funcionar.
espero que juntos achemos uma solução por que seria de muito valor a todos...ao menos é o penso
1. o select é sobre [b:0597e7650c]dbf[/b:0597e7650c]
2. voces ja tem ideia da demora que deve ser...certo?
3. a minha necessidade em ter [b:0597e7650c]´algo´[/b:0597e7650c] que mostre progresso
é para que o usuario nao pense que o micro travou, pois dependendo do select ele demora até mais de 5 minutos
por isso a necessidade de algo imitando um progresso
como ja disse tentei usar um timer para fazer um label ficar piscando mas quando ativo o timer e em seguida entra o select o timer para de funcionar.
espero que juntos achemos uma solução por que seria de muito valor a todos...ao menos é o penso
GOSTEI 0
Marlon Spiess
02/10/2003
Ok, vamos tentar resolver, me passa a query, para poder entender por completo a dimensão do seu problema e assim tentar resolve-lo em conjunto.
GOSTEI 0
Macario
02/10/2003
Marlon ja consegui um solução usando umas funções nesse topico
http://delphiforum.icft.com.br/forum/viewtopic.php?t=20796&start=0&postdays=0&postorder=asc&highlight=progress+progresso+progressbar
da uma olhada lá
valeu pela ajuda...
http://delphiforum.icft.com.br/forum/viewtopic.php?t=20796&start=0&postdays=0&postorder=asc&highlight=progress+progresso+progressbar
da uma olhada lá
valeu pela ajuda...
GOSTEI 0