Preciso fazer um relatório e preciso que o número de colunas dele não seja fixo, mas que possa variar, por exemplo, quando o relatório for feito para quatro meses possua quatro colunas, quando for feito para seis meses possua seis colunas.
A variação não pode acontecer apenas no número de linhas, mas também no de colunas.
Agradeço qualquer ajuda, obrigado
Ireport
I
1 Resposta
P
onde voce quer fazer esse relatorio? em um frame ou relatorios externos com iReport?
se for em frames tenta fazer da seguinte maneira
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
public class Grid extends JFrame
{
private static final long serialVersionUID = 1L;
Connection con;
JTable table;
public Grid()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:AGE");
}
catch(Exception ex)
{
System.out.println("erro na abertura do banco");
}
getTable();
}
private void getTable()
{
Statement st;
ResultSet rs;
try
{
st = con.createStatement(); //criando uma conexão com Statement
rs = st.executeQuery("Select * from agenda");
Vector cols = new Vector();
Vector lins = new Vector();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i=1;i<=rsmd.getColumnCount();i++)
cols.addElement( rsmd.getColumnName(i) );
while (rs.next())
lins.addElement( getLinha(rs,rsmd) );
table = new JTable(lins,cols);
JScrollPane sp = new JScrollPane(table);
this.getContentPane().add(sp,BorderLayout.CENTER);
validate(); // utilizado junto com o Layout
st.close();
}
catch (Exception ex)
{
}
}
private Vector getLinha(ResultSet rs, ResultSetMetaData rsmd)
{
Vector vect = new Vector();
try
{
for (int i=1; i<=rsmd.getColumnCount(); i++)
switch (rsmd.getColumnType(i))
{ case Types.VARCHAR: vect.addElement(rs.getString(i));
break;
case Types.INTEGER: vect.addElement(new Long(rs.getLong(i)));
break;
}
}
catch (Exception ex) {}
return vect;
}
}
Apenas mude seu SELECT que ja funciona, pois ele tras o numero de linhas e numero de colunas de sua consulta, monta sua tabela com esses valores, nunca com valores fixos.
Criado 3 de setembro de 2006
Ultima resposta 5 de set. de 2006
Respostas 1
Participantes 2
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Engenharia de Prompt para Devs: Um guia para aprender a... Por Ricardo Pupo Larguesa — Casa do Codigo