Paginação com Firedac
02/11/2019
0
boa noite,
tenho uma sincronização onde a tabela origem com 10.000 registros e o sincronismo esta muito lento, preciso fazer uma paginação para trazer 200 registros por vez usando firedac num exemplo como esse abaixo.
FDQueryOrigem.open; //aqui vem 10.000
FDQueryOrigem.First;
while not FDQueryOrigem.eof do
begin
FDQueryDestinoID.Asinteger:= FDQueryOrigemID.Asinteger;
................
FDQueryOrigem.Next;
end;
Alguém pode me dar um exemplo de paginação nesse código usando firedac, para de vez trazer os 10.000 trazer os primeiros 500 + 500 e assim por diante?
Grato..
tenho uma sincronização onde a tabela origem com 10.000 registros e o sincronismo esta muito lento, preciso fazer uma paginação para trazer 200 registros por vez usando firedac num exemplo como esse abaixo.
FDQueryOrigem.open; //aqui vem 10.000
FDQueryOrigem.First;
while not FDQueryOrigem.eof do
begin
FDQueryDestinoID.Asinteger:= FDQueryOrigemID.Asinteger;
................
FDQueryOrigem.Next;
end;
Alguém pode me dar um exemplo de paginação nesse código usando firedac, para de vez trazer os 10.000 trazer os primeiros 500 + 500 e assim por diante?
Grato..
Jose Medeiros
Curtir tópico
+ 0
Responder
Posts
03/11/2019
Tone Costa.
Vc teria duas soluções.
1ª Soluçao
Trabalhar com as propriedades
FetchOptions -> RecsMax,
FetchOptions -> RecsSkip,
FetchOptions -> RowsetSize.
2ª Solução
Se eu estivesse trabalhando com firebird
Procedure Paginar(Pagina,QtdLinha : Integer);
Const
_sql = '' SELECT FIRST %D SKIP %D * FROM TABELA '';
Var
sql : String;
begin
sql := format(_sql,[qtdLinha,(Pagina-1*QtdLinha)]);
Qry.Open(s);
end;
e controlaria a pagina que seria mostrada. Se os parametros fossem Pagina =1, QtdLinha = 500 o select ficaria assim
select first 500 skip 0 * from tabela (o resultset vai trazer os primeiros 500 registros)
1ª Soluçao
Trabalhar com as propriedades
FetchOptions -> RecsMax,
FetchOptions -> RecsSkip,
FetchOptions -> RowsetSize.
2ª Solução
Se eu estivesse trabalhando com firebird
Procedure Paginar(Pagina,QtdLinha : Integer);
Const
_sql = '' SELECT FIRST %D SKIP %D * FROM TABELA '';
Var
sql : String;
begin
sql := format(_sql,[qtdLinha,(Pagina-1*QtdLinha)]);
Qry.Open(s);
end;
e controlaria a pagina que seria mostrada. Se os parametros fossem Pagina =1, QtdLinha = 500 o select ficaria assim
select first 500 skip 0 * from tabela (o resultset vai trazer os primeiros 500 registros)
Responder
03/11/2019
Jose Medeiros
Vc teria duas soluções.
1ª Soluçao
Trabalhar com as propriedades
FetchOptions -> RecsMax,
FetchOptions -> RecsSkip,
FetchOptions -> RowsetSize.
2ª Solução
Se eu estivesse trabalhando com firebird
Procedure Paginar(Pagina,QtdLinha : Integer);
Const
_sql = '' SELECT FIRST %D SKIP %D * FROM TABELA '';
Var
sql : String;
begin
sql := format(_sql,[qtdLinha,(Pagina-1*QtdLinha)]);
Qry.Open(s);
end;
e controlaria a pagina que seria mostrada. Se os parametros fossem Pagina =1, QtdLinha = 500 o select ficaria assim
select first 500 skip 0 * from tabela (o resultset vai trazer os primeiros 500 registros)
boa noite,
no meu caso trabalho com mysql, as propriedades no meu caso esta assim:
FetchOptions -> RecsMax = -1
FetchOptions -> RecsSkip = -1
FetchOptions -> RowsetSize = 50
seria isso mesmo ou teria que alterar esses valores.
grato pela atenção
1ª Soluçao
Trabalhar com as propriedades
FetchOptions -> RecsMax,
FetchOptions -> RecsSkip,
FetchOptions -> RowsetSize.
2ª Solução
Se eu estivesse trabalhando com firebird
Procedure Paginar(Pagina,QtdLinha : Integer);
Const
_sql = '' SELECT FIRST %D SKIP %D * FROM TABELA '';
Var
sql : String;
begin
sql := format(_sql,[qtdLinha,(Pagina-1*QtdLinha)]);
Qry.Open(s);
end;
e controlaria a pagina que seria mostrada. Se os parametros fossem Pagina =1, QtdLinha = 500 o select ficaria assim
select first 500 skip 0 * from tabela (o resultset vai trazer os primeiros 500 registros)
boa noite,
no meu caso trabalho com mysql, as propriedades no meu caso esta assim:
FetchOptions -> RecsMax = -1
FetchOptions -> RecsSkip = -1
FetchOptions -> RowsetSize = 50
seria isso mesmo ou teria que alterar esses valores.
grato pela atenção
Responder
Clique aqui para fazer login e interagir na Comunidade :)