Exibindo Registros em Duplicidade na Dbgrid com DBexpress

Delphi

01/09/2006

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.


Afo

Afo

Curtidas 0

Respostas

Dadonas

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

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 !


GOSTEI 0
Marco Salles

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
POSTAR