Pergunta

Eu tenho uma situação nos relatórios de BIRT. Um relatório que criei está insistindo em exibir alguns campos como em branco em vez de zero. A situação surge quando o campo é na verdade um subseleto que não retorna linhas.

Por exemplo, se a seleção incluir:

0 as p3,

Então o 0 é exibido bem. Se, no entanto, o seleção tem:

(select sum(other_field) from other_table where ...) as p3,

O campo está exibindo em branco.

Modificando os dados para que as linhas existam para os subselectos resulta em um valor que está sendo exibido, mesmo que o valor resultante seja zero.

Então, estou pensando que, de alguma forma, Birt está tratando uma sub-seleção que retorna zero linhas como um nulo (que também é exibido como uma célula vazia) em vez de zero. Alguém tem alguma idéia de como coagir Birt a exibir um 0 real em vez de uma célula vazia?

Estou usando o DB2/Z V8 se alguém precisar postar uma resposta específica do DBMS, embora mesmo as sugestões com base em outros fornecedores sejam apreciadas.

Foi útil?

Solução

Tente usar a função Coalesce para forçar um valor quando uma coluna ou expressão puder retornar nulo.

COALESCE((select sum(other_field) from other_table where ...), 0) as p3,

Outras dicas

Outra maneira, embora não seja tão elegante, mas às vezes necessária (por exemplo, se você estiver executando um procedimento armazenado que vocês não pode mudar), seria usar o JavaScript para forçar a exibição de "0" no tempo de execução.

Use a seguinte expressão para sua ligação de dados:

if (dataSetRow["your_data_set"] == null)
{
    0
}
else
{
    dataSetRow["your_data_set"]
}

Dependendo do tipo de dados, pode ser necessário adicionar cotações ao zero

"0"

Para representar strings, sem cotações, é tratado como um número inteiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top