Mil desculpas eu esqueci de por o codigo de como estou tentando fazer os botões Próximo e Anterior.
Botão próximo registo
int reg = Integer.parseInt(txFuncCodigo.getText()); //pega o valor do "txFuncCodigo" Transforma em inteiro com o "parseint" e poe na variavel "reg"
reg++;
String sqlproximo = "select func_codigo, func_nome"
+ "from funcionario "
+ "where func_codigo >= " + reg + "limit 1";
try {
Connection conn = Conexao.getConexao();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sqlproximo); //executa consulta
rs.next(); //envia os dados para a variavel "rs"
txFuncCodigo.setText(rs.getString("func_codigo"));
txFuncNome.setText(rs.getString("func_nome"));
} catch (SQLException ex) {
//JOptionPane.showMessageDialog(null, "Erro ao consultar Cliente \n" + ex.getMessage() + "\n" + ex.getCause());
}
if (txFuncCodigo.getText().equals("")) {
JOptionPane.showMessageDialog(null, "Você está no último registro.");
}
Botão Registro Anterior
int reg = Integer.parseInt(txFuncCodigo.getText()); //pega o valor do "txFuncCodigo" Transforma em inteiro com o "parseint" e poe na variavel "reg"
reg--;
String sqlproximo = "select func_codigo, func_nome"
+ "from funcionario "
+ "where func_codigo >= " + reg + "limit 1";
try {
Connection conn = Conexao.getConexao();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sqlproximo); //executa consulta
rs.next(); //envia os dados para a variavel "rs"
txFuncCodigo.setText(rs.getString("func_codigo"));
txFuncNome.setText(rs.getString("func_nome"));
} catch (SQLException ex) {
//JOptionPane.showMessageDialog(null, "Erro ao consultar Cliente \n" + ex.getMessage() + "\n" + ex.getCause());
}
Quero pedir desculpas para quem leu, acredito que nao me expressei bem
mas aqui esta a solução
[code]
int reg = Integer.parseInt(txFuncCodigo.getText()); //pega o valor do “txFuncCodigo” Transforma em inteiro com o “parseint” e poe na variavel "reg"
reg++;
String sqlproximo = "select func_codigo, func_nome from funcionario where func_codigo = " + reg;
try {
Connection conn = Conexao.getConexao();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sqlproximo); //executa consulta
if (!rs.next()) {
JOptionPane.showMessageDialog(null, "Você está no último registro.");
} else {
txFuncCodigo.setText(rs.getString("func_codigo"));
txFuncNome.setText(rs.getString("func_nome"));
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao consultar proximo \n" + ex.getMessage() + "\n" + ex.getCause());
}[/code]
Baseado no que vc postou, faço uma pergunta: um vez que todo clique nos botões será feita uma pesquisa no BD, do ponto de vista do usuário, será que não pode ficar lento essas rotinas?
Como, a partir do código que vc postou, vc seleciona as mesmas colunas de uma determinada tabela, penso que seria melhor fazer uma navegação off-line, o que deixaria a interação app-usuario mais rápida (dependendo, é claro, de diversos fatores).
Assim, uma sugestão que eu faço seria:
ter uma Enum para os botões;
ter uma variável global para controlar o índice de navegação.
ter uma variável global com a lista resultante da pesquisa no BD.
Na abertura da tela, vc faria a pesquisa no BD uma única vez. O código abaixo leva em consideração a proposta acima, assumindo ‘registros’ como nome da lista, ‘index’ como controle de registros e ‘botoes’ como a Enum.
//variáveis globais
private int index;
private List registros;
private void navega(Botoes botao){
switch (botao){
case PRIMEIRO:
//*1 faz as validações e mensagens necessárias
index = 0;
break;
case ANTERIOR:
// *1
index--;
break;
case PROXIMO:
// *1
index++;
break;
default:
// *1
index = registros.size()-1;
break;
}
txFuncCodigo.setText(registros.get(index).getCodigo());
txFuncNome.setText(registros.get(index).getNome());
}
Espero ter sido claro no que eu disse.
Espero poder ajudar.