DATAGRID SUPER LENTO AO CARREGAR MUITOS ITENS

JOHNSTEVE 16/12/2016 14:51:51
#469796
Boa galera, hoje me deparei numa situação em que o meu cliente me falou q meu sistema é lento.
bom galera, eu uso datagrid para exibir os dados do banco. só que hoje eu instalei no cliente. eu tinha migrado os dados. foram 6.502 produtos cadastrados..
eu fiz uma tela de cadastro de produtos no qual tem um botao para consultar. tudo oq tem no estoque cadastrado.. porra que lentidão ate fiquei surpreso fiquei ate sem jeito ao falar para o cliente q realmente tava muito lento para exibir 6.502 produtos.

galera vcs ja passaram por isso?
vcs usam o Datagrid?
será q essa lentidão tem como solucionar ?

falei com um brother parceiro, ele usava o datagrid e Mysql . com ele aconteceu o mesmo muito lento. ai ele saiu fora do datagrid e usou os componentes da DevesPress...

galera se vcs poderem da uma ajuda solucionar esse datagrid para ficar mais rapido ao carregar. é tanto que eu chamo minha função no load. demora muito para abrir a janela. :( tenso viu
NILSONTRES 16/12/2016 15:00:29
#469797
Resposta escolhida
Umas perguntas,
Quantas colunas tem o grid, consequentemente quantos campos vc chama nessa consulta ?
Porque mostrar todos os 6502 de uma só vez ?
Nunca é necessário carregar todos os registros, coloque campos ou controles para filtros.
A Maquina é cliente ou servidor ?
Basicamente, não existe lentidão do controle, alguma coisa contribui para isso.

JOHNSTEVE 16/12/2016 15:40:14
#469800
Citação:

:
Umas perguntas,
Quantas colunas tem o grid, consequentemente quantos campos vc chama nessa consulta ?
Porque mostrar todos os 6502 de uma só vez ?
Nunca é necessário carregar todos os registros, coloque campos ou controles para filtros.
A Maquina é cliente ou servidor ?
Basicamente, não existe lentidão do controle, alguma coisa contribui para isso.



NILSONTRES, vou mostrar meu SQL. são poucos campos.
ate mesmo não é so essa tela.. tem outras tela q carrego o estoque. com 4 campos. e mesmo assim demora :(

  Private Sub PCarregaDados()

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT codigo,tipoItem,descricao,grupo,undMedida,referencia,marca,fornecedor,codBarra,precoCompra,preco_custo,PrecoVenda,margLucro,preco_promocao,qtdEstoque,qtdMinima,ncm,CEST,Cst_CSOSN,Cst_Ipi,Cst_Cofins_Entrada,Cst_Cofins_Saida,Cst_Pis_Entrada,Cst_Pis_Saida,Sit_Tributaria,CFOP_Produto,dataCad FROM produtos[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
dgvProdutos.DataSource = dt

PFormataGridView()

lblTotalRegistro.Text = [Ô]Total de Registro(s) [Ô] & dgvProdutos.RowCount.ToString & [Ô].[Ô]

Catch ex As Exception
MsgBox([Ô]Ocorreu um erro ao tentar carregar a lista de produtos.[Ô], MsgBoxStyle.Information)
Finally
con.Close()
End Try
End Using
End Sub

NILSONTRES 16/12/2016 15:56:50
#469801
Como eu disse antes, carrega todos os registros, é claro que 6500 não são tantos assim, isso no caso de um filtro, não vejo necessidade de carregar todos os registros, embora isso já seja outra questão.
Quando você diz demora, qual o tempo ?
A Maquina é cliente ou servidor ?
Se for pouco registros e muita demora o problema pode estar na rede.
é Access ?, talvez precise compactar e reparar o banco.
JOHNSTEVE 16/12/2016 16:05:11
#469802
Citação:

:
Como eu disse antes, carrega todos os registros, é claro que 6500 não são tantos assim, isso no caso de um filtro, não vejo necessidade de carregar todos os registros, embora isso já seja outra questão.
Quando você diz demora, qual o tempo ?
A Maquina é cliente ou servidor ?
Se for pouco registros e muita demora o problema pode estar na rede.
é Access ?, talvez precise compactar e reparar o banco.



demora em torno de 10 a 20 segundos.
a maquina é um servidor porem não é um pc moderno. ate mesmo fiz esse teste na minha maquina de desenvolvimento deu no mesmo processo de demora para abrir a janela carregando o datagrid.
então descarta-se a possibilidade de ser em rede.
foda q ainda estou em Access, sem tempo para migrar. mais farei o mais rapido e breve possivel. primeiro quero finalizar esse ano com os clientes q ja estão certos. ai em janeiro vou trabalhar em migrar o banco o mais rapido possivel.
agora ate q da para trabalhar no access. pois num concorrente meu eu vi q tinha access ai o cliente dele é meu amigo fui ver la. tinha mais de 20 mil produtos cadastrado
o sistema foi feito em VB6.
e nao vejo essa demora no dele.

o meu em vb.net e access. e esta essa demora.
JOHNSTEVE 16/12/2016 16:50:22
#469803
NILSONTRES, achei o problema.
o problema nao era o datagrid. e sim o formatação q eu tava fazendo na unha.. colocando uma cor. ajustando as colunas.
ai o problema estava aqui no tamanho das colunas. veja eu comentei

   With DgvManutencao_NFe
With DgvManutencao_NFe.ColumnHeadersDefaultCellStyle
.Alignment = DataGridViewContentAlignment.MiddleCenter
.BackColor = Color.SteelBlue
.ForeColor = Color.White
.Font = New Font([Ô]Segoe UI Semibold[Ô], 11, FontStyle.Bold)

[ô] [ô][ô]// AQUI FAZ COM QUE AS COLUNAS FIQUE DA ALTURA DO CONTEUDO QUE ESTA NAS COLUNAS //
[ô] DgvManutencao_NFe.AutoSizeRowsMode = _
[ô]DataGridViewAutoSizeRowsMode.AllCells

End With
Tópico encerrado , respostas não são mais permitidas