Clipper On Line • Ver Tópico - Preechimento de grid

Preechimento de grid

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Preechimento de grid

Mensagempor Nascimento » 16 Out 2019 23:01

amigos eu tenho um banco que esta com mais de 20 mil registros
e preciso preencher uma grid com eles
ja fiz de varias formas , mais ficou muito lento!
teria alguma forma de a grid preencher rapido com uma quantidade dessas de registros? usando a minigui extended

abaixo um trecho do meu codigo


aData := {}
select arq
set order to 1
goto top
while !eof()
Aadd(aData,{ sui, dtoc(data), entr,said, strzero(nnota,5), placa, str(n_cartela,5), iif(bonus,"T","F"),trans(diaria,'@E 999,999.99'),trans(bar,'@E 999,999.99') , trans(vldesc,'@E 999,999.99'), trans(vlbonus,'@E 999,999.99'),dtoc(datamov), str(turno,2), codcaixa, codport})
skip
end do

define grid placa
           parent Displaca_form
           col 10
           row 50
           width 700 //390
           height 400
           headers {"SUITE","DATA","ENTR", "SAIDA", "NOTA", "PLACA", "CARTELA", "BONIF.", "PERMANENCIA", "CONSUMO", "DESCONTO", "BONUS", "DT. MOV", "TURNO", "TEL.", "PORT."}
           widths {60,80,80,70,70,70,70,70,70,70,80,70,80,70,70,70}
           value 1
           fontname 'Arial'
           fontsize 9
           fontbold .t.
           backcolor {255,255,206}
*           fontcolor BLACK
*          nolines .t.
*           showheaders .f.
           tooltip 'Exibe o Consumo Geral da Suite'
*          justify { BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT }
           on init Preenche_grid()   
       end grid

Static Function Preenche_grid
for nPos := 1 to len(aData)

    doMethod("Displaca_form","placa", "addItem", aData[nPos] )

next



até funcionou , mais da uma travada até no sistema, depois de um bom tempo que aparece a grid preenchida

tentei com browse mais os campos ficaram meio loucos...
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 590
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 94 vezes
Mens.Curtidas: 66 vezes

Preechimento de grid

Mensagempor MSDN » 17 Out 2019 09:55

Nesses casos quando tem muita informação, só tem uma maneira de lidar, só preenche o grid com informações depois de uma pesquisa ( filtro ), e mesmo assim tomando certos cuidados para que o filtro não traga os 20 mil registros de uma só vez.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 779
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 164 vezes
Mens.Curtidas: 108 vezes

Preechimento de grid

Mensagempor Nascimento » 20 Out 2019 23:40

resolvido como vc sugeriu o uso de browse envez de grid!!
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 590
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 94 vezes
Mens.Curtidas: 66 vezes

Preechimento de grid

Mensagempor NiltonGM » 19 Nov 2019 10:47

A pratica para usar GRID ou Browser sempre é carregar por páginas, carregue um limite de 1000 registros por página exemplo, poderia ser 300 registros por página se quiser...
Disponibilize botões para avançar ou retroceder as páginas...
Veja meu aplicativo carregando do MySQL para uma GRID na imagem abaixo:
Anexos
Anotação 2019-11-19 104543.png
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 340
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 214 vezes
Mens.Curtidas: 13 vezes

Preechimento de grid

Mensagempor Heero » 19 Nov 2019 12:24

NiltonGM escreveu:A pratica para usar GRID ou Browser sempre é carregar por páginas, carregue um limite de 1000 registros por página exemplo, poderia ser 300 registros por página se quiser...
Disponibilize botões para avançar ou retroceder as páginas...
Veja meu aplicativo carregando do MySQL para uma GRID na imagem abaixo:


Boa, como você fez ? Criou uma VIEW ou Array ou DBF temporário ?

Abraços.
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
Heero
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 43
Data de registro: 13 Jul 2015 22:10
Cidade/Estado: Guarulhos/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Preechimento de grid

Mensagempor NiltonGM » 19 Nov 2019 13:03

Olá Heero, não uso DBF a muito séculos...
Nos eventos dos botões avançar, retroceder, ir direto para uma página, etc você cria a clausula WHERE e LIMIT do SELECT
Exemplo do evento do botão próxima página:
Procedure clientes_btnProximaPagina_Action()
    Local nPag := clientes.Text_pagina.Value
    Local nMaxPag := hb_Val( HB_USUBSTR( clientes.Label_QtdePagina.Value, 4 ) )
    Local nMinimo

    IF nPag < nMaxPag
       nPag++
       pCli_cSQL := SQLClientes( IF(pCli_lFiltro, pCli_cWHERE, Nil) )    // Essa função recria a string SQL conforme filtros ativo na grade
       pCli_cSQL += OrderByClientes()    // Essa função cria a string "ORDER BY " conforme definido na grade
       nMinimo := ( nPag * hb_Val(clientes.Combo_RegPorPagina.DisplayValue) ) - hb_Val(clientes.Combo_RegPorPagina.DisplayValue)   // o mínimo na clausula LIMIT
       pCli_cLIMIT := hb_NToS(nMinimo) + "," + LTrim(Clientes.Combo_RegPorPagina.DisplayValue)
       pCli_cSQL += "LIMIT " + pCli_cLIMIT    // O SELECT ficaria algo assim: "SELECT coluna1, coluna2,..colunax FROM CLIENTES WHERE filtro ORDER BY ordem LIMIT 300,600" pega registros de 300 a 600 no caso de 300 registros por página.
       clientes.Text_pagina.Value := nPag
       CarregaGridClientes()    // Essa fução zera a GRID e recarrega com o novo SELECT
    ENDIF
Return

Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 340
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 214 vezes
Mens.Curtidas: 13 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro