Não consigo achar o erro

4 respostas
P

Bom dia,

Meu formulário de cadastro tem as combos estado e cidades. Estou tentando selecionar as cidades de acordo com o estado selecionado. O problema é que ele esta pulando o primeiro, tipo, se seleciono AC, que é o primeiro estado, ele me mostra as cidades de AL, que é o segundo, deixando de apresentar as cidades do ultimo estado TO.

Segue código da combo UF:

private void cmbUfActionPerformed(java.awt.event.ActionEvent evt) {
	// TODO add your handling code here:
	
	cmbUf.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			setComboCidade();
			
			int posicao;
			
			if (cmbUf.getSelectedIndex() >= 0) {
				posicao = cmbUf.getSelectedIndex();
				coduf = listaUf.get(posicao).getSigla();
				
				ControleCidade ccd = new ControleCidade();
				listaCidade = ccd.buscarCidade(posicao);
			}
		}
	});
}

public void setComboCidade() {
	int i = 0;
	cmbCidades.removeAllItems();
	
	while (i < listaCidade.size()) {
		cmbCidades.addItem(listaCidade.get(i).getNome_cidade());
		i++;
	}
}

4 Respostas

Satangozo

Posta o código do seu método "buscarCidade()"
acredito que o erro esteja nele

P

Segue o código, mas a busca esta correta. O que acontece é que ele pula o primeiro estado.

public ArrayList<ModeloCidade> buscarCidade(int codigo) {
	String sql = "select * from cidade where id_cod_uf = " + codigo;
	ArrayList<ModeloCidade> retorn = new ArrayList<ModeloCidade>();
	
	try {
		ConectaBanco cb = new Controle.ConectaBanco();
		con = cb.conectaPostgreSql("Dinamica");
		Statement state = con.createStatement();
		ResultSet rs = state.executeQuery(sql);
		
		while (rs.next()) {
			retorn.add(getCidade(rs));
		}
		
		state.close();
	} catch (SQLException e) {
		System.err.println(e);
	}
	
	return retorn;
}
Satangozo

Então… aqui nessa parte de código você usa o index do combobox para para achar a posição…

if (cmbUf.getSelectedIndex() >= 0) {
				posicao = cmbUf.getSelectedIndex();

Só que no java a contagem começa do zero, então se você selecionar o primeiro estado do combobox a variável “posição” será 0, logo sua string SQL ficará:

String sql = "select * from cidade where id_cod_uf = 0";

e acredito que o id lá no banco de dados do seu primeiro estado seja 1, sendo assim, altere o código da sua sql para isso e me diga se funcionou:

String sql = "select * from cidade where id_cod_uf = " + (codigo + 1);
P

Valeu!!! Problema resolvido!!

Criado 18 de julho de 2016
Ultima resposta 18 de jul. de 2016
Respostas 4
Participantes 2