/ / Como mostrar a barra de progresso na barra de status quando a consulta SQL recuperar dados do SQL Server? - sql, vb.net, barra de progresso, barra de status

Como mostrar a barra de progresso na barra de status quando a consulta SQL recupera dados do SQL Server? - sql, vb.net, barra de progresso, barra de status

Eu tenho um aplicativo vb.net. No mesmo tem alguma consulta, cujo resultado será exibido em um DataGridView. Precisa de 2 a 3 min para executar minha consulta. Agora quero mostrar uma Barra de progresso na barra de status que exibirá o progresso da Recuperação de dados. Depois de Concluído, ele se ocultará da Barra de Status e um Rótulo mostrará "Concluído". Se algum especialista me ajudar, serei grato a ele.

Respostas:

2 para resposta № 1

Você pergunta cobre muito terreno. A primeira coisa que me vem à mente é: por que você tem uma consulta que demora tanto para ser executada e pode ser otimizada? Quão bit é o conjunto de dados que você está retornando? 10 linhas, 100 linhas, 100000s? Se o conjunto de dados é grande, você está usando paginação? O ADO.Net fornece um modelo de interface assíncrona, veja aqui SQLCommand assíncrono. Uma possibilidade é emitir sua consulta assíncrona, em seguida, mostrar sua barra de progresso e fechar a barra de progresso quando você receber uma notificação completa.

Outra opção é iniciar a consulta em outrothread, mas isso provavelmente não é necessário se você puder usar o SQLCommand assíncrono. No entanto, se você quiser mostrar uma barra de progresso que atualiza para mostrar% concluída, em oposição a um indicador de "espera", isso será um desafio. Por um lado, você não tem idéia de quanto tempo a consulta levará. Não é um processo determinístico, como ler um arquivo do disco, onde você pode estimar o tamanho do arquivo, a velocidade de transferência, etc. Eu não acho que existe algum mecanismo no SQL Server para consultar, "como vai a minha consulta?" Uma alternativa ruim e esbanjadora seria primeiro executar uma consulta para obter a contagem de registros esperada, dividir a consulta de busca em subconsultas menores com algum parâmetro de intervalo e executar em "pedaços". Novamente, isso não é eficiente. Talvez alguém saiba alternativas.