Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como dividir um valor por 0 (zero) no Crystal Reports?&#33


BStar

Pergunta

Olá a todos... Mais uma vez pedindo ajuda :D

Bom, ao problema...

Tenho 3 campos no meu relatório, vamos chama-los de campo1, campo2 e campo3.

O campo1, é a soma de outros campos;

O campo2, é a soma em $ de outros campos;

E o campo3, a o resultado da soma do campo1 dividido pela soma em $ do campo 2.

Só que no campo1, eu posso ter 0 (zero) ou números maiores que 0... Aí começa a minha dor de cabeça :(

Por conta desse "0" eu não consigo fazer a divisão, uma vez que não podemos dividir nada por zero.

Ai eu fiz uma formula para substituir o "0" por 1, e quando fosse feita a divisão, não teria divergência no valor porque se for igual a "0", o resultado seria o próprio campo2.

Só que eu não posso trocar o "0" por "1" (um) por que tenho que imprimir na tela o total real do campo1 (não posso colocar 1 lá se a pessoa sabe que não teve nada... Ela não vai entender que isso é interno :blink: )

Bem, eu queria fazer mais ou menos assim:

Quando o valor for diferente de "0" faça o calculo e quando for = "0" não faça o calculo e me mostre no campo3 o valor do campo2

Tipo:

campo1 / campo2 = campo3

ou

se o campo1 = 0 então

mostre o valor do campo2 no campo3

se não

campo1 / campo2 = campo3

Tem como fazer?

Não sei se expliquei direito mas acho que deu para entender...

O meu muito obrigado e bom feriado a todos!

Abraço!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Ai eu fiz uma formula para substituir o "0" por 1, e quando fosse feita a divisão, não teria divergência no valor porque se for igual a "0", o resultado seria o próprio campo2.

Só que eu não posso trocar o "0" por "1" (um) por que tenho que imprimir na tela o total real do campo1 (não posso colocar 1 lá se a pessoa sabe que não teve nada... Ela não vai entender que isso é interno :blink: )

então, faca a formula, mas use ela so pro calculo. na hora demostrar o campo1, você mostra o campo original.

Link para o comentário
Compartilhar em outros sites

  • 0
Ai eu fiz uma formula para substituir o "0" por 1, e quando fosse feita a divisão, não teria divergência no valor porque se for igual a "0", o resultado seria o próprio campo2.

Só que eu não posso trocar o "0" por "1" (um) por que tenho que imprimir na tela o total real do campo1 (não posso colocar 1 lá se a pessoa sabe que não teve nada... Ela não vai entender que isso é interno :blink: )

então, faca a formula, mas use ela so pro calculo. na hora demostrar o campo1, você mostra o campo original.

Olá Kuroi, boa tarde...

Eu tentei mas não entendi direito que você quis dizer :wacko:

edit:

Essa é a formula que eu fiz para trocar o "0" por "1":

IF Sum ({TABELA.DIARIAS}, {TABELA2.RAZAO_SOCIAL}) = 0 THEN
    Formula = 1
Else
    Formula = Sum ({TABELA.DIARIAS}, {TABELA2.RAZAO_SOCIAL})

End if

Agora eu entendi o que você quis dizer... Eu já tentei fazer isso, mas não sei como é que eu vou usar essa formula...

Ela está em um campo, mas como eu criei ela pelo "Formula Fields" eu não sei como é que faço cálculos com ela :(

Tipo dividir esse campo que contém essa formula por um outro campo do meu relatório :(

Abraço...

Editado por BStar
Link para o comentário
Compartilhar em outros sites

  • 0

Bem... Depois de muito quebrar a cabeça, consegui fazer uma gabiarra enorme mas funcionou :D

Só tenho que deixar anotado porque depois, para dar algum tipo de manutenção, vai ser complicado

Tipo... Quando eu fiz aquela formula "pedindo" para transformar as diárias que fossem = 0 em 1... E, caso contrário, deixava como está... Até aí tudo bem... Mas eu fiz uma modificação, tipo se o campo diária fosse = 0, transformasse em 1, se não, já divida as diárias com o valor cobrado.

Dei o nome de campo1(ex) ... Ficou assim:

IF Sum ({TABELA1.DIARIAS}, {TABELA2.RAZAO_SOCIAL}) = 0 THEN
    Formula = 1
Else
    Formula = Sum ({TABELA3.VALOR_COBRADO}, {TABELA2.RAZAO_SOCIAL}) / Sum ({TABELA1.DIARIAS}, {TABELA3.RAZAO_SOCIAL})
End If
Tipo: se as diárias cobradas for igual a 0, então mude para 1 senão, já divida o valor cobrado com a soma das diárias... Deixei esse campo oculto e guardado. Depois, criei outra formula (campo2) usando esse campo1... Ficou assim:
If {@campo1}  = 1 then
***Formula = Sum ({TABELA3.VALOR_COBRADO}, {TABELA2.RAZAO_SOCIAL})
Else
formula = Sum ({ITABELA3.VALOR_COBRADO}, {TABELA2.RAZAO_SOCIAL}) / Sum ({TABELA1.DIARIAS}, {HOSPITAIS.RAZAO_SOCIAL})
End If

Tipo: se o campo1 (oculto) for igual a 1, então o resultado é o valor cobrado sem calculo algum... Se não, divida o valor cobrado com as diárias apresentadas.

Depois joguei o campo2 no lugar do custo médio por diária e ficou perfeito.

Mas depois, olhando para o relatório, vi que se não houve diárias ( = 0), então não pode haver valor médio ou o valor médio é igual a = 0,00 certo?

Então troquei a linha que está com os asteriscos pela seguinte

Formula = 0

Sei que há um modo mais fácil de fazer mas por enquanto que estou sem tempo para resolver esse tipo de problema, vai ficar assim, depois que entregar os relatórios, eu faço uma revisão dessas formulas/ queries e dou uma enxugada no código...

Muito obrigado a todos e espero que isso, também ajude alguém :D

Abraço.

Editado por BStar
Link para o comentário
Compartilhar em outros sites

  • 0
isso, foi isso q eu quis dizer no post ali em cima.

eu tava te respondendo na quarta, quando eu tava no trampo so q ai tive q parar pra ver otras coisas la e não deu. ai voltei hj aqui pra ver, q bom q resolveu, falou.

Então... Fiz isso partindo do raciocínio da sua resposta... Eu só não sabia como montar a lógica que você passou...

Quebrei um pouco a cabeça e consegui... Foi exatamente o que você disse... A formula eu usei para o calculo, e para exibir, eu deixei com o campo1 mesmo...

Muito obrigado pela ajuda.

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
isso, foi isso q eu quis dizer no post ali em cima.

eu tava te respondendo na quarta, quando eu tava no trampo so q ai tive q parar pra ver otras coisas la e não deu. ai voltei hj aqui pra ver, q bom q resolveu, falou.

Então... Fiz isso partindo do raciocínio da sua resposta... Eu só não sabia como montar a lógica que você passou...

Quebrei um pouco a cabeça e consegui... Foi exatamente o que você disse... A formula eu usei para o calculo, e para exibir, eu deixei com o campo1 mesmo...

Muito obrigado pela ajuda.

Abs!

Olá... Só para deixar registrado, além dessa forma que eu fiz acima, descobri uma maneira mais simples de fazer....

É só declarar uma variável (x) do tipo número (Basic Syntax) no "Formula Fields", e verificar na sua condição se ela (x) é = 0, se for, atribui um valor para ela (1), se não, mostra ele mesmo (x).

Depois é só fazer o calculo (divisão) com o valor de "X".

Dim x As Number

x = IIF (Sum ({TABELA.CAMPO}) = 0, 1, Sum ({TABELA.CAMPO}))

formula = Sum ({TABELA.CAMPO2})/ x

Espero que ajude alguém :D

Abs!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...