Limitar a qtde. de registros retornados em um RecordSet
Amigos,
Estou precisando limitar a quantidade de registros retornados em um RecordSet SQL para um módulo de um sistema que vai acessar remotamente um servidor Interbase 6 via RAS (56K). A idéia é fazer um form ´multipágina´ de 50 em 50, como na web..
Pensei inicialmente em fazer uso do WHERE mas pode não ter o resultado esperado, por exemplo :
mas se um cliente for neste intervalo de ID for excluído a query só retornará 49 registros...
Existe alguma forma nativa de pedir isso ao Interbase ou de contornar este problema com o WHERE? Se puderem me ajudar, aguardo sugestões...
Obrigado.
Estou precisando limitar a quantidade de registros retornados em um RecordSet SQL para um módulo de um sistema que vai acessar remotamente um servidor Interbase 6 via RAS (56K). A idéia é fazer um form ´multipágina´ de 50 em 50, como na web..
Pensei inicialmente em fazer uso do WHERE mas pode não ter o resultado esperado, por exemplo :
select * from clientes where IDCLIENTE bettwen :start and :start+50
mas se um cliente for neste intervalo de ID for excluído a query só retornará 49 registros...
Existe alguma forma nativa de pedir isso ao Interbase ou de contornar este problema com o WHERE? Se puderem me ajudar, aguardo sugestões...
Obrigado.
Vinicius2k
Curtidas 0
Respostas
Afarias
29/01/2004
No FIREBIRD use FIRST
select first 50 from tabela ...
No INTERBASE (6.5 e superior) use ROWS
select from tabela
...
order by rows 50
T+
select first 50 from tabela ...
No INTERBASE (6.5 e superior) use ROWS
select from tabela
...
order by rows 50
T+
GOSTEI 0
Vinicius2k
29/01/2004
Afarias,
Obrigado por responder-me.
Devo concluir então que para conseguir o resultado sem o WHERE devo trocar de SGBD. Até tudo bem, como o projeto ainda não está pronto, posso trocar para Firebird 1.5, que já estou testando.
Mas em ambos os exemplos que vc citou ele vai me trazer apenas os 50 primeiros registros, certo?
Se sim como fazer o que pretendo? ou seja : de 50 em 50, abrindo a query e trazendo de 1 a 50, depois fecho e trago de 51 a 100, de 101 a 150 e assim por diante...
Obrigado por responder-me.
Devo concluir então que para conseguir o resultado sem o WHERE devo trocar de SGBD. Até tudo bem, como o projeto ainda não está pronto, posso trocar para Firebird 1.5, que já estou testando.
Mas em ambos os exemplos que vc citou ele vai me trazer apenas os 50 primeiros registros, certo?
Se sim como fazer o que pretendo? ou seja : de 50 em 50, abrindo a query e trazendo de 1 a 50, depois fecho e trago de 51 a 100, de 101 a 150 e assim por diante...
GOSTEI 0
Afarias
29/01/2004
|Devo concluir então que para conseguir o resultado sem o WHERE devo
|trocar de SGBD.
Se vc usa o IB 6.0 -- trocar pelo FB 1.0 não fará diferença
Mas, vc pode implementar este tipo de consulta no IB 6.0 com Stored Procedures, fica muito bom!
|Até tudo bem, como o projeto ainda não está pronto, posso trocar para
|Firebird 1.5, que já estou testando.
O FB 1.0 já possui esta funcionalidade, é praticamente 100¬ compatível com o IB 6.0 e é estável (o FB 1.5 ainda é ´beta´)
|Mas em ambos os exemplos que vc citou ele vai me trazer apenas os 50
|primeiros registros, certo?
Intão
|Se sim como fazer o que pretendo? ou seja : de 50 em 50, abrindo a
|query e trazendo de 1 a 50, depois fecho e trago de 51 a 100, de 101 a
|150 e assim por diante...
select first 50 from tabela
order by nome
select first 50 skip 50 from tabela
order by nome
select first 50 skip 100 from tabela
order by nome
{... assim por diante ...}
T+
|trocar de SGBD.
Se vc usa o IB 6.0 -- trocar pelo FB 1.0 não fará diferença
Mas, vc pode implementar este tipo de consulta no IB 6.0 com Stored Procedures, fica muito bom!
|Até tudo bem, como o projeto ainda não está pronto, posso trocar para
|Firebird 1.5, que já estou testando.
O FB 1.0 já possui esta funcionalidade, é praticamente 100¬ compatível com o IB 6.0 e é estável (o FB 1.5 ainda é ´beta´)
|Mas em ambos os exemplos que vc citou ele vai me trazer apenas os 50
|primeiros registros, certo?
Intão
|Se sim como fazer o que pretendo? ou seja : de 50 em 50, abrindo a
|query e trazendo de 1 a 50, depois fecho e trago de 51 a 100, de 101 a
|150 e assim por diante...
select first 50 from tabela
order by nome
select first 50 skip 50 from tabela
order by nome
select first 50 skip 100 from tabela
order by nome
{... assim por diante ...}
T+
GOSTEI 0
Vinicius2k
29/01/2004
Afarias,
Brigadão ! :D
Vc ajudou muito ! Eu já pensava em mudar de vez pro Firebird, mas estava esperando sair o final release do 1.5 (tah difícil de sair neh? se não me engado estava anunciado desde Julho...)
Sei q vc é o especialista em FB... se vc não se importar... sem querer abusar... me diga o se ´rola´ e o que ´não rola´ com Firebird 1.0.3 e com o 1.5 quando ele ´sair do forno´ em relação à conexão Delphi-banco...
Delphi 6 + IBX 6.07
- com FB 1.0 ?
- com FB 1.5 ?
Delphi 6 + DBExpress (driver nativo)
- com FB 1.0 ?
- com FB 1.5 ?
Delphi 7 + IBX 7.07
- com FB 1.0 ?
- com FB 1.5 ?
Delphi 7 + DBExpress (driver nativo)
- com FB 1.0 ?
- com FB 1.5 ?
T+
Brigadão ! :D
Vc ajudou muito ! Eu já pensava em mudar de vez pro Firebird, mas estava esperando sair o final release do 1.5 (tah difícil de sair neh? se não me engado estava anunciado desde Julho...)
Sei q vc é o especialista em FB... se vc não se importar... sem querer abusar... me diga o se ´rola´ e o que ´não rola´ com Firebird 1.0.3 e com o 1.5 quando ele ´sair do forno´ em relação à conexão Delphi-banco...
Delphi 6 + IBX 6.07
- com FB 1.0 ?
- com FB 1.5 ?
Delphi 6 + DBExpress (driver nativo)
- com FB 1.0 ?
- com FB 1.5 ?
Delphi 7 + IBX 7.07
- com FB 1.0 ?
- com FB 1.5 ?
Delphi 7 + DBExpress (driver nativo)
- com FB 1.0 ?
- com FB 1.5 ?
T+
GOSTEI 0
Afarias
29/01/2004
|me diga o se ´rola´ e o que ´não rola´ com Firebird 1.0.3 e com o 1.5
|quando ele ´sair do forno´ em relação à conexão Delphi-banco...
Bom, quanto ao FB 1.5 não tenho ´testes´ concretos (ainda) -- mas bem q estou me programando para fazer um ´relatório´ sobre isto (quando sair, posto ele aqui -- caso alguêm ainda não tenha realizado)
Posso dizer o seguinte apenas::
1 - não há (ou deve haver) diferenças entre os Delphi 6 ou 7 -- O IBX ou DBX de ambos devem se comportar da mesma forma
2 - quanto ao FB 1.0 acredito q ambas soluções (IBX e DBX) já provaram não haver ´nenhum´ problema -- uma vez q o FB 1.0 é praticamente 100¬ compatível com o IB 6.0
3 - (FB 1.5) Tenho usado alguns sistemas feitos para IB (com IBX) contra bases de dados FB 1.5 -- sem haver nenhum problema ( ** mas torno a lembrar q não são testes totalmente conclusivos ** ) -- juntando isso a diversos relatos de pessoas q quase não tiveram problemas em usar IBX com FB 1.5, a princípio, me parece q a situação é favorável
4 - (FB 1.5) Não sei quanto ao DBX (meu Delphi é o 5) mas acredito que siga a mesma linha do IBX
5 - Para quem realmente pretende adotar o FB como solução de médio/longo prazo, é muito importante manter-se *antenado* às soluções ESPECÍFICAS para o FB (FIB Plus, IBO e FirebirdExpress (DBX)) -- afinal, o FB 1.5 é um pré-release do FB 2.0 -- ao mesmo tempo q o IB tb evolui pelo lado da Borland -- então, é possível q em um futuro estas ferramentas podem não se manter compatíveis, tornando o uso de IBX ou DBX (com driver para IB) impossível com FB -- sendo assim necessário passar para adotar uma dessas soluções
Este é apenas o meu entendimento.
T+
|quando ele ´sair do forno´ em relação à conexão Delphi-banco...
Bom, quanto ao FB 1.5 não tenho ´testes´ concretos (ainda) -- mas bem q estou me programando para fazer um ´relatório´ sobre isto (quando sair, posto ele aqui -- caso alguêm ainda não tenha realizado)
Posso dizer o seguinte apenas::
1 - não há (ou deve haver) diferenças entre os Delphi 6 ou 7 -- O IBX ou DBX de ambos devem se comportar da mesma forma
2 - quanto ao FB 1.0 acredito q ambas soluções (IBX e DBX) já provaram não haver ´nenhum´ problema -- uma vez q o FB 1.0 é praticamente 100¬ compatível com o IB 6.0
3 - (FB 1.5) Tenho usado alguns sistemas feitos para IB (com IBX) contra bases de dados FB 1.5 -- sem haver nenhum problema ( ** mas torno a lembrar q não são testes totalmente conclusivos ** ) -- juntando isso a diversos relatos de pessoas q quase não tiveram problemas em usar IBX com FB 1.5, a princípio, me parece q a situação é favorável
4 - (FB 1.5) Não sei quanto ao DBX (meu Delphi é o 5) mas acredito que siga a mesma linha do IBX
5 - Para quem realmente pretende adotar o FB como solução de médio/longo prazo, é muito importante manter-se *antenado* às soluções ESPECÍFICAS para o FB (FIB Plus, IBO e FirebirdExpress (DBX)) -- afinal, o FB 1.5 é um pré-release do FB 2.0 -- ao mesmo tempo q o IB tb evolui pelo lado da Borland -- então, é possível q em um futuro estas ferramentas podem não se manter compatíveis, tornando o uso de IBX ou DBX (com driver para IB) impossível com FB -- sendo assim necessário passar para adotar uma dessas soluções
Este é apenas o meu entendimento.
T+
GOSTEI 0
Vinicius2k
29/01/2004
Valeu AFarias !
Clareou muita coisa ! :D
T+
Clareou muita coisa ! :D
T+
GOSTEI 0