Fórum Exibindo Registros em Duplicidade na Dbgrid com DBexpress #328469
01/09/2006
0
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
Curtir tópico
+ 0Posts
02/09/2006
Dadonas
while not(Query.Eof) do begin //Intruções Query.Next; end;
Gostei + 0
04/09/2006
Afo
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
04/09/2006
Marco Salles
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
[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
Clique aqui para fazer login e interagir na Comunidade :)