Pessoal, tenho um jTable que traz os dados do banco de dados (firebird) onde tenho datas cadastradas, ocorre que resolvi o problema do usuário deixar uma data vazia cadastrando no lugar disso uma data default tipo 01.01.1899, ocorre que quando faço uma pesquisa essas datas são mostradas no jTable.
Pergunta : Tem como não mostrar essas datas no jTable ou mostrar vazio ou até mesmo 00/00/0000?
Sim, se você tem a data default, basta, apenas, comparar se é esta data e exibir “”
Olá darlan_machado foi ai mesmo que me deparei com o problema esta é a forma que eu exibo os dados:
public void PreencherTabelaATIVOS(String sql) {
umaConexao.conectar();
ArrayList dados = new ArrayList();
//para receber os dados das colunas(exibe os titulos das colunas)
String[] Colunas = new String[]{"Cód.", "Nome", "Data Inicio", "Data Fim", "Data DOC", "Data Perícia"};
umaConexao.ExecutarSQL(sql);
try {
umaConexao.ExecutarSQL(sql);
while (umaConexao.resultset.next()) {
dados.add(new Object[]{
umaConexao.resultset.getInt("codigo"),
umaConexao.resultset.getString("servidor"),
sdf.format(umaConexao.resultset.getDate("dataini")),
sdf.format(umaConexao.resultset.getDate("datafim")),
sdf.format(umaConexao.resultset.getDate("datadoc")),
sdf.format(umaConexao.resultset.getDate("datapericia"))
});
};
ModeloTabela modelo = new ModeloTabela(dados, Colunas);
jTabelaATIVOS.setModel(modelo);
//define tamanho das colunas
jTabelaATIVOS.getColumnModel().getColumn(0).setPreferredWidth(40); //define o tamanho da coluna
jTabelaATIVOS.getColumnModel().getColumn(0).setResizable(false); //nao será possivel redimencionar a coluna
jTabelaATIVOS.getColumnModel().getColumn(1).setPreferredWidth(510);
jTabelaATIVOS.getColumnModel().getColumn(1).setResizable(false);
jTabelaATIVOS.getColumnModel().getColumn(2).setPreferredWidth(80);
jTabelaATIVOS.getColumnModel().getColumn(2).setResizable(false);
jTabelaATIVOS.getColumnModel().getColumn(3).setPreferredWidth(80);
jTabelaATIVOS.getColumnModel().getColumn(3).setResizable(false);
jTabelaATIVOS.getColumnModel().getColumn(4).setPreferredWidth(80);
jTabelaATIVOS.getColumnModel().getColumn(4).setResizable(false);
jTabelaATIVOS.getColumnModel().getColumn(5).setPreferredWidth(80);
jTabelaATIVOS.getColumnModel().getColumn(5).setResizable(false);
//define propriedades da tabela
jTabelaATIVOS.getTableHeader().setReorderingAllowed(false); //nao podera ser reorganizada
jTabelaATIVOS.setAutoResizeMode(jTabelaATIVOS.AUTO_RESIZE_OFF); //nao será possivel redimencionar a tabela
jTabelaATIVOS.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //so podera selecionar apena uma linha
} catch (SQLException ex) {
//apos a consulta acima abrir o formulario mesmo que a tabela esteja vazia
JOptionPane.showMessageDialog(null, "Erro ao preencher o ArrayList!\nErro: " + ex.getMessage());
} finally {
umaConexao.desconectar();
}
}
Como o resultset puxa os dados do banco de dados não consegui visualizar como apresentar estas datas como vazia ou sem dados.
Cara, primeiro que este código misturando front e acesso ao banco de dados é péssimo, sob quaisquer perspectivas.
Mas, ok.
Você pensou, em algum momento, colocar um if ou um case no SQL? É uma alternativa, também.
De qualquer forma, você sempre pode atribuir o resultado de uma query a uma variável e verificar a tal variável, não é mesmo?
String blablabla = rs.getString("blablabla");
if("blebleble".equals(blablabla)) {
//faz algo
}
Concordo com você, mas a minha pergunta inicial persiste:
Se esta linha
sdf.format(umaConexao.resultset.getDate(“datadoc”)),
me retorna o que de fato existe no bando de dados como dizer para o método que exiba uma linha vazia se lá tem dados.
Tipo já tentei
sdf.format(umaConexao.resultset.getDate("")),
mas não aceitou, porque trata-se de uma data e datas não aceitam 00.00.0000
A não ser que eu conseguisse fazer com que o Firebird aceitasse a data em branco.
Veja, de novo eu ressalto que você poe atribuir o valor retornado do banco de dados a uma variável e comparar a mesma, como você disse que está salvando com um valor default, isso é plenamente possível.
Agora, creio que, mesmo um arremedo de banco de dados como o firebird, aceite valores null para colunas, desde que, você as crie corretamente.