Vraptor Postado Novembro 30, 2005 Denunciar Share Postado Novembro 30, 2005 Boa tarde.Segue o codido:Dim Pesquisa as longRotina que adiciona valores a Matriz..........................................For Pesquisa = 1 to Ubound(Matriz())If Matriz(Pesquisa) = 0 then go to FECHANEXT oRsDados.AddNew oRsDados("Codigo") = PESQUISA oRsDados("Quantidade") = Matriz(PESQUISA) oRsDados.Update ProgressBar1.Value = ProgressBar1.Value + 1 DoEventsFECHANEXT:NEXT PesquisaO problema estah na demora para fechar o laço For ..Next, pois a matriz recebe uma dimenssao bem grande.Gostaria de saber se existe uma funçao interna ou comando do VB que retorne o inidice (Posiçao) que contenha valores.Eliminando essa busca na matriz inteira.Uma tecnica diferente "Para pesquisa" tambem seria muito util.alguém poderia me dar uma dica.AbraçosDaniel. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Novembro 30, 2005 Denunciar Share Postado Novembro 30, 2005 Você está adicionando tudo que não é igual a zero neste código. Você não queria fazer uma busca??não seria assim?? For Pesquisa = 1 to Ubound(Matriz()) If Matriz(Pesquisa) = CódigoProcurado oRsDados.AddNew oRsDados("Codigo") = PESQUISA oRsDados("Quantidade") = Matriz(PESQUISA) oRsDados.Update ProgressBar1.Value = ProgressBar1.Value + 1 End If NEXT Se eu entendi direito, é isso que você está querendo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vraptor Postado Dezembro 1, 2005 Autor Denunciar Share Postado Dezembro 1, 2005 Bom dia.não meu amigo."("Codigo") = PESQUISA" = Codigo do elemento da Matriz"oRsDados("Quantidade") = Matriz(PESQUISA)" = é a quantidade desse elemento encontrado dentro de um arquivo.Se a quantidade for 0 não me interessa.Veja:Do Until oRsRegistro.EOF MATRIZ_(oRsRegistro.Fields("Codigo")) = MATRIZ(oRsRegistro.Fields("Codigo")) + 1 ProgressBar1.Value = ProgressBar1.Value + 1 DoEvents oRsAcertos.MoveNext Loop........................For Pesquisa = 1 to Ubound(Matriz())If Matriz(Pesquisa) = 0 then go to FECHANEXToRsDados.AddNewoRsDados("Codigo") = PESQUISAoRsDados("Quantidade") = Matriz(PESQUISA)oRsDados.UpdateProgressBar1.Value = ProgressBar1.Value + 1DoEventsFECHANEXT:NEXT PesquisaAcontece que a matriz pode ser dimenssionada para casa dos milhoes, sendo que algumas sentenas possuem ou acontecem dentro do arquivo, esse arquivo é lido e passado para matriz.A intensao é diminuir o tempo de pesquisa, que mesmo estando dentro de uma matriz demora um bom tempo.Deu para entender ?Aguardo a resposta.Abraços.Daniel. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Dezembro 1, 2005 Denunciar Share Postado Dezembro 1, 2005 Você já verificou o que está realmente demorando? Se é o preenchimento da matriz ou se é a varredura?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vraptor Postado Dezembro 1, 2005 Autor Denunciar Share Postado Dezembro 1, 2005 Bom dia.O preechimento da Matriz demora muito pouco em relaçao a varredura.Abraços.Daniel. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Dezembro 1, 2005 Denunciar Share Postado Dezembro 1, 2005 Bom dia.O preechimento da Matriz demora muito pouco em relaçao a varredura.Abraços.Daniel. Ok, porém na varredura você inclui registros em uma tabela de um banco de dados, certo? Já experimentou retirar essa parte de inclusão e verificar se a varredura demora ainda assim? Porque, o que pode estar demorando aí é a inclusão do registro no banco de dados. Talvez utilizar uma transação aí aceleraria o processo (se for o caso da inclusão estar demorando).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vraptor Postado Dezembro 1, 2005 Autor Denunciar Share Postado Dezembro 1, 2005 Ok..Valeu.Daniel. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Vraptor
Boa tarde.
Segue o codido:
Dim Pesquisa as long
Rotina que adiciona valores a Matriz
......
......
......
......
......
......
......
For Pesquisa = 1 to Ubound(Matriz())
If Matriz(Pesquisa) = 0 then go to FECHANEXT
oRsDados.AddNew
oRsDados("Codigo") = PESQUISA
oRsDados("Quantidade") = Matriz(PESQUISA)
oRsDados.Update
ProgressBar1.Value = ProgressBar1.Value + 1
DoEvents
FECHANEXT:
NEXT Pesquisa
O problema estah na demora para fechar o laço For ..Next, pois a matriz recebe uma dimenssao bem grande.
Gostaria de saber se existe uma funçao interna ou comando do VB que retorne o inidice (Posiçao) que contenha valores.
Eliminando essa busca na matriz inteira.
Uma tecnica diferente "Para pesquisa" tambem seria muito util.
alguém poderia me dar uma dica.
Abraços
Daniel.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.