Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
eduardoserrao Novato
Registrado: Segunda-Feira, 28 de Novembro de 2016 Mensagens: 78
|
Enviada: Seg Dez 05, 2016 10:41 am Assunto: Lentidão ao carregar muitos registros no TListView |
|
|
Bom dia pessoal,
Estou com um problema ao tentar carregar uma consulta no meu listview, no meu banco de dados tenho 15.000 registros e na hora que tento carregar esses registros meu aplicativo fica lento e se eu tentar tocar na tela ele pede para fechar.
Estou carregando meu listview da seguinte forma:
Código: | procedure TfrmCadProduto.carregarListaProdutos;
var
Item : TListViewItem;
begin
lsViewProdutos.Items.Clear;
DM.qryProdutos.SQL.Clear;
DM.qryProdutos.SQL.Text := 'SELECT DESCRICAO, VALOR, COD_BARRA, QTDE_ESTOQUE FROM PRODUTO';
DM.qryProdutos.Active := True;
while not DM.qryProdutos.Eof do
begin
Item := lsViewProdutos.Items.Add;
Item.Text := DM.qryProdutosDESCRICAO.Text;
Item.Data[TMultiDetailAppearanceNames.Detail1] := 'Valor Varejo: ' + DM.qryProdutosVALOR.Text ;
Item.Data[TMultiDetailAppearanceNames.Detail2] := 'Código de Barra: ' + DM.qryProdutosCOD_BARRA.Text;
Item.Data[TMultiDetailAppearanceNames.Detail3] := 'Quantidade em Estoque: ' + DM.qryProdutosQTDE_ESTOQUE.Text;
DM.qryProdutos.Next;
end;
DM.qryProdutos.Active := False;
end; |
Alguém tem alguma ideia de como posso resolver esse problema?
Abraços |
|
Voltar ao Topo |
|
|
fariaregis Novato
Registrado: Sábado, 23 de Mai de 2009 Mensagens: 9
|
Enviada: Seg Dez 19, 2016 6:02 pm Assunto: |
|
|
Porque voce vai carregar 15 mil registros de uma so vez ? Nem querendo da para ler 15 mil de uma vez.
Parametriza melhor o seu sql exemplo
SELECT DESCRICAO, VALOR, COD_BARRA, QTDE_ESTOQUE FROM PRODUTO where datainicio and datafim
ou sei la ha inúmeros parâmetros que você pode colocar aqui! |
|
Voltar ao Topo |
|
|
mac_carvalho Novato
Registrado: Sexta-Feira, 23 de Mai de 2014 Mensagens: 12
|
|
Voltar ao Topo |
|
|
wolverinefarah Colaborador
Registrado: Sábado, 17 de Junho de 2006 Mensagens: 1770
|
Enviada: Sex Jan 27, 2017 1:09 pm Assunto: |
|
|
fariaregis escreveu: | Porque voce vai carregar 15 mil registros de uma so vez ? Nem querendo da para ler 15 mil de uma vez.
Parametriza melhor o seu sql exemplo
SELECT DESCRICAO, VALOR, COD_BARRA, QTDE_ESTOQUE FROM PRODUTO where datainicio and datafim
ou sei la ha inúmeros parâmetros que você pode colocar aqui! |
Concordo. Bem capaz de possível estouro de memória. _________________ Fernando Farah
PROGRAMADOR PROGRESS
PROGRAMADOR DELPHI + FIREBIRD |
|
Voltar ao Topo |
|
|
eduardoserrao Novato
Registrado: Segunda-Feira, 28 de Novembro de 2016 Mensagens: 78
|
Enviada: Qua Fev 01, 2017 10:02 am Assunto: |
|
|
Era porque eu estava percorrendo meu TFDQuery para povoar meu listview e ele estava trazendo todos os registros.
Eu adicionei um TDataSetProvider e setei meu TFDQuery na propriedade dataset e adicionei também um TClientDataSet com o packetrecords = 100 e setei meu TDataSetProvider para a propriedade providerName e depois percorri meu TClientDataSet para popular a lista.
desta maneira ele trouxe por demanda. |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Sex Fev 03, 2017 2:27 pm Assunto: |
|
|
fariaregis escreveu: | Porque voce vai carregar 15 mil registros de uma so vez ? Nem querendo da para ler 15 mil de uma vez.
Parametriza melhor o seu sql exemplo
SELECT DESCRICAO, VALOR, COD_BARRA, QTDE_ESTOQUE FROM PRODUTO where datainicio and datafim
ou sei la ha inúmeros parâmetros que você pode colocar aqui! |
tb concordo. ning em sã consciencia vai ler 15 mil registros.
vc tem q criar uma tela de pesquisa e listar somente pelo criterio da pesquisa. e so lista depois q o usuario digitar alguma coisa, senao vc "mata" seu app _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
|