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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar