none
Loop em código WebBrowser Vb2008 RRS feed

  • Pergunta

  • Caros, estou tentando montar uma rotina onde será necessário conectar em um site, informar alguns parametros e realizar o download do arquivo, isso automaticamente. A parte de fornecer os parametros eu consegui, mas não consigo criar um laço de repetição para fazer o download do arquivo com os dados indicados, tendo em vista que após este download os dados serão atualizados e será feito um novo download e assim sucessivamente até o fim dos arquivos de entrada.

    Para um arquivo o código funciona, pois ao fim do procedimento do botão o download é feito, mas eu preciso que este download seja feito antes do procedimento do botão finalizar.

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    
            Dim F_inicial(), F_final(), SiglaUF(), delimitador, arquivo, stLINHA(), conteudoLido, conteudoLista() As String
            Dim l_freq, l_est As Integer
    
            'Preenche os arquivos de frequencia-----------------------------------------------------------------------------
    
            arquivo = "c:\Frequencias.txt"
            File.OpenText(arquivo)
            delimitador = ","
            'Recebe todos os dados do txt
            stLINHA = File.ReadAllLines(arquivo)
            l_freq = stLINHA.Length - 1
    
            ReDim F_inicial(l_freq)
            ReDim F_final(l_freq)
    
            For i = 0 To (l_freq)
                conteudoLido = ""
                conteudoLido = stLINHA(i)
                conteudoLista = Split(conteudoLido, delimitador)
                F_inicial(i) = conteudoLista(0)
                F_final(i) = conteudoLista(1)
            Next
            FileClose()
    
            'Preenche com os nomes de Estados-------------------------------------------------------------------------------
    
            arquivo = "c:\Estados.txt"
            File.OpenText(arquivo)
            'Recebe todos os dados do txt
            stLINHA = File.ReadAllLines(arquivo)
            l_est = stLINHA.Length - 1
    
            ReDim SiglaUF(l_est)
    
            For i = 0 To (l_est)
                SiglaUF(i) = stLINHA(i)
            Next
    
            'Realiza o loop com as frequencias dentro de cada estado---------------------------------------------------------
            WebBrowser1.Document.GetElementById("IndFiltro0").InvokeMember("click")
            WebBrowser1.Document.GetElementById("IndApresentacao8").InvokeMember("click")
            WebBrowser1.Document.GetElementById("pIdtUnidadeTransmissao").SetAttribute("Value", 2)
            WebBrowser1.Document.GetElementById("pIdtUnidadeRecepcao").SetAttribute("Value", 2)
            WebBrowser1.Document.GetElementById("IndGrupoEstacao1").InvokeMember("click")
            For i = 0 To l_est
    
                WebBrowser1.Document.GetElementById("SiglaUF").SetAttribute("Value", SiglaUF(i))
    
                For j = 0 To l_freq
    
                    WebBrowser1.Document.GetElementById("pMedRecepcaoInicial").SetAttribute("Value", F_inicial(j))
                    WebBrowser1.Document.GetElementById("pMedTransmissaoInicial").SetAttribute("Value", F_final(j))
                    WebBrowser1.Document.GetElementById("botaoFlatDownloadTXT").InvokeMember("click")
                    Application.DoEvents()
                    'WebBrowser1.Document.GetElementById("botaoFlatDownloadTXT").Focus()
                    'SendKeys.SendWait("{ENTER}")
    
                Next
    
    
            Next
    
    
    
        End Sub

    sexta-feira, 3 de maio de 2013 14:24

Respostas

  • Thiago,

    Não sei se a rotina que você colocou funciona corretamente, porém se eu fosse fazer o que você quer faria da seguinte forma:

    1 - Obter uma Lista de Arquivos que você precisa fazer download
    2 -  Percorrer a Lista chamando um método genérico que receba como parametro  
         2.1 - Fazer o download do arquivos e obter o binário dele em memória.
         2.2 - Antes de inserir no banco ou em um diretório físico checar o tamanho do binário do mesmo, para verificar se esse arquivo já foi baixado, se foi não será armazenado.

    Por que o procedimento de download só funciona quando o fluxo do botão download termina? Provavelmente porque esse procedimento depende de um PostBack certo?
    Então você pode manter uma fila de arquivo na memória, quando você fazer um PostBack para o servidor, você envia todos de uma única vez.

    Abraços,

    Leandro Rodrigues


    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida

    quarta-feira, 8 de maio de 2013 13:35