Consulta Intervalos Inteiro com Query

20/09/2004

0

Caros Amigos

Tenho uma tabela DBF, nesta tabela tenho os campos (Nome, CodINI e CodFIM)do tipo Inteiro.

Ex:

cadastro o CodINI = 1 e CodFim = 10

Nome CodINI CodFIM
Joao 1 10
mario 11 16
fernando 33 47

como posso fazer em uma query uma consulta que :

* se eu digitar no edit o valor 3 ele me moste no DBGrid o registro que contem o CodINI = 1 e codFIM = 10 que sera o Joao


Tornadofuracao

Tornadofuracao

Responder

Posts

20/09/2004

Paulo_amorim

Olá

Eu testei um jeito que aqui funcionou... curioso até :)


SELECT * FROM tabela
WHERE :p1 BETWEEN CodINI and CodFIM

Espero que ajude
Até+


Responder

20/09/2004

Tornadofuracao

o que e o ( p1 )?


Responder

20/09/2004

Djjunior

p1 como foi posto (o bde/ado adotam que toda palavra que seja precedida de ´:´ é um paramêtro - que só pode ser usado na clausula where) é um parametro que vc deve setar antes de abrir sua query ficaria algo assim

considerando que query sugerida pelo
[b:fe0e61cb68] Paulo_Amorim [/b:fe0e61cb68] se chame qryIntervalo faça

qryintervalo.Close;
qryintervalo.parambyName(´´).asinteger := seunumero;
qryintervalo.open;


dê uma pesquisada no help sobre parametros vc vai ver que são muuuito utieis. :wink: [/code]


Responder

20/09/2004

Tornadofuracao

caro amigo fiz deste modo mais da erro onde estou errando por favor

QrConNfIniFin.Close;
QrConNfIniFin.sql.add(´SELECT * FROM CadDocu WHERE :P1 BETWEEN NLivrINI and NLivrFin´);
QrConNfIniFin.ParambyName(´P1´).AsInteger := StrToInt(Edit1.text);
QrConNfIniFin.open;


Responder

20/09/2004

Paulo_amorim

Olá

Que erro ele retorna? Daí poderemos saber...

Eu testei em banco ORACLE e funcionou...

p1 como foi posto (o bde/ado adotam que toda palavra que seja precedida de ´:´ é um paramêtro - que só pode ser usado na clausula where)

Junior, o parâmetro pode ser usado em qualquer lugar da Query, não soh na cláusula where :wink:


Responder

20/09/2004

Tornadofuracao

o erro e esse
Invalid use of keyword
token : Select
line Number :3


Responder

20/09/2004

Tornadofuracao

o erro e esse Parameter not set in query string



Responder

20/09/2004

Djjunior

o erro tá em
QrConNfIniFin.sql.add
use
QrConNfIniFin.sql.text

ou depois do close dê um sql.clear;

vc realmente precisa ficar mudando essa query ?


Responder

20/09/2004

Paulo_amorim

Olá

Tente dar um Active = True em tempo de desenvolvimento (coloque a sintaxe no componente) e veja se dá erro...
Se não, ta na programação mesmo

Até+


Responder

20/09/2004

Djjunior

o [b:e12b684202]Paulo_Amorim[/b:e12b684202] tá certo derrepente tb é a query que tá errada, só que pra ativar uma query com parameto vc tem que setar o tipo/valor pra ele em tempo de projeto mesmo.


Responder

20/09/2004

Djjunior

Olá Que erro ele retorna? Daí poderemos saber... Eu testei em banco ORACLE e funcionou... [quote:a1367bd6f4=´djjunior´]p1 como foi posto (o bde/ado adotam que toda palavra que seja precedida de ´:´ é um paramêtro - que só pode ser usado na clausula where)

Junior, o parâmetro pode ser usado em qualquer lugar da Query, não soh na cláusula where :wink:[/quote:a1367bd6f4]

Pode :?: Já havia visto mesmo em outros tópicos aqui no fórum de gente que tentou no ´from´ e não deu certo, no ´have´ acredito que funcione, nos demais realmente nunca testei, mas acredito que ñ funcione, aqui na empresa mesmo teve querys que tivemos que usar parametros mais complexos ou fora do where e tivemos que usar o esquema de macro (só que ai usamos o RXQuery :) )

se pode realmente me desculpem a ignorância, vou fazer uns testes aqui pra ver como funciona.


Responder

21/09/2004

Tornadofuracao

Caros amigos

muito obrigado por vc´s estarem tentando me ajudar.

escrevi este codigo:

QrConNfIniFin.Close;
QrConNfIniFin.sql.clear;
QrConNfIniFin.sql.Add(´SELECT * FROM CadDocu WHERE NLivrINI >= : P1 and NLivrFin <= : P2´);
QrConNfIniFin.parambyName(´P1´).AsInteger := StrToInt(Edit1.Text);
QrConNfIniFin.parambyName(´P2´).AsInteger := StrToInt(Edit1.Text);
QrConNfIniFin.open;

So para ficar mas escalarecido :
gostaria de digitar o valor 3 em um Edit e clicar em um Button ele me mostar em um DBGrid o registro Mario, por que ele vai do 1 ao 10

Mais o mesmo nao me retorna nada no DBGrid, tentei o Text no lugar do Add e nao funcionou.

a estrutura de minha tabela e esta:
nome..............NLivrIni...............NLivrFin
Mario.................1........................10
Ana...................15.......................20
Tereza...............26.......................30
Fernanda...........31........................40

NLivrIni e NLivrFin são do tipo Inteiro
Tabela (DBF)


Responder

21/09/2004

Beppe

Vc está pedindo um livro com NLivrFin menor do que NLivrINI. Basta inverter a comparação ou os operandos.

SELECT * FROM CadDocu WHERE :P1 >= NLivrINI and :P1 <= NLivrFin


PS: Se P1 = P2, vc não precisa de P2.


Responder

21/09/2004

Tornadofuracao

Caros Amigos do Mundo Delphi

Aqui fica meus agradecimentos pela ajuda que foi de grande importância para mim.

pois meu objetivo foi atingido valeu........

Que Deus Abençoe a todos.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar