Capturar o tempo de um update de uma Query
Saudações gente,
estou trabalhando numa aplicação com Delphi 7 Enterprise, PostGreSql 8.1 e Zeos 6.5.1. Gostaria de saber se é possível capturar o progresso de uma query e jogar num gauge ou ProgressBar. Estou realizando update com sub-consultas e o processo fica um pouco lento. Tem como eu jogar o tempo que a query leva para realizar o update num gauge ou progressbar? Sei que com o BDE existe essa possibilidade (só não sei como fazer) mas não sei se existe utilizando a Zeos ou qualquer outro componente de acesso.
Agradeço desde já toda ajuda.
estou trabalhando numa aplicação com Delphi 7 Enterprise, PostGreSql 8.1 e Zeos 6.5.1. Gostaria de saber se é possível capturar o progresso de uma query e jogar num gauge ou ProgressBar. Estou realizando update com sub-consultas e o processo fica um pouco lento. Tem como eu jogar o tempo que a query leva para realizar o update num gauge ou progressbar? Sei que com o BDE existe essa possibilidade (só não sei como fazer) mas não sei se existe utilizando a Zeos ou qualquer outro componente de acesso.
Agradeço desde já toda ajuda.
Zooropa
Curtidas 0
Respostas
Zooropa
08/02/2007
Pessoal, alguém sabe se é possível realizar esse processo?
Agradeço qualquer ajuda.
Agradeço qualquer ajuda.
GOSTEI 0
Zooropa
08/02/2007
Gente,
eu só quero saber se é possível realizar isso...se não for eu vou tentar outra coisa mas preciso saber se existe essa possibilidade...
eu só quero saber se é possível realizar isso...se não for eu vou tentar outra coisa mas preciso saber se existe essa possibilidade...
GOSTEI 0
Callegaro
08/02/2007
Como é implementado seu código? Se você utiliza um loop que vai varrendo uma query e fazendo alterações em outra, daí dá pra colocar um progresso. Porém, se tua query é somente uma execução (por exemplo: update pedidos set total = sum(precos)), daí não dá.
GOSTEI 0
Zooropa
08/02/2007
Saudações amigo,
a query é mais ou menos assim:
É um pouco mais complexo que isso mas este update altera todos os registros da tabela de uma só vez de dois campos de valores (neste caso, 2246 registros) porém a subconsulta é maior (possui tabelas joinadas) e os campos de checagem também. A alteração funciona e leva cerca de 50 segundos porém eu queria passar isso pra um gauge pra o usuário saber o que está acontecendo e não pensar que está travado.
Detalhe: fora esta eu possuo mais duas queries do mesmo tipo dentro da mesma procedure.
Obrigado.
a query é mais ou menos assim:
update tabela set valor= (select ndebito from tcontabil where cod_usu = ´0079´) where cod_usu = ´0079´
É um pouco mais complexo que isso mas este update altera todos os registros da tabela de uma só vez de dois campos de valores (neste caso, 2246 registros) porém a subconsulta é maior (possui tabelas joinadas) e os campos de checagem também. A alteração funciona e leva cerca de 50 segundos porém eu queria passar isso pra um gauge pra o usuário saber o que está acontecendo e não pensar que está travado.
Detalhe: fora esta eu possuo mais duas queries do mesmo tipo dentro da mesma procedure.
Obrigado.
GOSTEI 0
Gm.gui
08/02/2007
cara, vc pode capturar o time antes da execução e depois no fim, e calcular, de outra forma, vc tem que pesquisar muito, eu ainda não vi ninguem conseguir...essa é a forma usada....
GOSTEI 0
Ricknetbr
08/02/2007
No paradox dava, mas no postgres não. Você só terá o retorno do banco quando toda a instrução antes do commit for executada.
Na realidade, é indiferente para o usuário se está atualizando o primeiro ou o último, ele quer somente saber se o programa não travou. O tempo que isso vai levar, será o tempo necessário.
Eu pessoalmente coloco uma barra de progresso que vai ´andando´ e faço a verificação para ver se não perdi a conexão com o banco. Assim o usuário sabe que o aplicativo não travou.
Espero que ajude.
Abraços
Ricardo.
Na realidade, é indiferente para o usuário se está atualizando o primeiro ou o último, ele quer somente saber se o programa não travou. O tempo que isso vai levar, será o tempo necessário.
Eu pessoalmente coloco uma barra de progresso que vai ´andando´ e faço a verificação para ver se não perdi a conexão com o banco. Assim o usuário sabe que o aplicativo não travou.
Espero que ajude.
Abraços
Ricardo.
GOSTEI 0
Aerreira
08/02/2007
update tabela set valor= (select ndebito from tcontabil where cod_usu = ´0079´) where cod_usu = ´0079´
Caro Zooropa, você faz essa atualização apenas num único COD_USU de cada vez manualmente, ou faz um loop pegando todos os cod_usu´s e em cada um deles executa esse update? Se for isso, então coloque o Cauge/ProgressBar no loop de cod_usu. Não ficará como deseja, mas já vai melhorar seu resultado.
GOSTEI 0