16 Out 2019 23:01
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
17 Out 2019 09:55
20 Out 2019 23:40
19 Nov 2019 10:47
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:
19 Nov 2019 13:03
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