Fecth no IBX, tem como?

30/03/2006

Pessoal,

Tem como fazer um fetch com componentes IBX?
Por exemplo, a minha select traz 3.000 registros, porém no DBGrid quero quer não venha tudo para o cliente, apenas conforme o usuário se move de cima pra baixo o sistema vai trazendo de 300 em 300 por exemplo.

vlw


Adriano Santos

Respostas

30/03/2006

Vinicius2k

Adriano,

Este comportamento (Fetch On Demand) é automático no IBX. Quando você abre um TIBQuery/TIBDataSet, apenas os registros necessários no momento são trazidos para o lado do cliente.
Ex: Se, quando você abre o DataSet, seu TDBGrid está exibindo 10 registros, foram trazidos para o lado do cliente apenas 10 registros.
Se quiser comprovar, abra seu DataSet e leia a propriedade [i:d18bafa25c]RecordCount[/i:d18bafa25c].

[b:d18bafa25c]Porém[/b:d18bafa25c], algumas ações realizadas por você, como a utilização de métodos como [i:d18bafa25c]Last[/i:d18bafa25c] e [i:d18bafa25c]Locate[/i:d18bafa25c] e a existência de TFields do tipo [i:d18bafa25c]LookUp[/i:d18bafa25c], invalidam este recurso, forçando o fetch de todos os registros para o lado do cliente.

Há ainda o método [i:d18bafa25c]FetchAll[/i:d18bafa25c] cuja função é forçar o fetch de todos os registros. Se você utiliza alguma rotina baseada na propriedade [i:d18bafa25c]RecordCount[/i:d18bafa25c], para que ela seja lida como esperado, deve-se invocar primeiramente o método [i:d18bafa25c]FetchAll[/i:d18bafa25c]. Lembrando que isto estaria compromentendo a performance da aplicação.

Algumas dicas sobre [i:d18bafa25c]Tuning[/i:d18bafa25c] no IBX:
http://community.borland.com/article/0,1410,27659,00.html


Responder Citar

30/03/2006

Adriano Santos

Opa vlw Vinicius, uma camarada meu me perguntou e não soube responder. Não uso IBX.

Vlw mesmo, abraço


Responder Citar