none
Datagridview populado lentidão - VB.NET RRS feed

  • Discussão Geral

  • Boa tarde pessoal

    Estou com um projeto em Vb.Net que consiste em importar dados de uma planilha de Excel para um Datagridview.

    O projeto esta funcionando tudo ok porem notei que quando vou movendo as barras laterais e inferiores o formulário apresenta grande lentidão para mover as colunas etc...

    Fiz o teste criando um projeto novo com somente 1 Form, 1 Datagrid e 1Botão e os códigos para fazer a importação e quando eu "populo" o datagridview com o conteudo ele apresenta esses legs.

     

    Alguem a ja passou por isso?

    Será que é configuração da máquina? (Não é uma máquina tão fraca)

    O Vb.NET é a versão 2015

     

     

    Os arquivos de Excel variam de 80 Linhas por 5 Colunas á 400 linhas e 5 colunas

     

    O código é esse:

     

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

    Sub ImportaEstoque()
            Dim Local
            Local = EndArquivo()
    
            If String.IsNullOrWhiteSpace(Local) Then
                MessageBox.Show("Nenhum arquivo foi selecionado.", "Informação.", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return
            End If
    
            '------------------------------
            Dim caminhoArquivoExcel As String = Local
            Dim nomePlanilhaExcel As String = "ESTQ" & "$"
            Dim conexaoOleDb As OleDbConnection = Nothing
            Dim ds As DataSet
            Dim cmd As OleDbDataAdapter
            '------------------------------
    
            Try
                'conexaoOleDb = New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Local & ";Extended Properties=Excel 8.0;")
                conexaoOleDb = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Local & ";Extended Properties='Excel 8.0;HDR=Yes'")
    
                'cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]", conexaoOleDb)
    
                cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]  Where UM Like '%" & "PC" & "%'", conexaoOleDb)
    
                cmd.TableMappings.Add("Table", "tabelaExcel")
                ds = New DataSet
                cmd.Fill(ds)
                dgvDados.DataSource = ds.Tables(0)
            Catch ex As Exception
                MessageBox.Show(ex.ToString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                conexaoOleDb.Close()
            End Try
    
            sbQtdItens.Text = "Encontrados " & dgvDados.RowCount.ToString & " itens."
    
        End Sub


     

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    segunda-feira, 4 de fevereiro de 2019 17:38

Todas as Respostas

  • Boa tarde a todos,

    Gostaria de postar aqui a solução de meu problema.

    O tratamento no datagridview teve uma melhora de desempenho de mais de 100% usando o código abaixo que permite fazer os filtros de forma "offline".

    Vou postar a fonte e o código para que outras pessoas com a mesma dificuldade.

    dim bs as new bindingsource
    
    bs.datasource = datagrivview1.datasource
    
    bs.filter = "codigo like '" & txtbox.text & "'
    
    datagrivdiew1.datasource = bs.datasource
    
    
    

    Abaixo segue o post original do autor

    https://social.msdn.microsoft.com/Forums/sqlserver/pt-BR/2811c32d-8b2c-4b62-a2c1-29ee9f4b9016/filtrando-em-datagridview-sem-conexo-com-banco-de-dados?forum=vscsharppt&prof=required

    quarta-feira, 6 de fevereiro de 2019 16:21