Boa tarde, tenho uma tabela chamada despesabase com os seguintes campos: id_despesabase data_despesa, id_base, id_fornecedor, valor_despesa, numeronota, desconto, tipo_pagamento
preciso percorrer minha tabela e comparar com o campo onde digito o numero da nota para ver se ela já não foi lançada
Giovanni,
Acredito que a pergunta deveria estar na categoria de Banco de Dados, mas vamos lá.
-
Antes de qualquer coisa é necessário levar em consideração o tamanho do sistema e a quantidade de registro que essa tabela vai receber, pois o Número da Nota pode se repetir, logo você pode ter 2 ou mais notas com o mesmo número, porém com itens diferentes. Sendo assim o correto é realizar a comparação pela chave de acesso da Nota.
-
No seu cenário, para que obtenha o resultset esperado, basta fazer um select em todos os registros e filtrar pelo campo numeronota = valor digitado
eu estava pensando em criar uma condição comparando numero da nota, fornecedor e valor total pois no sistema nao posso ter notas com o msm itens e valores.
eu tentei utilizar os seguinte codigo:
try {
conecta.executaSQL(“select * from despesabase inner join base on despesabase.id_base=base.id_base where nome_base = '” + jComboBox_base.getSelectedItem() + “’”);
conecta.rs.first();
if (conecta.rs.getInt("numeronota") == Integer.parseInt(jTextField_nNota.getText())) {
JOptionPane.showMessageDialog(rootPane, "numero nota: " + conecta.rs.getInt("numeronota") + "base: " + conecta.rs.getString("nome_base"));
} else {
mod.setId_despesaBase(codDespesa);
mod.setNumeroNota(Integer.parseInt(jTextField_nNota.getText()));
mod.setNomeBase((String) jComboBox_base.getSelectedItem());
mod.setNomeFornecedor(jTextField_fornecedores.getText());
mod.setValorDespesa(Double.parseDouble(jLabel_total.getText()));
mod.setDataDespesa(jFormattedTextField_data.getText());
mod.setDesconto(Double.parseDouble(jTextField_desconto.getText()));
mod.setPagamento((String) jComboBox1.getSelectedItem());
control.fechaVenda(mod);
ParcelaDespesa pd = new ParcelaDespesa(codDespesa);
TelaPrincipal.desktopPane.add(pd);
pd.setVisible(true);
pd.setPosicao();
dispose();
}
} catch (SQLException ex) {
Logger.getLogger(DespesaBase.class.getName()).log(Level.SEVERE, null, ex);
}
Porem o resultSet ele esta pegando a primeira posição do banco e verificando. e não estou conseguindo verificar os demais registros da tabela
Amigo se você quer ler os resultado do banco de dados você deve fazer igual o código abaixo que vai passar por todas as linhas da sua tabela.
while(conecta.rs.next()){
if(conecta.rs.getInt(“numeronota”) == Integer.parseInt(jTextField_nNota.getText()) )
//faz isso
}
else{
//faz isso
}
}
Agora uma forma melhor de fazer já é verificando se o registro existe na tabela como o @Allan_HB falou.