Fórum Problemas com chave estrangeira em uma combobox #448306
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
Curtir tópico
+ 0Posts
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!
Gostei + 0
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!
Gostei + 0
11/07/2013
Fabio Vianna
se o valor do combo for numerico ai vc converte pra int com Convert.ToInt32(cmd.SelectedValue);
abs.
Gostei + 0
11/07/2013
Fabio Vianna
abs
Gostei + 0
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!
Gostei + 0
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));
}
Gostei + 0
14/10/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)