Problemas com chave estrangeira em uma combobox
Pessoal estou tentando pegar o valor da chave estrangeira que esta na combobox,
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...
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
Curtidas 0
Respostas
Fabio Vianna
10/07/2013
boa noite... percebi no seu código que você fecha a conexão antes de iniciar o select, por isso ele fica null...
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!
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
Matheus
10/07/2013
Amigo o que vc disse nao solucionou me problema,
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!
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
Fabio Vianna
10/07/2013
opa... não pegue pelo index.. pegue o valor pelo cmb.SelectedValue
se o valor do combo for numerico ai vc converte pra int com Convert.ToInt32(cmd.SelectedValue);
abs.
se o valor do combo for numerico ai vc converte pra int com Convert.ToInt32(cmd.SelectedValue);
abs.
GOSTEI 0
Fabio Vianna
10/07/2013
se der errado isso...inspeciona o elemento com a ferramenta do chrome ou o navegador que estiver usando e veja se tem value o combobox... se não tiver pega pelo SelectedItem.
abs
abs
GOSTEI 0
Matheus
10/07/2013
Fabiano...
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!
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
Matheus
10/07/2013
Fabiano consegui solucionar o meu problema,
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.
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
José
10/07/2013
Como a duvida inicial foi sanada, estou marcando o tópico como concluído.
GOSTEI 0