Relatório - Alterando visível de campos via calculo
Neste conteúdo iremos abordar o assunto da aba Cálculo no Report Builder. Criamos uma condição que caso o SQL da pipe retorne um valor em especifico, irá mostrar um campo no relatório, caso for diferente, irá mostrar um outro campo.
Criando relatório e o SQL:
No modulo de Inteligência selecione a opção de Relatórios:
Logo após clique em Novo [F2] para criar um novo relatório:
Caso tiver um template já pronto você poderá informar no campo Template. Em seguida clique em Criar.
Logo após, o sistema irá abrir o Report Builder. Na aba Dados vamos criar o SQL que retornará os dados que desejamos usar para aplicar a condição de mostrar ou não um campo dependendo do seu valor retornado do SQL.
Clicando em Dados > Logo após clique em Arquivo > Novo
Depois selecione a opção de Construtor de Consultas
Assim irá abrir o construtor, vá na aba de Código SQL conforme a imagem abaixo :
Assim que abrir a Pipe para informar o comando SQL clique com o botão direito e clique em Editar SQL e logo após confirme o popup de autorização da edição.
Logo após de um nome a Pipe e insira o seguinte código SQL :
Nome da Pipe: DADOS
SELECT versaodb FROM VERSAOD
Clique em Ok para salvar o código.
Criando campos
Neste topíco iremos criar apenas dois campos para alterar sua propriedade de visível ou não, clicando na Aba Desenho > Clique no icone de Texto (" A ") > Clique no espaço do relatório aonde deseja que apareça os campos.
Agora vamos tirar a propriedade do campo para que ele mostre somente quando nos retornamos o valor do SQL, Selecionando o campo de texto criado, no menu Appearance desmarque a opção de Visible, faça isso para os dois campos:
Lógica aplicada:
O retorno do SQL que desenvolvemos irá retorna a versão do banco de dados do sistema, atualmente estamos na versão 570, logo isso, irá mostrar o campo "Se for igual a 570", caso não seja 570 o retorno irá mostrar o campo "Se for diferente de 570"
Configurando Evento:
Na aba de Calculo -> Clique com o botão direito e selecione a opção Evento -> Expanda a aba Detail e clique em um dos Label's criados anteriormente -> Selecione o Evento de OnPrint:
*** o Evento OnPrint é executado assim que o relatório é mostrado em tela.
Após selecionar o evento clique no espaço abaixo para o Report Builder trazer a sintaxe padrão, neste campo será aonde iremos aplicar toda a condição para mostrar ou não os campos.
Condição usada:
if (DADOS['VERSAODB'] = '570') then
begin
Label1.Visible := True
end
else
begin
Label2.Visible := True
end;
Usando dados da pipe para aplicar a na condição: No menu que se encontra no canto inferior direito, Selecione a opção Dados -> Clique na Pipe que foi criada ("DADOS") -> Arraste o campo que irá retorna para a condição
Alterando a propriedade do campo para visible: Selecione a aba Objetos > Clique no Label a qual deseja alterar a propriedade e logo após arraste a opção que deseja alterar para o editor.
*** Atribuímos True para que apareça o campo assim que mostrar o relatório. Aplicando todas essas configurações basta ir na aba desenho e salvar o relatório.
Demonstrando o Relatório:
**** Durante a demonstração é alterado a informação do banco para que o relatório imprima caia nas duas condições que criamos.
Condição simplificada:
Label1.Visible := (DADOS['VERSAODB'] = '570') ;
Label2.Visible := not (DADOS['VERSAODB'] = '570') ;
Não precisaria do If aplicando a condição como já foi citado, neste caso ele irá ver se o valor que retornou do SQL é o 570 então será True e para o segundo Label ele verificaria se caso o de cima fosse False então ele negaria essa condição passando a ser True, mostrando o segundo campo. Uma forma mais simples de aplica a mesma condição.