Relatórios

Estou aprendendo a gerar os relatórios do ScadaBR e encontrei um problema.

Toda vez que incluo no relatório os eventos, sejam apenas os alarmes, sejam todos os eventos, ocorre uma “falha na execução”. O mesmo setup, apenas retirando os eventos, funciona perfeitamente.

Depois da falha, se clico em um dos ícones para exportar (eventos ou gráficos), aparece isso na aba aberta:

System exception!

The server has experienced an exception processing your last request. The exception has been logged, and system administrators will be notified of this problem. You may continue to use the site. We apologize for the inconvenience.

Show error details

Já o download do csv ocorre normalmente.

Alguém pode ajudar com esse erro? A inclusão dos eventos é para mim a parte mais importante dos relatórios…

Alguém por aí?

Rapaz. dá uma raiva qdo isso acontece né, também já sofri com respostas lentas, vc lembra eu acho, até desanimei um pouco com o fórum, acho que deveria ser mais rápido o suporte. Cara, olha, eu também já tive problemas parecidos, mas sinceramente não tive solução nem sei como fazer, para mim, como não era necessário ter isso, eu simplesmente abandonei, mas to escrevendo só para saber que vc não foi completamente ignorado, alguém já te leu, rs, cara, eu já vi algo aqui no fórum falando exatamente disso, mas acho que também não teve solução. Calma que alguém vai dar uma resposta mais útil que a minha ainda!

Abraço

Oi Fábio, eu olhei todos os posts do fórum e não achei nada parecido. Talvez eu tenha deixado escapar algo.

Sobre o suporte, claro que eu também gostaria de respostas a jato, mas o software é livre e grátis, então não há do que reclamar, apenas agradecer quando alguém reponde!

Enquanto isso tô aqui esperando…

Abraço

Você tem toda a razão quanto ao suporte, temos mais é que agradecer, é que as vezes sou meio impaciente. Tem algumas dúvidas como essa sua que só mesmo a galera que desenvolve que vai saber responder se já foi realmente implementada essa função ou se passou desapercebido na hora de lançar a versão. Vamos aguardar.

Abraço

Boa tarde,

Poderia postar o trecho do log stderr para termos uma idéia do motivo?

Att.

Olá Diego, obrigado pela ajuda.

Não entendi o que você quer dizer com “o trecho do log stderr”.

Quando clico em “Show error details”, aparece um log grande demais para colocar aqui. É uma parte deste log a que vc se refere? Ou a algum arquivo da pasta “ScadaBR\logs”?

Outra coisa, o erro acontece tanto no Linux quanto no Windows.

Opa, acabo de perceber que na pasta “logs” do ScadaBR no Windows existem aquivos de log chamados stderr, mas todos os arquivos estão vazios.

E no Linux estes arquivos não existem…

Olá,

Pode ser um bug no engine de eventos resultante das últimas alterações de versão;
Por favor indique a versão exata (0.8.6 ou 0.9)

outra coisa
os principais logs estão em “catalina.out” na pasta logs.
tenta postar aqui o último erro, ou então as últimas 20 ou 30 linhas.

normalmente aponta especificamente uma classe java criadora do erro (“exception XXX at YYY”) seguido de diversas linhas com um “caused by: XXX”

abraço

Minha versão é a 0.86.

O log tirado de catalina.out:

ERROR 2011-07-05 21:51:23,314 (com.serotonin.mango.rt.maint.BackgroundProcessing$1.run:57) - Error in work item
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [insert into reportInstanceEvents (eventId, reportInstanceId, typeId, typeRef1, typeRef$
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.translate(SQLExceptionSubclassTranslator.java:78)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:237)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:606)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:791)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:849)
at com.serotonin.db.spring.ExtendedJdbcTemplate.update(ExtendedJdbcTemplate.java:132)
at com.serotonin.mango.db.dao.ReportDao.runReport(ReportDao.java:342)
at com.serotonin.mango.rt.maint.work.ReportWorkItem.execute(ReportWorkItem.java:124)
at com.serotonin.mango.rt.maint.BackgroundProcessing$1.run(BackgroundProcessing.java:53)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLSyntaxErrorException: ‘ALTERNATEACKSOURCE’ is not a column in table or VTI ‘APP.REPORTINSTANCEEVENTS’.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.(Unknown Source)
at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.springframework.jdbc.core.JdbcTemplate$SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1309)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:584)
… 9 more
Caused by: java.sql.SQLException: ‘ALTERNATEACKSOURCE’ is not a column in table or VTI ‘APP.REPORTINSTANCEEVENTS’.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
… 24 more
Caused by: ERROR 42X14: ‘ALTERNATEACKSOURCE’ is not a column in table or VTI ‘APP.REPORTINSTANCEEVENTS’.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.ResultColumn.bindResultColumnByName(Unknown Source)
at org.apache.derby.impl.sql.compile.ResultColumnList.bindResultColumnsByName(Unknown Source)
at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
… 18 more

Valeu scadabr!

Ótimo Rodrigo,

era o que a gente precisava para começar o debug.
já vimos que falta um item no sql - pode ter se perdido na última atualização do mango

abraço

Certo, aguardo notícias então.

Há mais alguma informação que eu possa passar?

Oi scadabr, alguma novidade?

Rodrigo,

o ScadaBR 0.9.1 chegou hoje à etapa de testes.
como tem muitas features e correções, provavelmente vamos testar até o fim da semana.

as correções devem incluir a questão do relatório.

abraço

Certo scadabr, aguardarei a versão 0.9.1 para retomar os testes com relatórios.

Rodrigo, galera do portal

Em primeiro lugar desculpem mesmo pela demora, estamos em grande agitação para finalizar o software, entregar documentação para os patrocinadores do projeto, lançar mini-cursos, viajando o país direto (SC, RS, PR, SP…) e até “estabilizar” essa agitação, realmente o suporte ao portal fica devendo um pouco. Com certeza à medida que mais integradores vão se envolvendo, conseguimos manter uma estrutura mais forte para o suporte, em poucos meses a MCA estará lançando inclusive um novo portal com novas opções de suporte…

Bom sobre os reports era em princípio até relativamente simples, apenas tinha que dominar o uso da ferramenta Derby e localizar os arquivos da versão correta, para poder mostrar aqui como faz, sem precisar reinstalar o scadabr. Coloquei as instruções em um pequeno video no youtube, veja abaixo:


Resolvendo problemas com reports no ScadaBR
(mais detalhes no vídeo)

  1. instalar a ferramenta de acesso a base Derby (ou mysql se for o caso)
    http://archive.apache.org/dist/db/derby/db-derby-10.6.2.1/db-derby-10.6.2.1-bin.zip
    descompactar em c:\apache
  2. acessar a base com permissão de administrador (windows 7 ou vista requerem permissão especial, acesse usando prompt de comando como admin)
  3. conectar a base c:\progra~1\scadabr\bin\scadabrdb (ou equivalente no seu computador, por exemplo c:\arquiv~1\scadabr\bin\scadabrdb ou localhost:3306/scadabrdb no mysql)
  4. adicione a coluna ALTERNATEACKSOURCE tipo Inteiro na tabela REPORTINSTANCEEVENTS
    ALTER TABLE REPORTINSTANCEEVENTS ADD COLUMN ALTERNATEACKSOURCE;

boa sorte! este erro estará consertado já no instalador, a partir do scadabr 0.9.1

abraço
victor

Aooooow, agora sim, videozinho fica sempre mais fácil, só faltou a músiquinha do Bob Marley de fundo hehe, viu, legal, mas achei um tantinho complicado, essa parte de banco de dados ainda não me é familiar, essa é a única solução para o problema da geração de gráficos com eventos que vai existir ou na nova versão (talvez pra 0.9.1 não dê mais tempo né) isso já virá corrigido?

Victor, quando der, por favor, responde meu post do “CELULAR”, é sobre banco de dados o problema…

ABraço!

Na versão 0.9.1 esse erro estará corrigido tanto para windows quanto para linux, e tanto para derby quanto para mysql?

Pois o vídeo trata do erro no derby e no windows, mas a tendência é que minhas implementações sejam com mysql (agora que aprendi a migrar e a fazer o backup e restauração do mysql, vide outro post) no linux…

galera

esse erro foi um equivoco nosso na migração do mango.
na 0.9.1 estamos revisando todas as tabelas (mysql e derby, win e linux)

no mysql das versões 0.8.6 e 0.9 o conserto seria muito similar (foi a mesma tabela que tem o erro), nesse caso a sugestão é estudar o mysql workbenck (ou mysql gui tools) oficial da mysql e usar a ferramenta gráfica para adicionar a coluna que falta (alternateacksource na tabela reportinstanceevents)

flw