Usuário com melhor resposta
Problema Crystal

Pergunta
-
Bom dia,
Estou com problema na hora de fazer um campo que seria a somatoria de 4 colunas.
Quando todas as colunas tem valores a somatoria é feita normalmente. Mas quando eu alguma dessas colunas não tem valor, ou seja na query esse valor vem null ele não faz a somatoria.
Alguem sabe como faço pra na hora de fazer o calculo da somatorio ele saber se o valor que está vindo da coluna é vazio ou null e jogar valor zero pra ele???
já fiz usando lenght, verificando se está vazio, mas nada deu certo...
Meu codigo é mais ou menos esse.
Dim entrada as Double
Dim troca as Double
Dim outros as Double
Dim venda as Double
if {ArrecadacaoDiaria.Entrada} = null then
entrada = 0
else
entrada = {ArrecadacaoDiaria.Entrada}
end if
if ToText ({ArrecadacaoDiaria.Troca})= "" Then
troca = 0
else
troca = {ArrecadacaoDiaria.Troca}
end if
if ToText ({ArrecadacaoDiaria.ValorVenda})= "" Then
venda = 0
else
venda = {ArrecadacaoDiaria.ValorVenda}
end if
if ToText ({ArrecadacaoDiaria.ValorOutro})= "" Then
outros = 0
else
outros = {ArrecadacaoDiaria.ValorOutro}
end if
formula = entrada + troca + venda + outros
Obrigado
Respostas
-
Alan,
É possível sim. Será necessário criar uma função para "concatenar" os registros.
Code SnippetCREATE
FUNCTION dbo.fnConcatenaObservacao (@codigoCliente INT)RETURNS
VARCHAR (1000)AS
BEGIN
DECLARE
@Observacao VARCHAR(1000)SELECT
@Observacao = ''-- ### Concatena observacao ###
SELECT
@Observacao = @Observacao + Observacao + ' - ' from MovimentodeestoqueWHERE
not observacao = ''AND
codigoCliente = @codigoCliente-- ### Remove caractéres desenecessários ###
SELECT
@Observacao = LEFT (@Observacao, LEN (@Observacao) - 2)RETURN
@ObservacaoEND
GO
Code Snippet-- ### Consulta usando a função ###
SELECT
C.nome, dbo.fnConcatenaObservacao (C.codigoCliente)FROM
dbo.Clientes CAlan, gostaria de pedir apenas que não deixe de marcar os posts dos membros do Fórum MSDN caso a resposta tenha ajudado a resolver a sua dúvida. O seu feedback é importante para melhorar a qualidade do Fórum MSDN Brasil.
Obrigado.
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
Todas as Respostas
-
Ninguem sabe a solução desse problema?? Não funciona aqui de maneira alguma..E uma outra pergunta..Eu tenho uma query assim. Select observao from Usuario where not observao = ' 'O resultado vem assim.1 - Teste2 - Teste 23- Teste 3E eu queria concatenar essas linhas em uma so...mais ou menos assim.1 - Teste / Teste 2 / Teste 3.Alguem tem ideia de como fazer isso??Obrigado
-
Alan,
A fórmula com tratamento para valores nulo fica assim:
Code Snippetlocal numbervar total;
total :=0;if not Isnull({ArrecadacaoDiaria.Entrada}) then
total := total + {ArrecadacaoDiaria.Entrada};if not Isnull({ArrecadacaoDiaria.Troca}) then
total := total + {ArrecadacaoDiaria.Troca};if not Isnull({ArrecadacaoDiaria.ValorVenda}) then
total := total + {ArrecadacaoDiaria.ValorVenda};if not Isnull({ArrecadacaoDiaria.ValorOutro}) then
total := total + {ArrecadacaoDiaria.ValorOutro};if not Isnull({ArrecadacaoDiaria.ValorOutro}) then
total := total + {ArrecadacaoDiaria.ValorOutro};
cstr(total);Mais uma dica:
1 - Webcasts (Vídeos) com diversos exemplos de como construir relatórios de forma profissional com os componentes Crystal Reports e ReportViewer.
Link para download
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3271109&SiteID=21&mode=1ou
http://www.msdnbrasil.com.br/mediacenter/default.aspx
e digitar ReportView no campo Localizar conteúdo:Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
-
Muito obrigado Laercio. O problema do null deu certo aqui.E sobre a query é simples, é a seguinte query.Code Snippet
select observacao from Movimentodeestoque where not observacao = ''
Ai eu quero que mostre o resultado tudo em uma linha so. Porque hoje mostra1 - teste 12- teste 23- teste 3Queria uma resposta do tipo1 - teste 1, teste 2, teste 3.Não sei se isso é possivel. E o banco é sql server 2005Obrigado -
Alan,
É possível sim. Será necessário criar uma função para "concatenar" os registros.
Code SnippetCREATE
FUNCTION dbo.fnConcatenaObservacao (@codigoCliente INT)RETURNS
VARCHAR (1000)AS
BEGIN
DECLARE
@Observacao VARCHAR(1000)SELECT
@Observacao = ''-- ### Concatena observacao ###
SELECT
@Observacao = @Observacao + Observacao + ' - ' from MovimentodeestoqueWHERE
not observacao = ''AND
codigoCliente = @codigoCliente-- ### Remove caractéres desenecessários ###
SELECT
@Observacao = LEFT (@Observacao, LEN (@Observacao) - 2)RETURN
@ObservacaoEND
GO
Code Snippet-- ### Consulta usando a função ###
SELECT
C.nome, dbo.fnConcatenaObservacao (C.codigoCliente)FROM
dbo.Clientes CAlan, gostaria de pedir apenas que não deixe de marcar os posts dos membros do Fórum MSDN caso a resposta tenha ajudado a resolver a sua dúvida. O seu feedback é importante para melhorar a qualidade do Fórum MSDN Brasil.
Obrigado.
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.