DELPHITOTS Postado Março 31, 2009 Denunciar Share Postado Março 31, 2009 Ola pessoal estou com uma duvida, deve ser bem simples mas estou penando pra resolver......Estou com Delhpi7 e trabalhando com Quick Report e Firebird.....Tenho estes campos no relatorio:tipoestoque ndepecas qtde valor total i 2 10 11 X e 1 2 8 YNo total (que é um qrexpression do quick report) eu preciso que faça o seguinte:- se o tipoestoque for = i o total recebe (ndepecas*qtde*valor)- se o tipoestoque for = e o total recebe (ndepecas*qtde)somente isso, mas não consigo fazer isso, alguém pode me ajudar?Muito obrigado a todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ZueRa Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 Boa noite amigo.Acredito que possa fazer assim:procedure TForm1.Button1Click(Sender: TObject); var i, e : string; x, y : integer; begin if (tipoestoque.Caption = i) then begin x := (StrtoInt(ndepecas.Caption) * StrtoInt(qtde.Caption) * StrtoInt(valor.Caption)); total.Caption := InttoStr(x); end; if (tipoestoque.Caption = e) then begin y := (StrtoInt(ndepecas.Caption) * StrtoInt(qtde.Caption)); valor.Caption := InttoStr(y); end; end;Abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DELPHITOTS Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 ola amigo, mas como fao isso dentro de um campo qrexpression do quick report.... preciso desta condicao dentro do relatorio... vai sair a soma1 se for i ou a soma2 se for e..... este procedimetno é pra fazer um condicional no programa e não no relatorio... ou estou errado?grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DELPHITOTS Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 Pessoal consehi fazer somente para uma condicao mas para a outra não tenho ideia como insiro no codigo... deu certo pra uma.. dentro do QrExpr coloco:SUM(IF(IBQuery1.tipoest='e',(pesobruto*numpecas*qtdemat*valorunitcompcad),0))ele faz a soma em todas as linhas que o tipoestoeu for = "'e".. mas eu preciso que faço outra conta se a linha fo "i'como fazer isso? grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ZueRa Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 Tente fazer a mesma coisa com a outra.Abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DELPHITOTS Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 então fiz assim mas não da certoSUM(IF(IBQuery1.tipoest='e',(pesobruto*numpecas*qtdemat*valorunitcompcad),0))SUM(IF(IBQuery1.tipoest='i',(pesobruto*numpecas*qtdemat),0))alguém pode me ajudar? qual a sintaxe dentro do expression pra dar certo com dois condicionais?somente com a primeira linha da certo.....grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 então fiz assim mas não da certoSUM(IF(IBQuery1.tipoest='e',(pesobruto*numpecas*qtdemat*valorunitcompcad),0))SUM(IF(IBQuery1.tipoest='i',(pesobruto*numpecas*qtdemat),0))alguém pode me ajudar? qual a sintaxe dentro do expression pra dar certo com dois condicionais?use 2 QrExpr e coloque uma expressão em cada umaabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 2, 2009 Denunciar Share Postado Abril 2, 2009 então fiz assim mas não da certoSUM(IF(IBQuery1.tipoest='e',(pesobruto*numpecas*qtdemat*valorunitcompcad),0))SUM(IF(IBQuery1.tipoest='i',(pesobruto*numpecas*qtdemat),0))DELPHITOTS, sua idéia está correta, apenas a forma de executá-la não.Vamos avaliar apenas a primeira parte, aquela que você disse que já estava funcionando (post#4):SUM(IF(IBQuery1.tipoest='e',(pesobruto*numpecas*qtdemat*valorunitcompcad),0))Observe que a função SUM, fará o somatório dos valores retornados pela função IF, não é mesmo. Agora olhe para a função IF. O primeiro argumento (IBQuery1.tipoest='e') é a condição a ser avaliada. O segundo argumento (then), você corretamente colocou a cálculo a ser feito quando o resultado desta avaliação é verdadeira. Mas, no terceiro argumento (else), quando a condição é falsa, você instrui ela a retornar o valor zero.Caso o campo tipoest apenas possa possuir um destes dois valores, não tem erro: no lugar do zero, você faz o cálculo para a opção diferente de "e". Entretanto, se houver a possibilidade de outros valores para o campo, então, o que diria a lógica?se tipoest = 'e' então (pesobruto*numpecas*qtdemat*valorunitcompcad) senão (se tipoest = 'i' então (pesobruto*numpecas*qtdemat) senão (0))ou seja,SUM(IF(IBQuery1.tipoest='e', (pesobruto*numpecas*qtdemat*valorunitcompcad), IF(IBQuery1.tipoest='i',(pesobruto*numpecas*qtdemat), 0)))Experimente isto - deveria funcionar.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
DELPHITOTS
Ola pessoal estou com uma duvida, deve ser bem simples mas estou penando pra resolver......
Estou com Delhpi7 e trabalhando com Quick Report e Firebird.....
Tenho estes campos no relatorio:
tipoestoque ndepecas qtde valor total
i 2 10 11 X
e 1 2 8 Y
No total (que é um qrexpression do quick report) eu preciso que faça o seguinte:
- se o tipoestoque for = i o total recebe (ndepecas*qtde*valor)
- se o tipoestoque for = e o total recebe (ndepecas*qtde)
somente isso, mas não consigo fazer isso, alguém pode me ajudar?
Muito obrigado a todos.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.