Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
Tutorial iReport 0.2.2 Por Bruno R. Lima ( aebrlima@hotmail.com )
Criando relatórios JasperReports utilizando iReport e uma conexão JDBC.
+ O QUE É IREPORT ?
+ CRIANDO UM RELATORIO SIMPLES
++ Iniciando o iReport
++ Criando um Relatório
++ Criando a origem dos dados
++ Selecionado a visualização no Ireport
++ Criando o SELECT dos dados
++ Construindo o relatório
O QUE É O IREPORT ?
O iReport é uma ferramenta que visa facilitar a construção de relatórios utilizando a biblioteca JasperReports ( http://jasperreports.sourceforge.net ) através de uma interface gráfica desenvolvida em Swing. Ele dispõe de importantes ferramentas para desenvolver relatórios complexos e demorados.
Mesmo sem nenhum conhecimento das bibliotecas do JasperReports, você consegue criar relatórios muito interessantes através desta ferramenta e aprender a entender as tags XML utilizadas no JasperReports.
CRIANDO UM RELATORIO SIMPLES
Iniciando o iReport
Se você tiver o Ant instalado em sua maquina, altere o arquivo iReport.bat e iReport.sh para setar o diretório de instalação.
Se você não tem o Ant instalado, vá ao subdiretório noAnt e execute o arquivo startup.bat para iniciá-lo.
Criando um Relatório
No menu File, clique em New Document; Irá aparecer a janela para configurar o seu relatório, entre essas configurações estão o nome do relatório, tamanho da folha utilizada, margens, colunas do relatório entre outras opções.
Para configurar um relatório já criado, alterar o tamanho da folha, margens, etc. vá ao menu View > Report Properties.
Criando a origem dos dados
1. Agora vamos criar uma conexão JDBC para enxergar o banco de dados.
2. Va ao menu DataSources > Connections / DataSources.
3. Irá aparecer uma janela contendo as suas conexões de fonte de dados. Agora iremos criar uma conexão JDBC.
4. Clique no botão New; Selecione em "Type Of Connection / DataSource" a opção "DataBase JDBC Connection".
5. Defina um nome para a conexão: este nome é apenas para identificá-lo no iReport. Ex: "MinhaConexao"
6. Agora você deve selecionar o driver JDBC a ser utilizado. Neste caso vamos utilizar o driver da Oracle, "oracle.jdbc.driver.OracleDriver". Preencha também a URL de conexão com o banco: "jdbcracle:thin:@::". Você deve substituir as opções:
- - Endereço da maquina onde o banco de encontra. Ex: 192.168.0.1;
- - Porta de conexão do banco; Default 1521;
- - A instancia do banco. Ex: oradata;
Neste caso nossa URL seria: "jdbcracle:thin:@192.168.0.1:1521radata".
7. Informe os campos "Database" com a instancia do banco, "User" com o usuário e "password" com a senha do seu banco. Essas informações são necessárias para o iReport conectar-se no banco para obter informações da coluna.
Clique em TEST para testar se a conexão está ok. Se estiver tudo em ordem, clique na opção SAVE para salvar sua conexão.
Se você quiser alterar alguma dessas informações, clique no botão "Modify" da janela "Connections/Datasources".
Após criada a conexão, apenas clique no "X" no canto já janela para fechá-la.
Agora que você criou sua conexão, devemos informar que vamos usá-la no relatório, então vá ao menu "Build" e clique na opção "Set Active Connection". Irá aparecer uma lista das conexões disponíveis. Clique na conexão que criamos, a "MinhaConexao" e clique em ok para selecioná-la.
Selecionado a visualização no IReport
Após criada a conexão, devemos selecionar qual forma queremos visualizar nosso relatório depois de pronto. As opções disponíveis são aquelas que o Jasper disponibiliza. Vamos selecionar a opção PDF Preview para ver em PDF.
Criando o SELECT dos dados
Bem, como o relatório é apenas fictício, criaremos a seguinte query para retornar apenas alguns campos utilizados no relatório.
1. Vá para o menu "Datasource > Report Queries".
2. Ao abrir a janela, encontra-se a area onde deverá ser digitado a sua query.
Nesta janela, você pode criar qualquer query, pois o que importa é o resultado dela.
3. Após digitar sua query, veja que existem os botões "Read Fields" e "Save Query To Report". Clique no primeiro, "Read Field", que irá ler os campos que sua query retorna. Os campos irão aparecer na parte de baixo da janela, com o nome identificado na query e seu tipo correspondete no JDBC. No nosso caso irão aparece os seguintes campos:
- TITULO : java.lang.String
- DATA_CORRENTE : java.sql.Timestamp
- DIAS : java.lang.Double
4. Selecione estes campos, clicando no primeiro, segure a tecla SHIFT e clique no ultimo. Clique no botão "Register Fields To Report". Isto fará com que os campos selecionados sejam criados ( registrados ) no relatório, para poderem ser utilizados. O botão "Clear List" limpa os campos encontrados na sua query.
Se você, por acaso mais tarde resolver incluir um novo campo na sua query, ao clicar no "Register Fields To Report" ele irá verificar se os campos que estão retornando na query já estão registrados no relatório, e não irão ser exibidos, exibindo assim somente os campos novos.
Para utilizar parâmetros no SQL, teremos que adicioná-los depois de criados os campos. Por que? Porque o iReport executa a query do jeito que esta no banco, e se existir algum parâmetro do iReport em sua query, ele irá reclamar, gerando um erro de SQL.
5. Antes de fechar a janela, altere sua query adicionando o parâmetro que iremos criar chamado de "PARAM1":
Para trabalhar com parametros nas queries, devemos identificar que o valor é um valor do iReport, que deverá ser substituido. Por isso utilizamos a sintaxe $P{"nome do parametro"}. Assim, quando executarem a nossa query no relatorio, irão substituir esse valor pelo valor que passaremos como parametro no relatório. No caso de uma variavel, a sintaxe muda para $V{"nome da variavel"}.
Agora clique em "Save Query to Report" e clique em Close para salvar a query e fechar a janela.
Construindo o relatório
Vamos verificar se os campos foram criados corretamente. No meu "View", clique na opção "Report Fields", para abrir a janela dos campos do relatório.
Nesta janela é possível visualizar os campos criados no relatório, bem como as variáveis do relatório e os parâmetros.
Agora devemos criar o parâmetro que incluímos na nossa query, o "PARAM1".
1. Com a janela que exibe os campos aberta, vá na aba "Parameters".
2. Clique em "New"; Informe o nome do parâmetro, no caso "PARAM1", o tipo do parâmetro, neste caso java.lang.String, e um valor default, informe "VALOR DO PARAMETRO". Informe também uma descrição do parâmetro.
3. Clique em Ok, verifique que o parametro foi criado. Feche a janela.
Após criar o parâmetro, vamos adicionar os campos na tela.
1. No menu "Edit" vá na opção "Insert Element...". Aparecerá os elementos que você pode inserir em seu relatório. Vamos inserir um "Static Text" clicando nesta opção. Um "Static Text" é como um label, onde o seu texto ficará estático: você informa o texto.
2. Verifique que o cursor do mouse alterou. Clique em um local do seu relatório, de preferência na área "Page Header", que é o cabeçalho de pagina para incluir o campo.
3. Clique agora no menu "View" e selecione a opção "Element Property". Irá aparecer a janela com as propriedades do campo criado.
4. Vamos alterar o tamanho dele. Altere a propriedade Width e Height para o tamanho desejado. Você pode também alterar o tamanho direto no layout do relatório apenas clicando e arrastando pelas bordas do objeto. Para deixar um tamanho padrao, vamos setar as propriedades para:
- Width: 300
- Height: 30
- Top: 10
- Left: 120
5. Na segunda aba da janela, "Font" vamos informar a fonte usada no objeto, clique nela. Altere as propriedade para:
- "Font Name" = "Arial"
- "Size" = 18
- "Bold" = Checked
- "Horizontal Align" = Center
- "Vertical Align" = Middle
6. Na terceira aba, "Static Text" é onde vamos informar o texto que deverá aparecer, clique nela. Na área que aparece, apague o texto e digite: "Relatório Ireport - JasperReport". Pode fechar a janela, clicando no (X).
7. Para facilitar nossa vida, na barra de menu tem os botões de atalho. Para criar um Text Field, clique no botão que contem a letra "F".Clique agora em alguma área do relatório, de preferência dentro da área escrita "Detail", onde se encontram os detalhes.
Após inserir o campo, de um duplo clique sobre ele, e verá que aparece a caixa de propriedades do objeto. É semelhante as propriedades de um "Static Text" exceto pelas novas abas "Text Field" e "Hyper Link". Altere as propriedades abaixo na aba "Commom"
- Width: 280
- Height: 18
- Top: 10
- Left: 15
Feche a janela de propriedades do objeto.
8. Vamos criar os outros dois campos do relatório: Repita o mesmo procedimento anterior para incluir um campo, mas alterar a propriedade Top para 30 em um e 50 no outro campo. Assim você irá criar mais 2 campos um logo abaixo do outro.
9. Dê um duplo clique no primeiro campo criado para verificar suas propriedades. Na janela de propriedades, clique na aba "Text Field" para alterarmos as propriedades de campos dele.
A propriedade "Textfield Expression Class" é a classe que esse textfield irá representar. No nosse exemplo, esse campo irá representar o titulo que retornará da query. Altere para java.lang.String.
A propriedade "Text Field Expression" é o valor que a mesma irá imprimir, preencha com $F{TITULO}.
Sem fechar a janela, seleciona o segundo campo criado no relatório. Na mesma aba selecionada, a "Text Field" das propriedades do campo, altera as propriedades "TextField Expression Class" para java.util.Date e a propriedade "Text Field Expression" para $F{DATA_CORRENTE}. Altere a propriedade Pattern para "dd/MM/yyyy", que é o formato que queremos exibir a data.
Agora clique no terceiro campo criado e altere as propriedades "TextField Expression Class" para java.lang.Double, "Text Field Expression" para $F{DIAS} e o Pattern para "0000".
Após finalizar a configuração dos campos, clique em Save no meu File para salvar o arquivo, ou no disquete na barra de atalho. Informe o arquivo XML para o qual deseja salvar seu relatório. Confirme.
Para compilar o seu relatório e gerar um arquivo . JASPER, clique no botão laranja, ao lado do zoom de visualização do relatório.
Para executar seu relatório utilizando a conexao ativa, vá em "Build" e "Execute Report ( using active conn )".
Saudações, gostaria de saber como faz para pegar uma imagem da base de dados e colocá-la num relatório do iReport. Esta imagem está armazenada num campo do tipo blob. E o banco de dados que uso é o Postgres.
Desde já, agradeço _________________JavaFree.org
Para usar o iReport precisa ter instalado o Jasper Report?
Tô perdido.
Não estou conseguindo nem instalar o Jasper Reports. Já baixei o programa no site (http://jasperreports.sourceforge.net/requirements.html#jdbc) do sourceforge, mas ele só possui arquivos .jar. Pelo que entendi terei que gerar uma aplicação em java para gerar os relatórios de que preciso.
Eu estava utilizando o Crystal Reports, mas essa m... não funciona em linux. Por isso resolvi mudar para o Jasper que até o momento me parece muito bom. Com excessão da facilidade de instalar!
Tentei segui as instruções no site do jasper reports, mas lá só passa o requerimento do programa.
(Falando nisso não encontrei o Driver JDBC que o site fala).
E preciso urgentemente da ferramenta.
Minha intenção é criar os relatórios tanto em Windows como Linux e rodar os mesmos em ambas plataformas. Aqui eu utilizo o Windows 2000 Server e o Kurumin(Linux). As paginas são desenvolvidas em ASP e o Banco é SQL, e eu gostaria de uma solução para chamar os relatórios a partir do asp.
e só mais algumas questões:
O que é Ant e onde eu encontro?
O JDK que o site se refere é o que vem com o NetBeans (Pois é este que está instalado na minha máquina)?
O JAXP XML Parser que o site se refere não está funcionando nenhum dos links e eu não consegui encontrá-lo. Onde Achá-lo?
Como instalar o XLS no windows 2000(Se é que precisa)? _________________JavaFree.org
se tiver duvidas ainda sobre o IReport pode me cadastrar no messenger...
eu tbm apanhei bastante do IReport qndo começei... agora aprendi alguma coisa com ele
alias... eu naum me importe de alguem me cadastrar... fico feiz em poder ajudar tbm
******************* 24/11/2004 **********************
Pessoal... a algum tempo eu mudei de empresa, e agora não estou mais trabalhando com Java, sendo assim não utilizo mais o JasperReport e nem o IReport... ainda assim podem me cadastrar no msn... mas não tenho mais nenhum exemplo de relatorio para auxilia-los...
**************************************************** _________________JavaFree.org
-Path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Arquivos de programas\ATI Technologies\ATI Control Panel;C:\j2sdk1.4.2_03\lib;C:\jasperreports-0.6.0\lib;C:\mysql\lib;C:\jasperreports-0.6.0\lib\jasperreports-0.6.0.jar;.
O q devo fazer, não sei mais o q devo fazer? _________________JavaFree.org
-Path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Arquivos de programas\ATI Technologies\ATI Control Panel;C:\j2sdk1.4.2_03\lib;C:\jasperreports-0.6.0\lib;C:\mysql\lib;C:\jasperreports-0.6.0\lib\jasperreports-0.6.0.jar;.
kra... naum to lembrado direito, mas acho q vc deve adicionar esses endereços em "Variaveis do Ambiente" no windows, depende da versão q vc usa, tipow no windows 2000, vc vai em propriedades do sistema, na aba avançado tem lah o botão variaveis do ambiente... acho q eh isso
no linux naum sei como funciona mas tenta isso ai, depois vc diz se funciona _________________JavaFree.org
Olá pessoal, estou com um probleminha com um relatório em jasper.
Eu uso o Ireport e estou tentando evitar a quebra de relatório por página.
Necessito que, se um relatório não couber no espaço restante de uma página, esse relatorio deve iniciar em uma nova pagina, deixando todo o espaço no final da pagina atual em branco.
Este relatório contem 4 grupos e eu tentei configurar estes grupos na opção "print header on each page" no menu "Add/modify group".
Com essa configuração, quando não há espaço para o relatório; este é impresso até o final da página, ocorre a quebra, mas todo o relatório se repete na nova página. O problema seria resolvido se o relatório não fosse impresso no final da página onde ocorre a quebra.
Não sei se daria para resolver este problema utilizando a opção "Group Expression".
Alguem tem um tutorial de iReport utilizando a entrada de dados via COLLECTION ou ARRAY??
E sei tiver como criar um PDF somente em memoria para WEB agradeço _________________Luis Fernando Coelho
Bacharel em Ciência da Computação da FURB Blumenau - SC
Gerente de TI
Vc possui algum exemplo de como alimentar um relatorio feito em JasperReport através de um Collection ou Array??
Pq até agora soh vi exemplo com sql do banco. _________________Luis Fernando Coelho
Bacharel em Ciência da Computação da FURB Blumenau - SC
Gerente de TI
Só não ficou claro para mim, como que eu executo ele de "fora", como de um software que eu fiz em java posso chamar o iReport e utilizar já um relatorio pronto...
Galera.... estou gerando relatorios com o ireport numa boa, mas estou com um pequeno problema. A quebra de página está errada, ele está quebrando com +- 2/3 da página e ja começa o conteúdo da proóxima página na mesma. Se alguém tiver alguma idéia de como resolver isso, responda pf. _________________JavaFree.org
Montei o meu software que joga tudo no banco e consegui fazer o iReport rodar e montei o relatorio e tudo funciona..
Está faltando a integração entre os 2.
Copiei o codigo que o amigo colocou lá em cima...
Mas estou tendo erros nas lib´s.... não acha aqui pra compilar
RelatorioLaboratorio.java [12:1] package net.sf.jasperreports.engine does not exist
import net.sf.jasperreports.engine.JasperManager;
^
RelatorioLaboratorio.java [13:1] package net.sf.jasperreports.engine does not exist
import net.sf.jasperreports.engine.JasperPrint;
^
RelatorioLaboratorio.java [14:1] package net.sf.jasperreports.engine does not exist
import net.sf.jasperreports.engine.JasperReport;
^
RelatorioLaboratorio.java [15:1] package net.sf.jasperreports.engine.design does not exist
import net.sf.jasperreports.engine.design.JasperDesign;
^
RelatorioLaboratorio.java [16:1] package net.sf.jasperreports.view does not exist
import net.sf.jasperreports.view.JasperViewer;
Para executar um relaótiro feito pelo Ireport vc utilizará o arquivo compilado do seu relatório XX.jrxml
Logo vc criara um classe em java que será chamada pelo seu programa.
Algo parecido com :
eu tava usando o código disponível no guj e não tava conseguindo gerar a visualização do iReport e
graças ao código disponibilizado aqui consegui gerar a visualização do meu relatório, muito obrigado aih Luis Coelho quanto a dúvida ali das lib's, uma pergunta: Elas foram importadas para a sua IDE??? Por exemple, eu to usando o JBuilder X, para poder encontrá-las tive que ir em required libraries e adicionar os arquivos da pasta lib do iReport, aih elas foram reconhecidas _________________JavaFree.org
Eu queria saber pq o seguinte erro está ocorrendo? Ao executar...
C:\j2sdk1.4.2_08\bin\java.exe -classpath "C:\j2sdk1.4.2_08\jre\lib\rt.jar;C:\j2sdk1.4.2_08\lib\tools.jar;C:\j2sdk1.4.2_08\jasperreports-0.6.6.jar;E:\relatorio" Relatorio
org.xml.sax.SAXParseException: Document root element is missing.
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:66 at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:44 at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:185)
at net.sf.jasperreports.engine.data.JRXmlDataSource.parse(JRXmlDataSource.java:24 at net.sf.jasperreports.engine.data.JRXmlDataSource.(JRXmlDataSource.java:219)
at Relatorio.main(Relatorio.java:16)
NESTED BY :
org.xml.sax.SAXParseException: Document root element is missing.
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:66 at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:44 at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:185)
at net.sf.jasperreports.engine.data.JRXmlDataSource.parse(JRXmlDataSource.java:24 at net.sf.jasperreports.engine.data.JRXmlDataSource.(JRXmlDataSource.java:219)
at Relatorio.main(Relatorio.java:16)
NESTED BY :
net.sf.jasperreports.engine.JRException: Failed to parse the xml document
at net.sf.jasperreports.engine.data.JRXmlDataSource.parse(JRXmlDataSource.java:250)
at net.sf.jasperreports.engine.data.JRXmlDataSource.(JRXmlDataSource.java:219)
at Relatorio.main(Relatorio.java:16)
Caused by: org.xml.sax.SAXParseException: Document root element is missing.
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:66 at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:44
at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:185)
at net.sf.jasperreports.engine.data.JRXmlDataSource.parse(JRXmlDataSource.java:24 ... 2 more
Exception in thread "main" Finished executing _________________JavaFree.org
EhPessoal,
Estou com outra duvida:
Não consigo gerar um relatorio apartir de um XML (jrxml), isso em uma aplicação WEB, pq quanto estou testando por um metodo main no meu projeto java, pega tranquilo.
Eu ja havia passado por isso antes, mas me livrei usando o arquivo ja copilado (.jasper), so que dessa vez eu tenho que usar o JRXML e compilar.
O erro é o seguinte:
Eu acho o seguinte, ele tenta copilar e gera esse *.java temporariamente, so que ele esta pegando um caminho doido, no meu caso o "C:\eclipse3.1\" ao inves do path da minha aplicação. E nesse caminho ele não tem acesso ao jar do JasperReport, entao ele nao acha nenhuma das suas classes.
Uma maneira de fazer relatórios zebrados, na band Detail, adicionar o retangulo q ira aparecer linha sim linha nauh.
Na propriedade desse retangulo, na aba common no espaço Print When Expression adicionar a seguinte regra:
new Boolean(($V{COLUMN_COUNT}.intValue() % 2) == 0)
Como faço para gerar um relatorio frente e verço
E assim tenho um relatorio no ireport frente e outro verso
Como falço para ele gerarem um frente e outro verso
select cst.CST_NOME nomeConsultor, tabelaR.totalMinutos totalMinutosConsultor, tabelaR.nomeProjeto nomeProjeto
from rel_consultor cst,
--tabelaR
(select h.HRS_PRJCST_CST_LOGIN login,
sum(
NVL(
(to_char(h.HRS_SAIDA_AM,'HH24')*60+to_char(h.HRS_SAIDA_AM,'MI'))
-(to_char(h.HRS_ENTRADA_AM,'HH24')*60+to_char(h.HRS_ENTRADA_AM,'MI')),0
)
+
NVL((to_char(h.HRS_SAIDA_PM,'HH24')*60 + to_char(h.HRS_SAIDA_PM,'MI'))
-(to_char(h.HRS_ENTRADA_PM,'HH24')*60 + to_char(h.HRS_ENTRADA_PM,'MI')),0
)) totalMinutos, p.PRJ_NOME nomeProjeto
from rel_horas h, rel_projeto p
where h.HRS_PRJCST_PRJ_COD in(2526,2830,2521,2833,87,34,36,40)
and h.HRS_PRJCST_PRJ_COD=p.PRJ_COD
and (h.HRS_DATA between to_date($P{dataInicial},'DD/MM/YYYY') and to_date($P{dataFinal},'DD/MM/YYYY'))
group by h.HRS_PRJCST_CST_LOGIN, p.PRJ_NOME) tabelaR
--fim tabelaR
where tabelaR.login = cst.CST_LOGIN
order by tabelaR.nomeProjeto, cst.CST_NOME
O problema esta quando eu tento passar um parametro para o "in()" da linha :
where h.HRS_PRJCST_PRJ_COD in(2526,2830,2521,2833,87,34,36,40)
ja tentei passar um parametro do tipo string da seguinte forma:
where h.HRS_PRJCST_PRJ_COD in($P{codProjeto})
e o conteudo de codProjeto seria uma string como essa:
"2526,2830,2521,2833,87,34,36,40"
o que não deu certo. dessa forma soah funciona quando eu tenho apenas 1 projeto : "2526".
não encontrei uma forma de passar um vetor ou algo parecido.
resumindo:
como faço para passar um parâmetro para a clausula in()
galera
seguinte estou tendo um pequeno problema cm o iReport
eu consegui fazer o relatorio tranquilo no iREport soh q o meu problema esta sendo na hora de colocar no meu sistema java.
gostaria de saber como q eu faço pra abrir o meu arquivo xml q o iReport gerou na minha aplicação java.
como q eu faço pra numa classe minha gerar o relatorio
se alguem puder me ajudar
brigado
Alguem sabe me dizer como mudar o top e o left dos Campos dinamicamente?
ou seja passo por parametro o left e o top para posicionar os campos do meu relatorio
Alguém pode me ajudar, fiz o relatorio arquivo .jrxml porem quando acesso ele através de um href, é aberto o código do arquivo e não é executado o relatório, oq deve ser feito para executar o relatório?
Alguém pode me ajudar, fiz o relatorio arquivo .jrxml porem quando acesso ele através de um href, é aberto o código do arquivo e não é executado o relatório, oq deve ser feito para executar o relatório?
Para executar um relatório a primeira coisa que você deve fazer é gerar o .jasper dele....... que é o arquivo compilado......
Após isto você executa e mostra na tela.
poxa to na monografia, to tendo que fazer os relatorios em jasper, mas nao tenho experiencia, o banco(postgres) conecta com o report tranquilo, mas quando eu peço pra ver relatorio no beans,abre a tela do jasper(aquela meio branca ou cinza), mas nao consegue encontrar meu relatorio a tela fica branca, se alguem puder me ajudar ou mandar para mim algum exemlplo desktop usando report eu agradeço.
pessoal, já diversos exemplos de relatorios com Ireport usando dataset, collection, array. Agora estou precisando fazer um passando apenas Objeto. Alguem tem algum exemplo que possa me ajudar? VALEU!!
daltoncamargoPosts:8899
Tutorial iReport 0.2.2
racle:thin:@::". Você deve substituir as opções:
- Endereço da maquina onde o banco de encontra. Ex: 192.168.0.1;
- Porta de conexão do banco; Default 1521;
- A instancia do banco. Ex: oradata;
racle:thin:@192.168.0.1:1521
radata".
--
-- 
Por Bruno R. Lima ( aebrlima@hotmail.com )
Criando relatórios JasperReports utilizando iReport e uma conexão JDBC.
+ O QUE É IREPORT ?
+ CRIANDO UM RELATORIO SIMPLES
++ Iniciando o iReport
++ Criando um Relatório
++ Criando a origem dos dados
++ Selecionado a visualização no Ireport
++ Criando o SELECT dos dados
++ Construindo o relatório
O QUE É O IREPORT ?
O iReport é uma ferramenta que visa facilitar a construção de relatórios utilizando a biblioteca JasperReports ( http://jasperreports.sourceforge.net ) através de uma interface gráfica desenvolvida em Swing. Ele dispõe de importantes ferramentas para desenvolver relatórios complexos e demorados.
Mesmo sem nenhum conhecimento das bibliotecas do JasperReports, você consegue criar relatórios muito interessantes através desta ferramenta e aprender a entender as tags XML utilizadas no JasperReports.
CRIANDO UM RELATORIO SIMPLES
Iniciando o iReport
Se você tiver o Ant instalado em sua maquina, altere o arquivo iReport.bat e iReport.sh para setar o diretório de instalação.
Se você não tem o Ant instalado, vá ao subdiretório noAnt e execute o arquivo startup.bat para iniciá-lo.
Criando um Relatório
No menu File, clique em New Document; Irá aparecer a janela para configurar o seu relatório, entre essas configurações estão o nome do relatório, tamanho da folha utilizada, margens, colunas do relatório entre outras opções.
Para configurar um relatório já criado, alterar o tamanho da folha, margens, etc. vá ao menu View > Report Properties.
Criando a origem dos dados
1. Agora vamos criar uma conexão JDBC para enxergar o banco de dados.
2. Va ao menu DataSources > Connections / DataSources.
3. Irá aparecer uma janela contendo as suas conexões de fonte de dados. Agora iremos criar uma conexão JDBC.
4. Clique no botão New; Selecione em "Type Of Connection / DataSource" a opção "DataBase JDBC Connection".
5. Defina um nome para a conexão: este nome é apenas para identificá-lo no iReport. Ex: "MinhaConexao"
6. Agora você deve selecionar o driver JDBC a ser utilizado. Neste caso vamos utilizar o driver da Oracle, "oracle.jdbc.driver.OracleDriver". Preencha também a URL de conexão com o banco: "jdbc
-
-
-
Neste caso nossa URL seria: "jdbc
7. Informe os campos "Database" com a instancia do banco, "User" com o usuário e "password" com a senha do seu banco. Essas informações são necessárias para o iReport conectar-se no banco para obter informações da coluna.
Clique em TEST para testar se a conexão está ok. Se estiver tudo em ordem, clique na opção SAVE para salvar sua conexão.
Se você quiser alterar alguma dessas informações, clique no botão "Modify" da janela "Connections/Datasources".
Após criada a conexão, apenas clique no "X" no canto já janela para fechá-la.
Agora que você criou sua conexão, devemos informar que vamos usá-la no relatório, então vá ao menu "Build" e clique na opção "Set Active Connection". Irá aparecer uma lista das conexões disponíveis. Clique na conexão que criamos, a "MinhaConexao" e clique em ok para selecioná-la.
Selecionado a visualização no IReport
Após criada a conexão, devemos selecionar qual forma queremos visualizar nosso relatório depois de pronto. As opções disponíveis são aquelas que o Jasper disponibiliza. Vamos selecionar a opção PDF Preview para ver em PDF.
Criando o SELECT dos dados
Bem, como o relatório é apenas fictício, criaremos a seguinte query para retornar apenas alguns campos utilizados no relatório.
1. Vá para o menu "Datasource > Report Queries".
2. Ao abrir a janela, encontra-se a area onde deverá ser digitado a sua query.
Nesta janela, você pode criar qualquer query, pois o que importa é o resultado dela.
3. Após digitar sua query, veja que existem os botões "Read Fields" e "Save Query To Report". Clique no primeiro, "Read Field", que irá ler os campos que sua query retorna. Os campos irão aparecer na parte de baixo da janela, com o nome identificado na query e seu tipo correspondete no JDBC. No nosso caso irão aparece os seguintes campos:
- TITULO : java.lang.String
- DATA_CORRENTE : java.sql.Timestamp
- DIAS : java.lang.Double
4. Selecione estes campos, clicando no primeiro, segure a tecla SHIFT e clique no ultimo. Clique no botão "Register Fields To Report". Isto fará com que os campos selecionados sejam criados ( registrados ) no relatório, para poderem ser utilizados. O botão "Clear List" limpa os campos encontrados na sua query.
Se você, por acaso mais tarde resolver incluir um novo campo na sua query, ao clicar no "Register Fields To Report" ele irá verificar se os campos que estão retornando na query já estão registrados no relatório, e não irão ser exibidos, exibindo assim somente os campos novos.
Para utilizar parâmetros no SQL, teremos que adicioná-los depois de criados os campos. Por que? Porque o iReport executa a query do jeito que esta no banco, e se existir algum parâmetro do iReport em sua query, ele irá reclamar, gerando um erro de SQL.
5. Antes de fechar a janela, altere sua query adicionando o parâmetro que iremos criar chamado de "PARAM1":
Para trabalhar com parametros nas queries, devemos identificar que o valor é um valor do iReport, que deverá ser substituido. Por isso utilizamos a sintaxe $P{"nome do parametro"}. Assim, quando executarem a nossa query no relatorio, irão substituir esse valor pelo valor que passaremos como parametro no relatório. No caso de uma variavel, a sintaxe muda para $V{"nome da variavel"}.
Agora clique em "Save Query to Report" e clique em Close para salvar a query e fechar a janela.
Construindo o relatório
Vamos verificar se os campos foram criados corretamente. No meu "View", clique na opção "Report Fields", para abrir a janela dos campos do relatório.
Nesta janela é possível visualizar os campos criados no relatório, bem como as variáveis do relatório e os parâmetros.
Agora devemos criar o parâmetro que incluímos na nossa query, o "PARAM1".
1. Com a janela que exibe os campos aberta, vá na aba "Parameters".
2. Clique em "New"; Informe o nome do parâmetro, no caso "PARAM1", o tipo do parâmetro, neste caso java.lang.String, e um valor default, informe "VALOR DO PARAMETRO". Informe também uma descrição do parâmetro.
3. Clique em Ok, verifique que o parametro foi criado. Feche a janela.
Após criar o parâmetro, vamos adicionar os campos na tela.
1. No menu "Edit" vá na opção "Insert Element...". Aparecerá os elementos que você pode inserir em seu relatório. Vamos inserir um "Static Text" clicando nesta opção. Um "Static Text" é como um label, onde o seu texto ficará estático: você informa o texto.
2. Verifique que o cursor do mouse alterou. Clique em um local do seu relatório, de preferência na área "Page Header", que é o cabeçalho de pagina para incluir o campo.
3. Clique agora no menu "View" e selecione a opção "Element Property". Irá aparecer a janela com as propriedades do campo criado.
4. Vamos alterar o tamanho dele. Altere a propriedade Width e Height para o tamanho desejado. Você pode também alterar o tamanho direto no layout do relatório apenas clicando e arrastando pelas bordas do objeto. Para deixar um tamanho padrao, vamos setar as propriedades para:
- Width: 300
- Height: 30
- Top: 10
- Left: 120
5. Na segunda aba da janela, "Font" vamos informar a fonte usada no objeto, clique nela. Altere as propriedade para:
- "Font Name" = "Arial"
- "Size" = 18
- "Bold" = Checked
- "Horizontal Align" = Center
- "Vertical Align" = Middle
6. Na terceira aba, "Static Text" é onde vamos informar o texto que deverá aparecer, clique nela. Na área que aparece, apague o texto e digite: "Relatório Ireport - JasperReport". Pode fechar a janela, clicando no (X).
7. Para facilitar nossa vida, na barra de menu tem os botões de atalho. Para criar um Text Field, clique no botão que contem a letra "F".Clique agora em alguma área do relatório, de preferência dentro da área escrita "Detail", onde se encontram os detalhes.
Após inserir o campo, de um duplo clique sobre ele, e verá que aparece a caixa de propriedades do objeto. É semelhante as propriedades de um "Static Text" exceto pelas novas abas "Text Field" e "Hyper Link". Altere as propriedades abaixo na aba "Commom"
- Width: 280
- Height: 18
- Top: 10
- Left: 15
Feche a janela de propriedades do objeto.
8. Vamos criar os outros dois campos do relatório: Repita o mesmo procedimento anterior para incluir um campo, mas alterar a propriedade Top para 30 em um e 50 no outro campo. Assim você irá criar mais 2 campos um logo abaixo do outro.
9. Dê um duplo clique no primeiro campo criado para verificar suas propriedades. Na janela de propriedades, clique na aba "Text Field" para alterarmos as propriedades de campos dele.
A propriedade "Textfield Expression Class" é a classe que esse textfield irá representar. No nosse exemplo, esse campo irá representar o titulo que retornará da query. Altere para java.lang.String.
A propriedade "Text Field Expression" é o valor que a mesma irá imprimir, preencha com $F{TITULO}.
Sem fechar a janela, seleciona o segundo campo criado no relatório. Na mesma aba selecionada, a "Text Field" das propriedades do campo, altera as propriedades "TextField Expression Class" para java.util.Date e a propriedade "Text Field Expression" para $F{DATA_CORRENTE}. Altere a propriedade Pattern para "dd/MM/yyyy", que é o formato que queremos exibir a data.
Agora clique no terceiro campo criado e altere as propriedades "TextField Expression Class" para java.lang.Double, "Text Field Expression" para $F{DIAS} e o Pattern para "0000".
Após finalizar a configuração dos campos, clique em Save no meu File para salvar o arquivo, ou no disquete na barra de atalho. Informe o arquivo XML para o qual deseja salvar seu relatório. Confirme.
Para compilar o seu relatório e gerar um arquivo . JASPER, clique no botão laranja, ao lado do zoom de visualização do relatório.
Para executar seu relatório utilizando a conexao ativa, vá em "Build" e "Execute Report ( using active conn )".
_________________Sugestão de Livros
ledPosts:1
queria saber como eh que faz pra misturar texto e fields em um mesmo campo tpow .....pro texto ficar assim
dia F${dia}, do mes F${mes}.......
alguem sabe???
Pure_Death_MetalPosts:113
ops... o codigo q vc deve inserir no campo "TextField Expression" na aba "Text Field" na propriedade do elemento é o seguinte:

"dia "+$F{dia}+", do mes "+$F{mes}
_________________JavaFree.org
AndZaisPosts:5
blz galera,
tem como alguem mostrar um servlet exibindo o exemplo acima, tipo uma chamada em uma aplicação web.
valeu
_________________JavaFree.org
marcel_kiyoshiPosts:1
Saudações, gostaria de saber como faz para pegar uma imagem da base de dados e colocá-la num relatório do iReport. Esta imagem está armazenada num campo do tipo blob. E o banco de dados que uso é o Postgres.
Desde já, agradeço
_________________JavaFree.org
cearaPosts:38
Cara, primeiramente achei muito bacana essa publicação sua..
Mas travei logo no inicio...
1. O que é um ANT..
2. Não achei nenhum .bat com o iReport..
Podem me ajudar??
Obrigado!
Rafael Ferreira / Ceará
_________________Stackoverflow.com
daltoncamargoPosts:8899