Pesquisar este blog

segunda-feira, 12 de setembro de 2011

Active Report - Relatório Ativo - Básico

Como prometido, vamos a uma breve porém explicativa... hum.... explicação.

Adendo: Esse post faz uma explicação para a versão 10.1.0 do Cognos, para a versão 10.1.1 as coisas mudam um pouco.

Fundamentos first:
O que você precisa saber antes de começar relatórios em AR?
1 - Controles
2 - Containers
3 - Variáveis

Então vamos vê-los, um de cada vez, começando pelo primeiro. (Não sou retardado apenas bobo).

1 - Controles
Podemos dizer que os controle são a alma de um AR, eles são responsáveis por todo e qualquer dinamísmo, interatividade e muitas vezes lentidão nesse tipo de relatório.

Controles podem ser: prompts ou objetos de dados como listas, crosstabs ou guias. A grande sacada dos controles é que eles são os objetos que fazem as ações, ou seja, eles definem as variáveis, de alguma forma.

2 - Containers
Bom, qualquer objeto que consiga conter dados é naturalmente um container como decks, listas, crosstabs e até mesmo prompts

Containers são objetos que possuem dados capazes de serem filtrados, de alguma forma seja lá qual for.

Reparou que muitos objetos podem ser tanto controles quanto containers? Depende apenas do ponto de vista e da relação entre eles.

3 - Variáveis
Elas variam... hehe, e graças a essa variação as coisas acontecem!!!
Variáveis são definadas fora dos objetos, mas elas são as conexões entre os objetos.
É atravez de uma variável que um controle define o que vai aparecer em um container! Entendeu?

Não? Então vamos a um exemplo, veja que esse é um exemplo não muito básico, mas foi a primeira coisa em que pensei.

Vamos fazer com quer as colunas de uma lista sejam exibidas de acordo com o botão selecionado.
Selecione o botão "Exibir Coluna A" e voila, exibimos a coluna A.

Pretty simple ha?

Então arraste para a tela dois objetos: "Barra de botões" e uma "Lista".
Crie os campos na query da lista e arraste-os para a lista como ao lado <-.
Clique 2x em cada botão defina os nomes como ao lado também, delete o último.

Fez o que foi escrito? Ficou igual a imagem acima? Ótimo.
Então o que fizemos foi incluir um elemento Controle "Barra de botões" e um Container "Lista".

 Repare que ao lado dos objetos aparece um ícone com 2 bolinhas e 2 setinhas. Clique em qualquer um deles e uma janela como essa ao lado deve aparecer. Se não aparecer, você clicou no lugar errado, cancele e tente novamente.

Clique no link "Gerenciar as variáveis do relatório ativo..."

 Agora clique no ícone "Novo" e digite no nome da variável "Selecionar Coluna".

Pronto, criamos uma variável que vai servir de link entre os objetos Controle e Container.

Tudo certo de novo? Então clique em OK e na tela Comportamento interativo selecione o controle "Barra de botões".

 Observe a área "Definir valores de variáveis", é o primeiro quadro. Clique em "Editar".

Deve aparecer uma tela com as variáveis existentes, no campo valor selecione Rótulo.
Rótulo é o nome do objeto da "Barra de botões" que contém os botões (esse nome pode ser alterado), então quando clicar nos botões o "Rótulo" será igual ao nome do botão clicado.

E estamos dizendo que a variável "Selecionar Coluna" vai receber o valor de "Rótulo".

Clique em OK.

Se você, mais uma vez, fez tudo certo a tela ficará como essa, com uma bolinha verde ao lado da "Barra de botões".

Com isso definimos a parte do controle, agora vamos definir o que acontece quando o controle é alterado.

Selecione a coluna A da lista, procura nas propriedades a opção visibilidade da coluna, clique em editar.
Clique em visível com base na condição e depois em editar.



 Abaixo de valor, digite "Exibir Coluna A", o mesmo texto existente na "Barra de botões" e repare que a variável "Selecionar Coluna" está selecionada.
Pode imaginar o que isso significa né? Bom!
Se você seguiu a risca o passo a passo você deve ter chegado a seguinte imagem.

Faça os últimos passos para a outra coluna e rode o relatório para testar sua façanha!

Essa é uma explicação simples de como criar um Active Report.
Todo o processo deve durar 5 minutos.

Qualquer dúvida, comente!!


quarta-feira, 7 de setembro de 2011

Cognos 10 Active Reports

Bom, já faz um tempo que não escrevo, esses últimos dias foram complicados.

Vamos falar finalmente sobre Active Reports ou Relatórios Ativos!! Eeee!! Viva, finalmente a IBM melhorou uma ferramenta!!.

Bem, é isso que parece, mas não pense que isso resolve todos os problemas do mundo, pelo menos é um começo.

Então, uma das possibilidades do Active Report é ser Offline, ou seja, você pode criar relatórios que são salvos e contém dados embutidos.
Com isso, uma das reclamações dos usuários acaba, e eles podem fazer apresentações ou consultas sem depender de estar na rede corporativa.

Outra coisa bem legal é a interatividade, é possível configurar várias conexões entre os objetos e praticamente tudo pode gerar uma reação.
Então você pode clicar numa linha de uma lista e o gráfico ao lado reflete as informações da linha selecionada.

No próximo post explicarei como criar um Active Report básico, aguarde!

quinta-feira, 18 de agosto de 2011

Dica da semana

Quem já viu o erro "CRX-API-0005"e conseguiu arrumar, sabe que isso é uma pegadinha da Cognos.

Descrição do erro:
Erro próximo à ou na posição '0'. A variável denominada '[Query].[Campo]' não é válida.
ou
An error on or around the position '0'. The variable named '[Query].[Field]' is invalid.

Isso sugere que o erro está em alguma variável condicional, porém esse mesmo erro pode aparecer em função de uma "Report Expression".

Como funciona:
O motor do ReportStudio tenta otimizar as queries removendo os Query Itens não utilizados no layout, variáveis condicionais e Report Expressions NÃO são considerados itens de layout por não possuirem containers(List, Crosstab, Repeater), ou seja, você pode colocar qualquer coisa neles, de qualquer query.

Então aparece o erro porque o campo não está no layout.

Como resolver:
Se você está com problema numa Lista então selecione-a e abra a propriedade "Propriedades"(genial esse nome), selecione o campo com problema.



No caso de um Crosstab ou Gráfico você deve selecionar o nó(ex.: crosstab node) que deve ter escopo com o campo, pode ser necessário ajusta em mais de um. Com o nó selecionado o procedimento é o mesmo da lista.


Explicação Cognos 8 e possivelmente Cognos 10 aqui.

segunda-feira, 15 de agosto de 2011

Javascript Parte 3 - Declarando javascripts

Muitas coisas são feitas via javascripts, mas já me acostumei a ver uns erros comuns, cometidos por mero desconhecimento.

Um deles é o simples fato de não declarar os parametros corretos na TAG <script>.

Esse simples fato pode fazer tudo ir por agua abaixo.

O jeito que identifiquei ser ideal é o abaixo, funciona para as versões 6, 7, 8, 9 do IE e ainda para as versões 3, 4 e 5 do Firefox.
<script type="text/javascript" language="javascript"></script>
Em browsers mais antigos a propriedade language era aceita sem problemas, mas nos mais novos se consolidou a propriedade type, então não deixe de declará-la.

Abs

quinta-feira, 4 de agosto de 2011

Dica da semana

Uma dica muito útil para processos de carga.

Você sabe a diferença entre UNION e UNION ALL?

A diferença é bem simples, UNION agrupa dois sources fazendo DISTINCT do resultset, enquanto UNION ALL  apenas junta os resultsets de cada source.

Em outras palavras, UNION ALL é mais performático por economizar o overhead da agregação.

Claro que cada um serve para uma coisa diferente, mas se você sabe o cenário em que trabalha, agora pode escolher se vai utilizar um ou outro.

Abs,

Data Manager 10.1 - Erro no Pivot

Vamos ao primeiro post sobre Data Manager.

Demorou mas por fim apareceu um erro na versão 10.1 do Data Manager, ele aparece com esse síntoma:

  DM-HDL-0104 The handle is valid, but not of the correct type.

Acontece ao editar um Datastream que possúi pivots mapeados, sem explicação aparente.
A explicação é simples, BUG!
Como resolver? Instalando o FP 1.

Agora vamos esperar pra ver se não aparece outro.

terça-feira, 2 de agosto de 2011

Javascript Parte 2 - Executar relatório

Muitas vezes precisamos executar o relatório com uma opção pré definida, mas sem exibir a página de prompt ao usuário.

Uma solução possível é exibir a página de prompt por uma fração de segundos, só para pegar as informaçõs dos prompts e executar o relatório.

Por eexemplo, você quer que o relatório seja executado com o último ano e mes carregado, mas também quer que seja possivel escolher outros períodos.

Então você configura seu prompt pra para trazer de modo decresce os periodos, remove os ifens e a linha de título e manda rodar o relatório, assim a primeira opção da lista será passada como parametro.

Então para executar o relatório via javascript o comando muda de acordo com a versão, veja abaixo os comandos para cada uma:
8.1 e 8.2 - setTimeout('promptActionFinish()',100);
8.3, 8.4 e 10.1 - setTimeout('promptAction(\'submit\')',100);  OU setTimeout('promptAction(\'finish\')',100);
Explanação: o comando setTimeout(arg 1, arg 2) server para chamar a função arg 1 de acordo com o tempo arg 2 em milisegundos.

Lembrando que esse comando deve estar sempre dentro de um HTML Item no rodapé da página, e dentro da TAG <script>