Ir para conteúdo
Fórum Script Brasil
  • 0

Pesquisa Em Matriz


Vraptor

Pergunta

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

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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 FECHANEXT

oRsDados.AddNew

oRsDados("Codigo") = PESQUISA

oRsDados("Quantidade") = Matriz(PESQUISA)

oRsDados.Update

ProgressBar1.Value = ProgressBar1.Value + 1

DoEvents

FECHANEXT:

NEXT Pesquisa

Acontece 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.

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...