duvida com query
Ola, caros amigos
Eu estou com o seguinte problema eu uso uma ibquery(uso delphi7/firebird2.0/ibtable) para me trazer alguns dados e a campos calculados junto a ela , enquanto estou no form que ela funciona tudo correto , posso pedir nova pesquisa que tudo funciona certo, mas quando fecho o form e tento fazer outra pesquisa , sempre vem os dados da ultima pesquisa, ai tenho que encerrar o sistema e entrar denovo .
Esta ibquery pega informacao de um ibtable para fazer a pesquiza tipo
..... where coddev=´+dm.ibtbdevedorescoddev.asstring);
se alguem puder me ajudar
ps ja tentei desativas a ibquery quando fecho o form, ai piora pois nao vem nada.
Obrigado por enquanto.
Eu estou com o seguinte problema eu uso uma ibquery(uso delphi7/firebird2.0/ibtable) para me trazer alguns dados e a campos calculados junto a ela , enquanto estou no form que ela funciona tudo correto , posso pedir nova pesquisa que tudo funciona certo, mas quando fecho o form e tento fazer outra pesquisa , sempre vem os dados da ultima pesquisa, ai tenho que encerrar o sistema e entrar denovo .
Esta ibquery pega informacao de um ibtable para fazer a pesquiza tipo
..... where coddev=´+dm.ibtbdevedorescoddev.asstring);
se alguem puder me ajudar
ps ja tentei desativas a ibquery quando fecho o form, ai piora pois nao vem nada.
Obrigado por enquanto.
Pattarelli
Curtidas 0
Respostas
Maxymus
26/11/2008
isso está acontecendo por que vc está deixando a query aberta..
faça assim
suporte que vc tem uma table de clientes e quer selecionar todos os clientes:
Query1.close;
Query1.sql.clear;
Query1.sql.add(´select * from tbclientes´);
Query1.Open;
Observe que toda vez que a query é disparada ela fechar, passa os parâmetros e depois fecha... com isso, provavelmente deve ser o problema...
Descupe, acho que foi isso que entendi..
faça assim
suporte que vc tem uma table de clientes e quer selecionar todos os clientes:
Query1.close;
Query1.sql.clear;
Query1.sql.add(´select * from tbclientes´);
Query1.Open;
Observe que toda vez que a query é disparada ela fechar, passa os parâmetros e depois fecha... com isso, provavelmente deve ser o problema...
Descupe, acho que foi isso que entendi..
GOSTEI 0
Maxymus
26/11/2008
Só pra complementar, num passa os parâmetros da query assim naum..
faz assim
With Query1 do
begin
close;
sql.clear;
sql.add(´select * from tbclientes where codigo = :vcod´);
params[0].AsInteger := StrtoInt(dbedit1.text) // se for integer
Open;
end;
observe que :vcod é um parâmetro definido da query e passado pelo comando params[0].tipodocampo onde [0] é a sequencia do parâmetro.. se vc tivesse outro parâmetro como o nome :nome entao esse seria passao como params[1].tipocampo := dbedit2.text
faz assim
With Query1 do
begin
close;
sql.clear;
sql.add(´select * from tbclientes where codigo = :vcod´);
params[0].AsInteger := StrtoInt(dbedit1.text) // se for integer
Open;
end;
observe que :vcod é um parâmetro definido da query e passado pelo comando params[0].tipodocampo onde [0] é a sequencia do parâmetro.. se vc tivesse outro parâmetro como o nome :nome entao esse seria passao como params[1].tipocampo := dbedit2.text
GOSTEI 0
Pattarelli
26/11/2008
Meu caro amigo,
Eu sou um iniciante, entao nao vi caca que eu fiz, criei um DM para colocar so as query com campos calculado , e coloquei para criala so quando o form era aberto , de alguma forma quando eu saia do form essa dm sumia , entao minhas query de calculo paravam de funcionar certo, para vc ver , se a gente nao observa certo fica que nem doido para resolver.
mas mesmo assim a sua dica como parametro foi de grande ajuda.
valew mesmo ..
obrigado
Eu sou um iniciante, entao nao vi caca que eu fiz, criei um DM para colocar so as query com campos calculado , e coloquei para criala so quando o form era aberto , de alguma forma quando eu saia do form essa dm sumia , entao minhas query de calculo paravam de funcionar certo, para vc ver , se a gente nao observa certo fica que nem doido para resolver.
mas mesmo assim a sua dica como parametro foi de grande ajuda.
valew mesmo ..
obrigado
GOSTEI 0