SQL

Delphi

02/10/2003

Como faço para realizar um select numa tabela onde eu tenho intervalo de dados. Por exemplo:
Eu tenho uma tabela com 50 registros, digamos que o usuários quer realizar uma pesquisa entre os registros 10 a 25...
Como monto uma SQL para este tipo de consulta?


Marcela

Marcela

Curtidas 0

Respostas

Marcelo.c

Marcelo.c

02/10/2003

SELECT * FROM tabela WHERE codigo BETWEEN 10 AND 25


GOSTEI 0
Edineidaniel

Edineidaniel

02/10/2003

Olá,

No OnClick do Button
query1.close;
query1.SQL.Clear;
query1.sql.add(´select * from tabela´);
query1.sql.add(´where campo >= :cod1 and campo<=:cod2´);
query1.sql.add(´order by datainicial´);
query1.params[0].AsInteger := StrToInt(Edit1.text);
query1.params[1].AsInteger := StrToInt(Edit2.text);
query1.open;
query1.active:=true;

Ai é so listas esta consulta em um grid...

walew
t+

Edinei


GOSTEI 0
Marcela

Marcela

02/10/2003

Isso não dá certo porque na tabela não tem codigo sequencial....


GOSTEI 0
Edineidaniel

Edineidaniel

02/10/2003

.....

Qual é o campo chave de sua tabela....????
Ou melhor quais os campos que vc possui em sua tabela...????

que sabe com esses dados adicionais podemos formular um SQL diferente...

t+

Edinei


GOSTEI 0
Marcela

Marcela

02/10/2003

Os campos da minha tabela são:
Cod da estação, que não é sequencial (número grande e varialvel)
Data e Hora, estes são chaves primárias
O restante são dados de leitura que não me interessam...


GOSTEI 0
Edineidaniel

Edineidaniel

02/10/2003

Marcela,

Deve a haver algum dados importante em meio a sua tabela para q vc queira selecionar dados do meio...

Não encontrei outra maneira de te ajudar...
quem sabe tente o código acima, mas com o campo data ou hora, tanto faz, é só mudar o valor dos parâmetros....

t+

Edinei


GOSTEI 0
Fava

Fava

02/10/2003

Veja o exemplo abaixo... variando-se o comando select (alterando-se a clausula where, order by, etc...) pode-se obter os últimos X registros, etc... etc...

CREATE PROCEDURE RETORNA_X_REGISTROS (NUM_ROWS INTEGER)
RETURNS (lista de campos que voce quer que retorne)
AS
declare variable counter integer;
begin
counter = 0;
for select (campos que voce quer que retorne)
from Sua_Tabela
order by campo_chave_primária
into
:Variaveis de retorno que recebem o valor dos campos acima
do begin
if (:counter >= :NUM_ROWS) then exit;
suspend;
counter = counter + 1;
end
end

PS: O Firebird e o Interbase 6.5 possuem clausulas especiais para o SELECT que permitem a paginação dos dados retornados


GOSTEI 0
Marcelo.c

Marcelo.c

02/10/2003

Dê uma olhada em:

http://delphiforum.icft.com.br/forum/viewtopic.php?t=23490


GOSTEI 0
POSTAR