Duvida com Query
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
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
Curtidas 0
Respostas
Alansvieceli
23/03/2007
sobe
GOSTEI 0
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
coloque-a com o valor de 200
assim os registros serão retornados de 200 em 200 para o seu cds
GOSTEI 0
Alansvieceli
23/03/2007
nunca tinha usando essa propriedade
não ta funcionando..tem alguma coisa errado?????
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
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
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
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
23/03/2007
resolvido
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
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
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
23/03/2007
é nos respondemos simultaneamente o Tópico , mas veja que ;
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 ....
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
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
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