GARANTIR DESCONTO

Fórum Pesquisa em Campo Claculado #205125

08/01/2004

0

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 ...


Fabioluis

Fabioluis

Responder

Posts

08/01/2004

Motta

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


Responder

Gostei + 0

08/01/2004

Fabioluis

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 !!!


Responder

Gostei + 0

09/01/2004

Fabioluis

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 !!!


Responder

Gostei + 0

09/01/2004

Marcelo.l

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.


Responder

Gostei + 0

09/01/2004

Fabioluis

Mas o custo liquido é um campo calculado .. num tem problema ????

eu tentei e num tá filtrando .. o que pode ser ??


Responder

Gostei + 0

09/01/2004

Marcelo.l

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+


Responder

Gostei + 0

09/01/2004

Fabioluis

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


Responder

Gostei + 0

09/01/2004

Marcelo.l

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+


Responder

Gostei + 0

09/01/2004

Fabioluis

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 ...


Responder

Gostei + 0

09/01/2004

Fabioluis

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 !!!


Responder

Gostei + 0

09/01/2004

Fabioluis

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 !!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar