Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hudsonfilipee

Estrutura de Repetição

Recommended Posts

Bom dia à todos!

 

Sou novo aqui no fórum e em programação com o visual basic.

Estou utilizando o VS2013 para desenvolver minha aplicações, conectato à um banco de dados SQL Server 2008 e usando conexão via ADO.

 

Estou desenvolvendo uma aplicação com interação com Banco de Dados SQL Server e quando compilo o código, o mesmo demora muito para executar (40 min à 1hr).

 

Minha aplicação subscreve mais ou menos 10.000 linhas em uma planilha pré-formatada... Já analisei todo o código e percebi que o gargalo está na estrutura de repetição, onde uso o Do While/Loop para subscrever os dados que são captados pelo recordset, e desta forma a minha aplicação se torna inviável pelo grande tempo de execução.

 

Não sei se estou fazendo algo errado ou se não tem jeito para encurtar o tempo de execução da minha a aplicação, já pesquisei várias formas, incluindo boas práticas do código, excluí instruções inúteis, declarei variáveis em classes...

 

Eu pesquisei sobre o Loop infinito, mas creio que não esteja ocorrendo isto porque a aplicação, mesmo sendo muito demorada, está gerando os dados.

 

Realizei testes do loop e o mesmo demora 20 segundo para subscrever uma linha, imagine se for em 10.000 linhas... vai ser uma eternidade!

 

 

Segue abaixo o Loop:

 

If Not rs.EOF Then

Do While Not rs.EOF
ExcelApp.Range("A" & i + 1).Value = rs(1)
ExcelApp.Range("B" & i + 1).Value = rls2)
ExcelApp.Range("C" & i + 1).Value = rls3)
ExcelApp.Range("D" & i + 1).Value = rls4)
ExcelApp.Range("E" & i + 1).Value = rls5)
rs.MoveNext()
i = i + 1
Loop
End If
cn.Close()

 

 

Será se existe alguma outra estrutura de repetição que seja mais rápida do que a "DO WHILE" ?

 

Conto a ajuda de vocês!!! :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O For parece ser mais rápido que o while em alguns casos. O problema pode ser que ele está demorando para abrir o arquivo que você referenciou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado!

 

Mas eu não consegui utilizar o for, pois quando utilizo ele repete em todas as linhas o valor da primeira linha....

 

Teria como você me mostrar como ficaria esse código com o a função for, para que eu possa analisar onde está sendo o meu erro?

 

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O For só vai funcionar se você souber o número de linhas que o arquivo tem. Mas cara, a diferença de velocidade entre o For e o While é muito pequena. Ambas são estruturas de programação extremamente rápidas, se está lento o problema é ou no código que demora para realizar determinada ação ou então na abertura do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.