Consulta Intervalos Inteiro com Query
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
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
Curtidas 0
Respostas
Paulo_amorim
20/09/2004
Olá
Eu testei um jeito que aqui funcionou... curioso até :)
SELECT * FROM tabela
WHERE :p1 BETWEEN CodINI and CodFIM
Espero que ajude
Até+
Eu testei um jeito que aqui funcionou... curioso até :)
SELECT * FROM tabela
WHERE :p1 BETWEEN CodINI and CodFIM
Espero que ajude
Até+
GOSTEI 0
Tornadofuracao
20/09/2004
o que e o ( p1 )?
GOSTEI 0
Djjunior
20/09/2004
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
dê uma pesquisada no help sobre parametros vc vai ver que são muuuito utieis. :wink: [/code]
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]
GOSTEI 0
Tornadofuracao
20/09/2004
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;
QrConNfIniFin.Close;
QrConNfIniFin.sql.add(´SELECT * FROM CadDocu WHERE :P1 BETWEEN NLivrINI and NLivrFin´);
QrConNfIniFin.ParambyName(´P1´).AsInteger := StrToInt(Edit1.text);
QrConNfIniFin.open;
GOSTEI 0
Paulo_amorim
20/09/2004
Olá
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:
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:
GOSTEI 0
Tornadofuracao
20/09/2004
o erro e esse
Invalid use of keyword
token : Select
line Number :3
Invalid use of keyword
token : Select
line Number :3
GOSTEI 0
Tornadofuracao
20/09/2004
o erro e esse
Parameter not set in query string
GOSTEI 0
Djjunior
20/09/2004
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 ?
QrConNfIniFin.sql.add
use
QrConNfIniFin.sql.text
ou depois do close dê um sql.clear;
vc realmente precisa ficar mudando essa query ?
GOSTEI 0
Paulo_amorim
20/09/2004
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é+
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é+
GOSTEI 0
Djjunior
20/09/2004
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.
GOSTEI 0
Djjunior
20/09/2004
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.
GOSTEI 0
Tornadofuracao
20/09/2004
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)
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)
GOSTEI 0
Beppe
20/09/2004
Vc está pedindo um livro com NLivrFin menor do que NLivrINI. Basta inverter a comparação ou os operandos.
PS: Se P1 = P2, vc não precisa de P2.
SELECT * FROM CadDocu WHERE :P1 >= NLivrINI and :P1 <= NLivrFin
PS: Se P1 = P2, vc não precisa de P2.
GOSTEI 0
Tornadofuracao
20/09/2004
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.
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.
GOSTEI 0