Fórum Duvida com Query #339236

23/03/2007

0

Boa tarde..meu probleme é o seguinte


tenho uma query com 2 mil registro..mas quero apresentar só os 200 primeiros registros...

alguem sabe algum evendo da query que eu trato quantos registros eu quero passar pra um ClientDataSet por exemplo...

ou pra um relátório QuickReport


bom..se alguem souber..agradeço..abraços


Alansvieceli

Alansvieceli

Responder

Posts

26/03/2007

Alansvieceli

sobe


Responder

Gostei + 0

26/03/2007

Marco Salles

no clientDataset te a propriedade packRecords..
coloque-a com o valor de 200
assim os registros serão retornados de 200 em 200 para o seu cds


Responder

Gostei + 0

26/03/2007

Alansvieceli

nunca tinha usando essa propriedade

  ClientDataSet1.Close;
  Query1.close;
  Query1.Open;
  ClientDataSet1.PacketRecords := 10;
  ClientDataSet1.Open;
  Query1.Close;


não ta funcionando..tem alguma coisa errado?????


Responder

Gostei + 0

26/03/2007

Marco Salles

ClientDataSet1.Close; Query1.close; Query1.Open; ClientDataSet1.PacketRecords := 10; ClientDataSet1.Open; Query1.Close;


voce não precisa ficar abrindo e fechando a query... O ClientDataSet ja faz isso

ClientDataSet1.Close; ClientDataSet1.PacketRecords := 10; ClientDataSet1.Open;


Porque não funciona ?????


Responder

Gostei + 0

26/03/2007

Alansvieceli

boa pergunta, não sei...
aparece todos os registro no meu DBGRID..

eu testei com uma tabela pequena q tem só 51 registros..e queria fazer aparecer só 10

mas não rolou..não tenho nem idéia do que deu..pq não deu erro


Responder

Gostei + 0

26/03/2007

Alansvieceli

resolvido

  ClientDataSet1.Close;
  ClientDataSet1.PacketRecords := 3;
  ClientDataSet1.FetchOnDemand := false;
  ClientDataSet1.Open;


tive q colocar esse FetchOnDemand para não trazer todos os registro..

valeu pela força...
vou ver se isso funciona no meu relatório :P


Responder

Gostei + 0

26/03/2007

Marco Salles

boa pergunta, não sei... aparece todos os registro no meu DBGRID.. [b:4b60f2d26f]eu testei com uma tabela pequena q tem só 51 registros..e queria fazer aparecer só 10[/b:4b60f2d26f] mas não rolou..não tenho nem idéia do que deu..pq não deu erro


há tabela pequena não faz sentido...

Voce disse inicilamente que :

tenho uma query com 2 mil registro..mas quero apresentar só os 200 primeiros registros...


com tabela [u:4b60f2d26f]pequena[/u:4b60f2d26f] esse processo de pacote e muito rápido e automatico e voce nem percebe que somente os dez registros estarão no seu DbGrid , ainda mais que a aréa visivel do seu DbGroid pode suportar mais de dez registros

Para tabela pequena faça o seguinte , coloque a propriedade [b:4b60f2d26f]FetchOnDemand em True [/b:4b60f2d26f]e PackRecord em 10.... Para trazer os próximos registros coloque em um Botão e digite clientDataset1.GetNextPacket



Responder

Gostei + 0

26/03/2007

Marco Salles

é nos respondemos simultaneamente o Tópico , mas veja que ;
Código: ClientDataSet1.Close; ClientDataSet1.PacketRecords := 3; ClientDataSet1.FetchOnDemand := false; ClientDataSet1.Open; tive q colocar esse FetchOnDemand para não trazer todos os registro..


nesse modelo , tal como eu comentei logo em seguida , voce deve usar o
clientDataset1.GetNextPacket , caso queira trazer mais um Grupo de 10 registros... Porque usando o FetchOnDemand quem fica com o controle dos envios e recebimentos dos pacotes é ´voce´ :

Ja com .FetchOnDemand é o proprio O próprio ClientDataSet detecta quando mais registros são necessário e traz por demanda ... Muitas das vezes em tabelas pequenas este efetio não parece surgir efetio

Como eu disse anteirormente , eu não foi para esta linha porque voce colocou uma situção com uma tabela com 2000 Registros e resolveu testar com uma tabela pequena ....


Responder

Gostei + 0

28/03/2007

Alansvieceli

é cara..valeu..era isso mesmo

eu queria fazer isso pq meu cliente queria poder dizer quantos registros ele mostraria num relatorio..de 50 ou de 50.000 registros, usando o clientdataset me facilitoiu pq não precisei mexer no SQL...


abraços..valeu pela ajuda


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar