Como não mostrar data cadastrada no banco de dados dentro do jTable

5 respostas
java
E

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?

5 Respostas

darlan_machado

Sim, se você tem a data default, basta, apenas, comparar se é esta data e exibir “”

E

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.

darlan_machado

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
}
E

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.

darlan_machado

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.

Criado 5 de junho de 2018
Ultima resposta 7 de jun. de 2018
Respostas 5
Participantes 2