Campo aggregate
14/07/2007
0
Obrigado
Felipeiw
Posts
18/07/2007
Marco Salles
agregate com Indexação...Assim basta testar uma unica vez
18/07/2007
Felipeiw
Nao entendi quanto ao campo agregate no mudar de valor, pois estou utilizando uma expressao sum(quant*preco), entao ele me retornara o total dos produtos do pedido, mas em determinado momento nao havera produtos entao o valor do campo agregate é zero, como faço um calculo com esse campo imaginei que, quando ele fosse zero, nao daria erro, como acontece com qualquer campo de valor, mas no caso do agregate quando este campo esta zerado retorna o erro que mencionei, diante disso tenho que ficar testar o valor do campo antes de utiliza-lo em algum calculo, isso é ruim, entao imaginei que houvesse algum tipo de ´conversao´ que resolveria isso, sem ter que testa-lo toda vez.
Obrigao
18/07/2007
Emerson Nascimento
18/07/2007
Marco Salles
suponha que na sua tabela voce tenha
item quant preco
1 1 10
2 2 20
3 3 30
o campo agreggate cuja expressão é Sum (quant*preco) para esta tabela retorna em String o Valor de
1*10+2*20+30*30= 140 este valor é fixo
24/07/2007
Felipeiw
Alterei a propriedade DefaultExpression, conforme sujestao do amigo emerson, mas tb nao funcionou.
Abs
25/07/2007
Marco Salles
veja , mesmo que o os produtos [b:18455c9370]não[/b:18455c9370] sejem excluidos , o campo agrregate so ´retorna´ valores em strings.. Logo , em qualquer caso é necessário uma conversão
Assim :
16/04/2014
Vinícius Ribeiro
10/08/2021
Sady
Obrigado
Olá Felipeiw
Não sei se o seu problema foi resolvido, mas vou deixar 2 dicas pra ajudar a resolver.
1) Para obter o valor de qualquer capo agregate você fazer uma conversão. Pois campos agregates não são numéricos, mas sim VARIANT.
SuaVariável := cdsSeuCDS.NomeCampoAgregado.AsString;
Dessa forma você vai obter '' quando valor for = 0
Para trabalhar com números é só usar as funções de conversão nativas do Delphi (StrToInt, StrToFloat, SrtToCurr, ...)
2) Outra dica IMPORTANTÍSSIMA quando se trabalha com campos agregates é:
Verifique sempre o estado do DataSource.
If cdsSeuCDS.DataSource.State = dsEdit then
cdsSeuCDS.Post;
Caso contrário você vai estar sempre pegando o valor desatualizado.
Espero ter ajudado.
Abraços!
Clique aqui para fazer login e interagir na Comunidade :)