Problemas com chave estrangeira em uma combobox
10/07/2013
0
estou usando a propriedade SelectedValue me retorna null e da erro de referencia do objeto,
quando eu uso a propriedade selectedIndex o valor vem como zero, nao sei mais o que fazer
se alguém puder me ajudar fico grato!
aqui vai o meu código...
//Rotina para Inserir public void inserirVeiculo(int dia, string mes, int ano, int idOrgao, string tipo, int entrada, int saida) { try { objComando = new MySqlCommand(); objComando.Connection = objConexao; objConexao.Open(); //libera os objetos objConexao.Close(); objComando.CommandText = "insert into veiculo (dia,mes,ano,idOrgao,tipo,entrada,saida) values (@dia, @mes, @ano, @idOrgao, @tipo, @entrada, @saida)"; objComando.Parameters.AddWithValue("@dia", dia); objComando.Parameters.AddWithValue("@mes", mes); objComando.Parameters.AddWithValue("@ano", ano); objComando.Parameters.AddWithValue("@idOrgao", idOrgao); objComando.Parameters.AddWithValue("@tipo", tipo); objComando.Parameters.AddWithValue("@entrada", entrada); objComando.Parameters.AddWithValue("@saida", saida); objConexao.Dispose(); objConexao.Open(); objComando.ExecuteNonQuery(); objConexao.Close(); MessageBox.Show("Concluído.", "Cadastro"); } catch (Exception) { MessageBox.Show("Erro no banco de dados"); } } //Cod behind do form private void toolStripButton3_Click(object sender, EventArgs e) { objVeiculo.inserirVeiculo(int.Parse(comboBoxDia.Text), comboBoxMes.Text, int.Parse(comboBoxAno.Text), int.Parse(comboBoxOrgao.SelectedValue.ToString()), comboBoxTipo.Text, int.Parse(textboxEntrada.Text), int.Parse(textBoxSaida.Text)); } //Código que carrega minha combobox através de um DataTable MySqlConnection comboBox = new MySqlConnection("Persist Security info=false;" + "server=localhost;database=sgv;uid=root;pwd='123098'"); MySqlDataAdapter sql = new MySqlDataAdapter("select nomeOrgao,idOrgao from orgaoautuador where idOrgao= idOrgao", comboBox); DataTable dt = new DataTable(); sql.Fill(dt); try { for (int i = 0; i < dt.Rows.Count; i++) { comboBoxOrgao.Items.Add(dt.Rows[i]["nomeOrgao"]); } } catch (MySqlException erro) { throw erro; } finally { comboBox.Close(); }
Matheus
Posts
10/07/2013
Fabio Vianna
delete o objConexao.close(); antes do select... pq a conexão deve ser fechada no fim do código.. e ja está dando close no fim...
abs,
espero ter ajudado!
10/07/2013
Matheus
quando eu mudo propriedade da comboBox para, cmb.selectedIndex.toString() me retorna zero
se eu ponho selectedValue me retorna null
caso puder me dar outra dica fico grato abraço!
11/07/2013
Fabio Vianna
se o valor do combo for numerico ai vc converte pra int com Convert.ToInt32(cmd.SelectedValue);
abs.
11/07/2013
Fabio Vianna
abs
11/07/2013
Matheus
Eu fiz o que você recomendou usei a conversão assim
Convert.Int32(cmb.SelectedValue)
porém me retorna este erro,
Cannot add or update a child row: a foreign key constraint fails (`sgv`.`veiculo`, CONSTRAINT `fkidOrgao` FOREIGN KEY (`idOrgao`) REFERENCES `orgaoautuador` (`idOrgao`))
ele nao está conseguindo pegar o valor da comboBox nao é isso?
fiz tbm pelo SelectedItem, porem ele pega o nome do campo nao o valor
com isso aponta erro de entrad de caracter incorreto, pois meu campo idOgrao é auto_increment
e um inteiro. eu estou desenvolvendo a aplicação em Windows Forms.
Agradeço novamente pela sua atenção, se puder me ajudar novamente fico grato, abração!
11/07/2013
Matheus
eu estava esquecendo de recuperar o valor do item selecionado,
e também modifiquei a lógico para carregar meu comboBox.
aqui vai o código solucionado caso alguém precise.
//Rotina para carregar a comboBox private void PreencheComboBox() { MySqlConnection comboBox = new MySqlConnection("Persist Security info=false;" + "server=localhost;database=sgv;uid=root;pwd='123098'"); MySqlDataAdapter sql = new MySqlDataAdapter("select idOrgao,nomeOrgao from orgaoautuador order by nomeOrgao", comboBox); DataTable dt = new DataTable(); dt.Columns.Add("idOrgao"); dt.Columns.Add("nomeOrgao"); comboBoxOrgao.ValueMember = "idOrgao"; comboBoxOrgao.DisplayMember = "nomeOrgao"; sql.Fill(dt); comboBoxOrgao.DataSource = dt; } //botao inserir private void toolStripButton3_Click(object sender, EventArgs e) { //Estou recuperando o valor passando na comboBox e atribuindo o valor para o campo idSelecionado string idSelecionado = comboBoxOrgao.SelectedValue.ToString(); //Usei a propriedade SelectedValue no comboBoxOrgao para apenas pegar o id objVeiculo.inserirVeiculo(int.Parse(comboBoxDia.Text), comboBoxMes.Text, int.Parse(comboBoxAno.Text), int.Parse(idSelecionado), comboBoxTipo.Text, int.Parse(textboxEntrada.Text), int.Parse(textBoxSaida.Text)); }
14/10/2013
José
Clique aqui para fazer login e interagir na Comunidade :)