Pesquisa em Campo Claculado
Olá...
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 ...
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
Curtidas 0
Respostas
Motta
08/01/2004
Vc pode dar mais detalhes.
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
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
Fabioluis
08/01/2004
Bom deixa eu tentar explicar melhor ..
é 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 !!!
é 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
Fabioluis
08/01/2004
a minha query é a sguinte !!!
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 !!!
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
Marcelo.l
08/01/2004
Olá.
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.
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
Fabioluis
08/01/2004
Mas o custo liquido é um campo calculado .. num tem problema ????
eu tentei e num tá filtrando .. o que pode ser ??
eu tentei e num tá filtrando .. o que pode ser ??
GOSTEI 0
Marcelo.l
08/01/2004
Como eu disse serão filtrados todos os registros que se encaixem na condição.
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+
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
Fabioluis
08/01/2004
Mas o custo liquido é um campo calculado .. num tem problema ????
eu tentei e num tá filtrando .. o que pode ser ??
Ahh os parametros da faixa de filtro estão em 2 edits, como faço para trazer pra query ??
Valeu
GOSTEI 0
Marcelo.l
08/01/2004
Vou supor que vc utilizou da seguinte forma:
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+
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
Fabioluis
08/01/2004
eu tentei isso mas os edits não aprecem ai eu inclui no users o form, mas mesmo assim num apareceu .. o que posso fazer ???
o resto da dica funcionou bem !!!
obrigado ...
o resto da dica funcionou bem !!!
obrigado ...
GOSTEI 0
Fabioluis
08/01/2004
eu tentei isso mas os edits não aprecem ai eu inclui no users o form, mas mesmo assim num apareceu .. o que posso fazer ???
o resto da dica funcionou bem !!!
obrigado ...
Tentei tb colocar o form.edit1.text .. mas ai deu erro de violaçao de acesso quendo vai abrir o form !!!
GOSTEI 0
Fabioluis
08/01/2004
Bom só pra agradecer a todos .. eu consegui, não sei se da forma mais correta .. mas pelo menos funcionlou .. se alguem tiver alguma sugestão eu aceito ..
Como trabalho com Datamodule eu tive que criar uma variavel global para cada campo do edit ai funcionou !!!
valeu !!!!
Como trabalho com Datamodule eu tive que criar uma variavel global para cada campo do edit ai funcionou !!!
valeu !!!!
GOSTEI 0