Fórum Pesquisa em Campo Claculado #205125
08/01/2004
0
Preciso de uma informação, estou desnvolvendo um sistema e num determinado momento da pesquisa eu preciso calcular um total e mostar no resulatdo somente os registros filtrados na faixa determinada, mas o total ta em cum campo calculado.
Como posso fazer ???
Estou usando ADOQuery e Acces
Valeu ...
Fabioluis
Curtir tópico
+ 0Posts
08/01/2004
Motta
Vc quer fazer um filtro num dbgrid , localizar os registros ?
Tem a prop Filter que permiter estabelecer um Filtro, porém a campo aqui não pode ser calculado
ex
VALOR_UNIT
QTD
fVenda
onde fVenda é calculado
tente
Filter := ´VALOR_UNIT * QTD = 12345´
fILTERED := true;
não estou certo que a sintaxe vai funcionar mas faça um teste
Gostei + 0
08/01/2004
Fabioluis
é uma tela de pesquisa onde eu filtro as caracteristicas de equipamentos, como modelo, tipo etc ... e coloco tudo num DBGrid
só que agora eu preciso filtrar tambem por preço, tipo entre 10.000,00 e 20.000,00.
só que eu só calculo o preço quando faço a pequisa, pois o preço depende do usuário logado.. por causa da margem de desconto.
Até a parte dos claculos está tudo funcionando.. mas ai não consigi filtrar pela faixa ..
As outras comparaçoes que não eram campo calculado estão funcionando,
pois eu tenho um campo na tabela pra compar, mas aki não, eu tenho que comparar o Campo calculado com os Edits que estão na tela.
Num tem muito código .. pq to usando parametros no SQL e depois passo pelo parameter da query !!
Deu pra entender ??
Valeu !!!
Gostei + 0
09/01/2004
Fabioluis
SELECT
E.* , M.Marca, T.Tipo, Tc.Tecnologia, F.Formato, c.Color
FROM
Equipamento E, Marca M, Tipo T, Tecnologia Tc, Formato F,
Color c
WHERE
E.eq_cod_Marca = M.cod_Marca AND
E.eq_cod_Tipo = T.cod_Tipo AND
E.eq_cod_Tecnologia = Tc.cod_Tecnologia AND
E.eq_cod_Formato = F.cod_Formato AND
E.eq_cod_Color = C.cod_Color AND
E.eq_cod_Equipamento LIKE :cod_Equipamento AND
E.eq_Modelo LIKE :Modelo AND
M.Marca LIKE :Marca AND T.Tipo LIKE :Tipo AND
Tc.Tecnologia LIKE :Tecnologia AND
F.Formato LIKE :Formato AND
C.Color LIKE :Color AND
E.eq_Capacidade BETWEEN :Capac1 AND :Capac2 AND
E.eq_velocidade_pb BETWEEN :Velpb1 AND :Velpb2 AND
E.eq_velocidade_cl BETWEEN :Velcl1 AND :Velcl2
ORDER BY
E.eq_cod_Equipamento
e o meu campo calculado é :
//Calcula o Custo Liquido
qryConsEquipCusto_Liquido.AsFloat := qryConsEquipeq_Custo_Bruto.AsFloat * (
1 - (( qryConsEquipeq_Icmsc.AsFloat / 100) /(
1 + qryConsEquipeq_Ipi.AsFloat / 100)));
//Calcula o Preço de Venda ... com indice padrão
qryConsEquipPreco_Venda.AsFloat := qryConsEquipCusto_Liquido.AsFloat / (
1 - ((qryConsEquipeq_Icmsv.AsFloat + qryConsEquipeq_Impostos.AsFloat +
_dmMain.qryUsuarioMargem.AsFloat) / 100));
se puder me ajudar ..
Valeu !!!
Gostei + 0
09/01/2004
Marcelo.l
Vc pode utilizar o evento OnFilterRecord de seu Dataset.
Nele existe o parametro ´Accept´ que vc pode utilizar da seguinte forma.
Accept := (qryConsEquipCusto_Liquido.AsFloat >= 10.000) and (qryConsEquipCusto_Liquido.AsFloat <= 20.000);
Serão filtrados todos os registros que se encaixem na condição.
Espero ter ajudado.
Gostei + 0
09/01/2004
Fabioluis
eu tentei e num tá filtrando .. o que pode ser ??
Gostei + 0
09/01/2004
Marcelo.l
Não importa se o campo for calculado.
Não esqueça de ´setar´ a propriedade Filtered para true de seu dataset.
Pode ser em tempo de design ou execução.
Vai com fé que funciona.
Qualquer dúvida estamos aí.
T+
Gostei + 0
09/01/2004
Fabioluis
Ahh os parametros da faixa de filtro estão em 2 edits, como faço para trazer pra query ??
Valeu
Gostei + 0
09/01/2004
Marcelo.l
Edt1 para valor inicial
Edt2 para valor final
Fica assim dentro do evento OnFilterRecord:
Accept := (qryConsEquipCusto_Liquido.AsFloat >= StrToFloat(Edit1.Text)) and (qryConsEquipCusto_Liquido.AsFloat <= StrToFloat(Edit2.Text));
Como eu disse não se esqueça de setar a propriedade Filtered para TRUE.
Me avise se funcionar ou não.
T+
Gostei + 0
09/01/2004
Fabioluis
o resto da dica funcionou bem !!!
obrigado ...
Gostei + 0
09/01/2004
Fabioluis
Tentei tb colocar o form.edit1.text .. mas ai deu erro de violaçao de acesso quendo vai abrir o form !!!
Gostei + 0
09/01/2004
Fabioluis
Como trabalho com Datamodule eu tive que criar uma variavel global para cada campo do edit ai funcionou !!!
valeu !!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)