Array
(
)

Fecth no IBX, tem como?

Adriano Santos
   - 30 mar 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


Vinicius2k
   - 30 mar 2006

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 RecordCount.

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

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

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


Adriano Santos
   - 30 mar 2006

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

Vlw mesmo, abraço