Listar valores em um JTextArea

Oi … o meu problema e o seguinte…
No meu sistema tem uma formulário q gera uma lista com os aniversariantes do Mês… O mês é selecionado através de um JComboBox e ao clicar no JButton ele realiza a pesquisa e gera a lista com os nomes de todos os funcionários q fazem aniversário naquele mês…
Mais não estou conseguindo gerar a lista… a pesquisa para no primeiro funcionário e o lista e naum da continuidade…

Aqui eu pesquiso a Data de Aniversario e seleciono os funcionarios q fazem aniversario naquele mes…

[code]
String pesquisaDataNasc() {
try {
ResultSet resultado = bd.consultaTable(“SELECT dt_nascimento FROM funcionario WHERE nome =’” + n2 + “’”);
if (resultado != null && resultado.next()) {
do {
dt_n = (resultado.getString(“dt_nascimento”));
} while (resultado.next());
}
} catch (java.sql.SQLException e) {
System.err.println(dt_n);
}
return dt_n;
}
void pesquisaMes(String mes) {

    int x = 0;
    try {
        ResultSet resultado = bd.consultaTable("SELECT COUNT(id_func) FROM funcionario WHERE mes ='" + mes + "'");

        if (resultado != null && resultado.next()) {
            do {

                x = (resultado.getInt("COUNT(id_func)"));

            } while (resultado.next());
        } else {
        }
    } catch (java.sql.SQLException e) {
        System.err.println("erro de SQL:" + e.getMessage());
    }


    DefaultListModel model = new DefaultListModel();      

    while (i < x) {
        i++;
        try {
            ResultSet resultado = bd.consultaTable("SELECT nome FROM funcionario WHERE mes = '" + mes + "'");
            if (resultado != null && resultado.next()) {
                this.mes = (resultado.getString("nome"));
                teste[i] = this.mes;
                resultado.next();            
            } else {
                x++;
            }

        } catch (java.sql.SQLException e) {
            System.err.println("erro de SQL:" + e.getMessage());
        }
    }
}

String retornaAlgumaCoisa() {
    return teste[i];

}[/code]

Aqui eu pego a data e a divido selecionando o mes para comparação no banco e exibo o nome na lista

dtn = cad.pegaDataAniver();
        combo = comboMes.getSelectedItem().toString();

        if (dtn.equals("__/__/____")) {
            mes1 = "__/__/____";
        } else {
            data = dtn;
            a = data.substring(3, 5);
            mes = (a);
        }
        cad.pesquisaMes(combo);
        String resposta;

        resposta = cad.retornaAlgumaCoisa();

        lstAniversarios.setText(resposta + "\n");

Não sei se fui clara o suficiente… mais se alguem puser me ajudar ficarei grata…

É impressão minha, ou no seu banco mês é um String?

Olá ViniGodoy … sim o campo mês é um String… posso estar enganada mais creio q naum seje esse o problema ja q a pesquisa e
realizada sem problemas, a questão e q não consigo listar mais de um funcionário…

Olá ViniGodoy … sim o campo mês é um String… posso estar enganada mais creio q naum seje esse o problema ja q a pesquisa e realizada sem problemas, a questão e q não consigo listar mais de um funcionário…

Você deve corrigir seu método retornaAlgumaCoisa():

[code]String retornaAlgumaCoisa() {
if (teste.length == 0) return “”;

StringBuilder sb = new StringBuilder(teste[0]);

for (int ind = 1; ind < teste.length; ind++) {
sb.append(teste[i]).append(", ");

return sb.toString();
} [/code]

Do jeito que está, ele só está pegando um dos funcionários da lista.

Outra coisa, seu código está extremamente bagunçado.
Seria bom você reorganiza-lo. Algumas dicas:

  1. Utilize os tipos de dados corretos no banco de dados. A data de nascimento é do tipo Date. Se só interesse o mês e o ano, então, os dois ficam com tipo int;
  2. Faça consulta através do PreparedStatement. Isso evita que você concatene dados na sua SQL com o sinal de +. Evita ataques de SQL Injection, evita que você tenha que tratar a possibilidade do usuário ter digitado aspas simples no texto do campo, e evita também a necessidade de conhecer o formato de datas específico do banco de dados;
  3. Use nomes descritivos para suas variáveis e métodos. O nome “x” é péssimo, o nome “retornaQualquerCoisa()” também;
  4. Reduza ao máximo o escopo das variáveis. Ter um “i” global é uma péssima prática de programação;
  5. Divida sua aplicação em camadas:
    5.1. Crie classes de negócios para representar seus dados (classe Funcionario);
    5.2. Crie classe para carregar seus objetos de negócio em listas (classe FuncionarioDao);
    5.3. Só então, use as duas na interface gráfica, de preferência criando models próprios (classe FuncionarioTableModel);
  6. Trate de maneira adequada as exceptions. Não imprima só o getMessage(), mas todo o StackTrace. Jamais ignore exceptions deixando o catch vazio.

Programar não é uma das tarefas mais fáceis do mundo. Sem organização, ela fica ainda mais difícil. Código bagunçado irá conspirar contra você mesmo.

Muda o Campo dtNascimento para Date e tenta fazer uma consulta do tipo :

" Select nomeFuncionarios From Funcionarios Where Month(DtNascimento) = " + mes ;

Muito obrigado pelas dicas… estou começando agora…mais pode ter certeza de q as dicas são muito bem vindas e q vou reorganizar todo o codigo… agora em relação a sua dica kbardock15 vou fazer o testes e posto aki se deu certo ou não…

Olá… finalmente consegui resolver esse problema e agradeço as dicas foram muito boas… Obrigado

Crei uma classe exclusiva pra o Formulario de aniversariantes… ficou assim…

[code]
void pegaMes(String mes){
this.mes = mes;
}

DefaultListModel retornaFunc() {

    int x = 0;
    String func, fim;
    String data, dia, mes2;

    try {
        ResultSet resultado = bd.consultaTable("SELECT COUNT(id_func) FROM funcionario WHERE mes ='"+mes+"'");

        if (resultado != null && resultado.next()) {
            do {

                x = (resultado.getInt("COUNT(id_func)"));

            } while (resultado.next());
        } else {
        }
    } catch (java.sql.SQLException e) {
        System.err.println("erro de SQL:" + e.getMessage());
    }


    DefaultListModel model = new DefaultListModel();
    int i = 0;


    while (i < x) {
        i++;

        try {
            ResultSet resultado = bd.consultaTable("SELECT * FROM funcionario WHERE id_func ='" + i + "' AND mes = '"+mes+"'");

            if (resultado != null && resultado.next()) {
                do {
                    func = (resultado.getString("nome"));
                    data = (resultado.getString("dt_nascimento"));

                    dia = data.substring(8,10);
                    mes2 = data.substring(5,7);
                    data = dia+"/"+mes2;
                    fim = func+" - "+data;


                    model.addElement(fim);
                } while (resultado.next());
            } else {
                x++;
            }

        } catch (java.sql.SQLException e) {
            System.err.println("erro de SQL:" + e.getMessage());
        }

    }

    return model;

}[/code]

Essa e a ação q esta no JButton…

[code]
String mes;

    mes = comboMes.getSelectedItem().toString();
    ani.pegaMes(mes);

    DefaultListModel resultado = ani.retornaFunc();
    lstAniversarios.setModel(resultado);[/code]

-> Assim ele gera uma lista completa… selecionando tds os funcionários q fazem aniversarios em determinado mês…
sei q tem uma forma mais limpa de se fazer isso mais funcionou perfeitamente assim…