Como passar o mes pela variavel

13 respostas
S

Pessoal, alguem pode me dar uma dica??

Tenho uma tabela…
Nela eu quero que mostre todos os registros que possuem a coluna “TK”+mes com algum registo.

Resumindo, como faco para declarar que o parametro mes seja Janeiro, fevereiro, marco, abril, etc. Ou seja, variado entre janeiro e dezembro…???

Qual a sintaxe?

public void preencheJtable2(String mes)
    {
    
    jTableTK2.getColumnModel().getColumn(0).setWidth(40);
    jTableTK2.getColumnModel().getColumn(1).setWidth(40);
    jTableTK2.getColumnModel().getColumn(2).setWidth(40);
    jTableTK2.getColumnModel().getColumn(3).setWidth(40);
    jTableTK2.getColumnModel().getColumn(4).setWidth(40);
    
    
    DefaultTableModel modelo = (DefaultTableModel)jTableTK2.getModel();
    modelo.setRowCount(0);
    
    
    try
    {        

                          String mes = ?????   //como escrevo isso?? Como faz para o mes ser todos desde janeiro ate dezembro??
           {
              obj_access.executeSQL("select * from Contratos where TK"+mes+" IS NOT NULL" );
              while (obj_access.resultset.next()) {
        modelo.addRow(new Object[]{
        obj_access.resultset.getString("Contrato"),
        obj_access.resultset.getString("Seller"),
        obj_access.resultset.getString("Buyer"),
        obj_access.resultset.getString(mes),
        obj_access.resultset.getString("TK"+mes),
        obj_access.resultset.getString("DataContrato"),
        obj_access.resultset.getString("ContratoCod")});
        }
        obj_access.resultset.first();
        }
        
    }  
    
    catch (SQLException erro)
    {
    JOptionPane.showMessageDialog(null,"Erro ao listar no JTable "+erro);
    }  
    }

13 Respostas

T

Qual é a definição da sua tabela Contratos?

S

A tabela contratos possui o mes (Janeiro), o TK do mes (TKJaneiro), o mes (Fevereiro), o TK do mes de fev (TKFevereiro). e assim por diante

B

Bem o mês tem que ser um de cada vez, não dá pra fazer todos ao mesmo tempo, se quiser coletar os dados de todos os meses dessa forma, consulte várias vezes. Ou faça uma SQL para tudo.

Pode tentar fazer um enum de meses para defini-los.

S

Resolvi já…

public void preencheJtable2()
    {
    
    jTableTK2.getColumnModel().getColumn(0).setWidth(40);
    jTableTK2.getColumnModel().getColumn(1).setWidth(40);
    jTableTK2.getColumnModel().getColumn(2).setWidth(40);
    jTableTK2.getColumnModel().getColumn(3).setWidth(40);
    jTableTK2.getColumnModel().getColumn(4).setWidth(40);
    
    
    DefaultTableModel modelo = (DefaultTableModel)jTableTK2.getModel();
    modelo.setRowCount(0);
        
       try
    { 
      mes = "Janeiro";
      
        if(mes.equals("Janeiro")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
            obj_access.resultset.first();
            ABC();
            mes="Fevereiro";
        } if(mes.equals("Fevereiro")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
            obj_access.resultset.first();
            ABC();
            mes="Março";
       } if(mes.equals("Março")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL");
            obj_access.resultset.first();
            ABC();
            mes="Abril";
        } if(mes.equals("Abril")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL");
             obj_access.resultset.first();
            ABC();
           mes="Maio";
        } if(mes.equals("Maio")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Junho";
        } if(mes.equals("Junho")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Julho";
        } if(mes.equals("Julho")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Agosto";
        } if(mes.equals("Agosto")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Setembro";
        } if(mes.equals("Setembro")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Outubro";
        } if(mes.equals("Outubro")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Novembro";
        } if(mes.equals("Novembro")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           mes="Dezembro";
        } if(mes.equals("Dezembro")){
            obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
             obj_access.resultset.first();
            ABC();
           
        }
      
        
       
       }  
     catch (SQLException erro)
    {
    JOptionPane.showMessageDialog(null,"Erro ao listar no JTable2 "+erro);
    }  
    }

    
    public void ABC() throws SQLException{
        DefaultTableModel modelo = (DefaultTableModel)jTableTK2.getModel();
       // modelo.setRowCount(0);
        while (obj_access.resultset.next()){
        modelo.addRow(new Object[]{
                    obj_access.resultset.getString("Contrato"),
                    obj_access.resultset.getString("Seller"),
                    obj_access.resultset.getString("Buyer"),
                    mes,
                    obj_access.resultset.getString(mes),
                    obj_access.resultset.getString("TK"+mes),
                    obj_access.resultset.getString("DataContrato")
         
    });
        }
    
    }

até que nao ficou tao mal nao acham???

S

No momento deu certo, porem, no jTable, ele nao esta listando todos os registros que estou pedindo.

A consulta de Janeiro:… “select * from Contratos where Janeiro IS NOT NULL” …está faltando a ultima linha do banco de dados…

A consulta de Março por exemplo está faltando o primeiro registro…

Se alguem soubesse porque isso acontece, poderia compartilhar conosco por favor???

B

:?

String[] meses = {"Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};

for (String mes : meses)
{
    obj_access.executeSQL("select * from Contratos where "+mes+" IS NOT NULL" );
    obj_access.resultset.first();
    ABC(mes);
}
B

naoki420:
No momento deu certo, porem, no jTable, ele nao esta listando todos os registros que estou pedindo.

A consulta de Janeiro:… “select * from Contratos where Janeiro IS NOT NULL” …está faltando a ultima linha do banco de dados…

A consulta de Março por exemplo está faltando o primeiro registro…

Se alguem soubesse porque isso acontece, poderia compartilhar conosco por favor???

Não sei como esse obj_access está implementado p/ pode dizer. Ligue o debugador da tua IDE e veja linha a linha o que está acontecendo.

S

resolvi
eh soh tirar o obj_access.resultset.first(); que vem antes do ABC();

S

Viver eh aprender neh…

voce transformou o mes em meses ???
facil assim??

Agora sim ficou bom!!!

ahuhau, valeu

B

naoki420:
voce transformou o mes em meses ???
facil assim??

Não.

Leia isso como “Para cada mes em meses, faça estas operações”

S

Pessoal

estou com uma dificuldade de sql.

tenho a minha expressao normal com apenas um campo:

“select * from Contratos where “+mes+” IS NOT NULL” ;

Ok

Porem, como faço para mostrar os registros que alem de serem Null
no campo1( “+mes+” ) tambem sejam diferentes do campo ( TK"+mes+") ???

seria assim:

“select * from Contratos where “+mes+” IS NOT NULL AND != TK”+mes;

???

B

select * from contratos where mes is not null and mes <> TKmes

S

Valeu Brunao…
Abaixo ficou ainda melhor.
Assim mostra onde o TKmes é diferente mesmo sem nenhum dado dentro.

"select * from Contratos where (mes is not null and mes <> TKmes) or (mes is not null and TKmes is null)"

Abaixo mostra onde o TKmes é diferente apenas quando o TKmes tem algum dado dentro.

"select * from Contratos where (mes is not null and mes <> TKmes)"

Criado 13 de abril de 2009
Ultima resposta 14 de abr. de 2009
Respostas 13
Participantes 3