Problemas na sequencia dos dados no banco

3 respostas
S

Pessoal blz?

Aqui estou eu com uma situaçao que eu nao consegui entender

tenho uma tabela no banco sem informacoes, que possue um campo chamado de sequencia, onde a cada novo cadastro, segue a sequencia certinho

Porem, estou com um problema no banco, esta invertendo umas posicoes. Nao sei se entenderam direito, por isso vo postar umas imagens e parte do codigo para vcs entenderem, e se possivel me ajudarem nessta questao, obrigado desde ja.


Quando apertar no botao novo, ele vai habilita alguns textfields para inserir informacao, e o numero do titulo ele verifica a maior sequencia no banco, para obter a proxima sequencia. Segue abaixo essa parte do codigo

private void addtitulo() throws SQLException {
		ResultSet novo_p = null;
		try {
			novo_p = conn.prepareStatement("select NVL(MAX(nr_sequencia),0) from fin_cpa").executeQuery();
			if (novo_p.next()) {
				int novo_nr_seq = novo_p.getInt(1);
				System.out.println("VALOR SEQUENCIA BANCO "+novo_nr_seq);//debug para testar passagem
				if (novo_nr_seq == 0) {
					novo_nr_seq = 1;
					System.out.println("SEQUENCIA 0 BANCO, recebeu "+novo_nr_seq);//debug para testar passagem
				} else  {
					novo_nr_seq = novo_nr_seq + 1;
					System.out.println("SEQUENCIA DIFERENTE 0 BANCO vai ser," +novo_nr_seq);//debug para testar passagem
				}
				nrseq.setText(Integer.toString(novo_nr_seq));
				nmtitulo.setEditable(true);
				valortit.setEditable(true);
				dtvenc.setEditable(true);
				vljuros.setEditable(true);
				vlmulta.setEditable(true);
				vldesc.setEditable(true);
				novo.setEnabled(false);
				salvar.setEnabled(true);
				
			} else {
				JOptionPane.showMessageDialog(null, "Nao foi possivel obter a sequencia do titulo");
			}
		} catch (Exception b){
			JOptionPane.showMessageDialog(null, "ERRO:" +b);
		}
	}

Depois disso, a primeira insersao no banco ocorre corretaente, a segunda tambem, mas quando pressio novo pela terceira vez, na aplicacao ele traz corretamente o numero da sequencia 3, mas no banco, salva na sequencia do sqldeveloper 1…

Esse eh o metodo responsavel por gravar no banco os dados, quando aperto no botao salvar na aplicacao.

private void gravar() {
		try {
		int nr_seq_p = Integer.parseInt(nrseq.getText());	
		String nmtitulo_p = nmtitulo.getText();
		String dtvenc_p = dtvenc.getText();
		double valortitulo_p = (Double) valortit.getValue();
		System.out.println(valortitulo_p);
		double valormulta_p = (Double) vlmulta.getValue();
		double valorjuros_p = (Double) vljuros.getValue();
		double vldesc_p = (Double) vldesc.getValue();
		System.out.println(valormulta_p);
		System.out.println(valorjuros_p);
		System.out.println(vldesc_p);
		String nm_usuario_p = usuario_on;		
		CallableStatement cs = conn.prepareCall("{call fin_cpa_gravar(:nr_seq_p, :nmtitulo_p, :dtvenc_p, :valortit_p, :valormulta_p, :valorjuros_p, :vldesc_p, :nm_usuario_p)}");
		cs.setInt(1, nr_seq_p);
		cs.setString(2, nmtitulo_p);
		cs.setString(3, dtvenc_p);
		cs.setDouble(4, valortitulo_p);		
		cs.setDouble(5, valormulta_p);
		cs.setDouble(6, valorjuros_p);
		cs.setDouble(7, vldesc_p);
		cs.setString(8, nm_usuario_p);
		cs.execute();
		novo.setEnabled(true);
		salvar.setEnabled(false);
		
		} catch (Exception er) {
			System.out.println(er);
		}
	}

Alguem poderia me ajudar a identificar o motivo desta sequencia incorreta?
Obs.: sei que o codigo nao ta muito bom, mas to começando ainda.

A segunda imagem ficou pequena, vo postar aqui em baixo o resultado final, mostrando o resultado do select, demonstrando a sequencia errada

3 Respostas

A

Na verdade pouco importa em que ordem os registros estão sendo gravados. Importa é definir na sua consulta em que ordem você quer os registros. Experimente acrescentar um order by NR_SEQUENCIA na sua última consulta, após gravar os registros. Sem essa cláusula, o sqldeveloper vai usar alguma outra coisa pra definir a ordenação (acredito que os índices que existirem na tabela).

S

Ademilton,

vlw pela resposta, mas fiquei “encucado” com isso…nao deveria apresentar por default na sequencia que eu inclui na tabela?

pmlm

Devia, se tu usasses o ORDER BY no SELECT. Se não especificas nenhuma ordenação, ele mostra por uma qualquer ordem.

Criado 12 de outubro de 2012
Ultima resposta 13 de out. de 2012
Respostas 3
Participantes 3