Exibindo Registros em Duplicidade na Dbgrid com DBexpress
Amigos,
estou usando o Delphi 7 + DBExpress. Estou definindo a propriedade PackageRecord := 30.
O problema é que a dbgrid exibe 30 registros e quando vou percorrendo os registros ao chegar no 30º registro volta para o primeiro, fica nesse loop. Só funciona quando com o mouse, movo a barra de rolagem direto para o final.
estou usando o Delphi 7 + DBExpress. Estou definindo a propriedade PackageRecord := 30.
O problema é que a dbgrid exibe 30 registros e quando vou percorrendo os registros ao chegar no 30º registro volta para o primeiro, fica nesse loop. Só funciona quando com o mouse, movo a barra de rolagem direto para o final.
Afo
Curtidas 0
Respostas
Dadonas
01/09/2006
Amigo, não consegui entender seu problema, mas para percorrer os registros de uma grid, faz o seguinte:
while not(Query.Eof) do begin //Intruções Query.Next; end;
GOSTEI 0
Afo
01/09/2006
Amigos, desculpe se não fui muito claro.
meu problema é o seguinte :
Defini o parametro [color=darkblue:93bff18235]PackageRecord := 30[/color:93bff18235] que informa ao D7+DBExpress+FB15 para trazer do servidor 30 registros por vez. Funciona bem, são trazidos os 30 registros por vez, mas quando eu exibo estes registros (na verdade a Tabela) e percorro na DBGrid os resgistros um a um e chego ao final (30º registro ele torna a exibir e voltar para o 1º registro. Fica assim em loop constante.
Se eu aumento o PackageRecord para 200, acontece a mesma coisa quando chega ao registro 200 volta para o primeiro.
*** Só acontece no DBGrid, se percorro a tabela num For fica tudo normal.
O parametro FetchOnDemand do SimpleDataSet está como True, quando coloco False ao chegar no 30º registro ele para.
*** Uso o SimpleDataSet e o DataSource
Me parece que o problema é na relação entre o DBGrid e o DBExpress. ???
Espero ter sido mais claro.
Obrigado !
meu problema é o seguinte :
Defini o parametro [color=darkblue:93bff18235]PackageRecord := 30[/color:93bff18235] que informa ao D7+DBExpress+FB15 para trazer do servidor 30 registros por vez. Funciona bem, são trazidos os 30 registros por vez, mas quando eu exibo estes registros (na verdade a Tabela) e percorro na DBGrid os resgistros um a um e chego ao final (30º registro ele torna a exibir e voltar para o 1º registro. Fica assim em loop constante.
Se eu aumento o PackageRecord para 200, acontece a mesma coisa quando chega ao registro 200 volta para o primeiro.
*** Só acontece no DBGrid, se percorro a tabela num For fica tudo normal.
O parametro FetchOnDemand do SimpleDataSet está como True, quando coloco False ao chegar no 30º registro ele para.
*** Uso o SimpleDataSet e o DataSource
Me parece que o problema é na relação entre o DBGrid e o DBExpress. ???
Espero ter sido mais claro.
Obrigado !
GOSTEI 0
Marco Salles
01/09/2006
O parametro FetchOnDemand do SimpleDataSet está como True, quando coloco False ao chegar no 30º registro[b:d156a79826] ele para[/b:d156a79826].
faça o seguinte:
coloque so pra visualizar ....
[b:d156a79826]ClientDataSet1.PacketRecords :=5[/b:d156a79826]
O parametro FetchOnDemand do [b:d156a79826]SimpleDataSet como False [/b:d156a79826]e execute o método
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.GetNextPacket;//
end;
[b:d156a79826]com certeza voce vera o dbgrid aumentando de cinco em cinco[/b:d156a79826]
este efeito não é[b:d156a79826] ´visivel´[/b:d156a79826] quando FetchOnDemand esta em true , na grid , porem se voce colocar um [b:d156a79826]sqlMonitor[/b:d156a79826] , e acompanhar com um Log de Texto ou com um Memo , vera que os pacotes são enviados na proprorção de valor escolhido para PacketRecords
para acompanhar
procedure TForm1.SQLMonitor1LogTrace(Sender: TObject; CBInfo: pSQLTRACEDesc); begin Memo1.Lines.Add(String(CBInfo.pszTrace)); end;
eu sei que voce esta usando um SimpleDataSet1 , mas são os mesmos codigos postados para clientDataSet
boa sorte.
GOSTEI 0