Duvida com Query

Delphi

23/03/2007

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

Curtidas 0

Respostas

Alansvieceli

Alansvieceli

23/03/2007

sobe


GOSTEI 0
Marco Salles

Marco Salles

23/03/2007

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


GOSTEI 0
Alansvieceli

Alansvieceli

23/03/2007

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?????


GOSTEI 0
Marco Salles

Marco Salles

23/03/2007

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 ?????


GOSTEI 0
Alansvieceli

Alansvieceli

23/03/2007

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


GOSTEI 0
Alansvieceli

Alansvieceli

23/03/2007

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


GOSTEI 0
Marco Salles

Marco Salles

23/03/2007

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



GOSTEI 0
Marco Salles

Marco Salles

23/03/2007

é 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 ....


GOSTEI 0
Alansvieceli

Alansvieceli

23/03/2007

é 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


GOSTEI 0
POSTAR