Consulta Intervalos Inteiro com Query
20/09/2004
0
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
Posts
20/09/2004
Paulo_amorim
Eu testei um jeito que aqui funcionou... curioso até :)
SELECT * FROM tabela
WHERE :p1 BETWEEN CodINI and CodFIM
Espero que ajude
Até+
20/09/2004
Djjunior
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]
20/09/2004
Tornadofuracao
QrConNfIniFin.Close;
QrConNfIniFin.sql.add(´SELECT * FROM CadDocu WHERE :P1 BETWEEN NLivrINI and NLivrFin´);
QrConNfIniFin.ParambyName(´P1´).AsInteger := StrToInt(Edit1.text);
QrConNfIniFin.open;
20/09/2004
Paulo_amorim
Que erro ele retorna? Daí poderemos saber...
Eu testei em banco ORACLE e funcionou...
Junior, o parâmetro pode ser usado em qualquer lugar da Query, não soh na cláusula where :wink:
20/09/2004
Tornadofuracao
Invalid use of keyword
token : Select
line Number :3
20/09/2004
Djjunior
QrConNfIniFin.sql.add
use
QrConNfIniFin.sql.text
ou depois do close dê um sql.clear;
vc realmente precisa ficar mudando essa query ?
20/09/2004
Paulo_amorim
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é+
20/09/2004
Djjunior
20/09/2004
Djjunior
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.
21/09/2004
Tornadofuracao
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)
21/09/2004
Beppe
SELECT * FROM CadDocu WHERE :P1 >= NLivrINI and :P1 <= NLivrFin
PS: Se P1 = P2, vc não precisa de P2.
21/09/2004
Tornadofuracao
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.
Clique aqui para fazer login e interagir na Comunidade :)