17 Jul 2018 11:25
17 Jul 2018 15:06
aMeuArray:=TQuery():new():execute('SELECT CAMPO1, CAMPO2 FROM ESTOQUE WHERE STATUS='A'') // classe fictícia
AEVAL(aMeuArray, {|a, n|aMeuArray[n]:={a[1], a[2], .F.}}) // adicionando o 3º valor.
joaorenes escreveu:Usando o alias diretamente, eu consigo listar mais de 100000 registros de forma instântanea, mas quando tento enviá-los para um array aparece a lentidão (mais de 2 min). Como a linguagem advpl, até onde eu sei, deriva do clipper, gostaria de um apoio.
Abaixo está a estrutura que uso para preencher o array:
Local aMeuArray := {}
meuAlias->(DbGotop())
While !meuAlias->(EOF())
aadd(aMeuArray ,{meuAlias->campo1,meuAlias->campo2, .F.})
meuAlias->(DbSkip())
Enddo
Dúvida: há alguma outra forma de fazer o preenchimento do array com as informações vindas do alias?
17 Jul 2018 15:51
17 Jul 2018 18:55
joaorenes escreveu: ao passar o Alias da tabela diretamente para um determinado componente do tipo browse (usei o TCBrowse), ele mostra todos os registros' da tabela imediatamente.
qualquer operação que faço para percorrer todos os registros acaba sendo lenta
18 Jul 2018 08:23
18 Jul 2018 08:30
Já em array.... vai ter que ler o arquivo inteiro antes de apresentar alguma coisa.
Se for arquivo gigante...
24 Jul 2018 00:05
24 Jul 2018 11:50
PROBLEMA: a lentidão está no item 1, quando tenho que preencher o primeiro array (que será mostrado no item 2). Faço um DbSelectArea() na minha tabela e filtro com o SET FILTER TO. O problema está na lógica abaixo, que - conforme mencionei anteriormente - preenche o primeiro array: