Usuário com melhor resposta
Salvar id de comboBox

Pergunta
-
Boa tarde, eu estou tentando fazer com que uma combo box preenchida com os nomes dos fornecedores da tabela de fornecedores , quando for selecionada ela insera o valor selecionado na tabela de produtos
sendo que na tabela de produtos sera selecionado o id do forencedor que foi selecionado na combo box.
esse metodo e o que preenche a combo
public void combo()
{
//Connection con1 = new Connection();
//string strSql = "SELECT NOMe_FORNECEDOR from FORNECEDORES where id_FORNECEDOR = id_FORNECEDOR";
//SqlCommand cmd = new SqlCommand(strSql, con1.cone());
string valorDocombo = cbFORNEECEDORES.SelectedIndex.ToString();
Connection con1 = new Connection();
string strSql = "insert into PRODUTOS (fk_id_FORNECEDORES) values ("+valorDocombo+")";
SqlCommand cmd = new SqlCommand(strSql, con1.cone());
cmd.ExecuteNonQuery();
}
private void button1_Click(object sender, EventArgs e)
{
selecionarcombo();
}
esse aqui e o que iria inserir os dados na tabela :
private void salvar_Click(object sender, EventArgs e)
{
// string valorDocombo = cbFORNECEDORES.SelectedIndex.ToString();
Connection con1 = new Connection();
string strSql = "insert into PRODUTO (nome_PTODUTO,fk_id_FORNECEDOR,tipo_PRODUTO)values(@nome_PTODUTO,@fk_id_FORNECEDOR,@tipo_PRODUTO)";
// string strSql2 = "insert into PRODUTO (fk_id_FORNECEDOR) values (" + valorDocombo + ")";
SqlCommand cmd = new SqlCommand(strSql, con1.cone());
// SqlCommand cmd2 = new SqlCommand(strSql2, con1.cone());
cmd.Parameters.Add("@nome_PTODUTO", SqlDbType.VarChar).Value = textBox1.Text;
cmd.Parameters.Add("@fk_id_FORNECEDOR", SqlDbType.Int).Value = cbFORNECEDORES.Text;
cmd.Parameters.Add("@tipo_PRODUTO", SqlDbType.VarChar).Value = textBox3.Text;
try
{
// con1.cone().Open();
cmd.ExecuteNonQuery();
// cmd2.ExecuteNonQuery();
MessageBox.Show("Salvo com sucesso!");
}
catch (Exception ex)
{
throw;
}
finally
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
maskedTextBox1.Clear();
textBox5.Clear();
textBox1.Focus();
con1.cone().Close();
Como sou nova nisso alguem poderia me ajudar a saber como se faz isso?Por favor!
Respostas
-
Tenta desta forma:
cmd.Parameters.Add("@fk_id_FORNECEDOR", SqlDbType.Int).Value = cbFORNECEDORES.SelectedValue;
- Marcado como Resposta Felipe1520 segunda-feira, 12 de junho de 2017 20:15
- Não Marcado como Resposta Felipe1520 segunda-feira, 12 de junho de 2017 20:15
- Sugerido como Resposta Mariana C. Costa terça-feira, 13 de junho de 2017 11:37
- Marcado como Resposta Guilherme Macedo SModerator segunda-feira, 19 de junho de 2017 13:10
Todas as Respostas
-
-
public void CARREGA()
{
Connection con1 = new Connection();
string strSql = "SELECT Nome_fornecedor from fornecedores where id_fornecedor = id_fornecedor";
SqlCommand cmd = new SqlCommand(strSql, con1.cone());
// con1.cone().Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
cbSoftware.ValueMember = "id_fornecedor";
cbSoftware.DisplayMember = "Nome_fornecedor";
cbSoftware.DataSource = dt;
}To carregando assim.
- Editado Felipe1520 segunda-feira, 12 de junho de 2017 17:48
-
Então,
pra ler o id do seu fornecedor seria assim:
string valorCombo = Convert.ToString(cboSoftware.SelectedValue);
Agora levando em consideracao que o campo "id_fornecedor" seja um int seria assim:
int valorCombo = (int)cboSoftware.SelectedValue;
Faça os testes...
-
-
oi daniel, fiz a conversao para inteiro . mas agora aparece a mensagem :specified cast is not valid.
int valorCombo = (int)cboSoftware.SelectedValue;
Provavel que o campo cbSoftware.ValueMember = "id_fornecedor" não seja um int, tente converter:
int valorCombo = Convert.ToInt32(cboSoftware.SelectedValue);
-
-
-
-
-
Nathy verificando o seu select, vi que está faltando o id, coloca ele
ele está assim:
string strSql = "SELECT Nome_fornecedor from fornecedores where id_fornecedor = id_fornecedor";
coloca o id:
string strSql = "SELECT nomecampoid, Nome_fornecedor from fornecedores where id_fornecedor = id_fornecedor";
-
Oi mariana, entao ele ta ate populando a combo que eu fiz nesse metodo :
public void CARREGA()
{
Connection con1 = new Connection();
string strSql = "SELECT id_fornecedor, Nome_fornecedor from fornecedores where id_fornecedor = id_fornecedor";
SqlCommand cmd = new SqlCommand(strSql, con1.cone());
// con1.cone().Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
cbSoftware.ValueMember = "id_fornecedor";
cbSoftware.DisplayMember = "Nome_fornecedor";
cbSoftware.DataSource = dt;
}Só que no salvar que é outro método que eu fiz , eu nao sei como fazer pra inserir r oq ue a pessoa selecionar na tabela produto.
private void salvar_Click(object sender, EventArgs e)
{
// string valorDocombo = cbFORNECEDORES.SelectedIndex.ToString();
Connection con1 = new Connection();
string strSql = "insert into PRODUTO (nome_PTODUTO,fk_id_FORNECEDOR,tipo_PRODUTO)values(@nome_PTODUTO,@fk_id_FORNECEDOR,@tipo_PRODUTO)";
// string strSql2 = "insert into PRODUTO (fk_id_FORNECEDOR) values (" + valorDocombo + ")";
SqlCommand cmd = new SqlCommand(strSql, con1.cone());
// SqlCommand cmd2 = new SqlCommand(strSql2, con1.cone());
cmd.Parameters.Add("@nome_PTODUTO", SqlDbType.VarChar).Value = textBox1.Text;
cmd.Parameters.Add("@fk_id_FORNECEDOR", SqlDbType.Int).Value = cbFORNECEDORES.Text;
cmd.Parameters.Add("@tipo_PRODUTO", SqlDbType.VarChar).Value = textBox3.Text;
try
{
// con1.cone().Open();
cmd.ExecuteNonQuery();
// cmd2.ExecuteNonQuery();
MessageBox.Show("Salvo com sucesso!");
}
catch (Exception ex)
{
throw;
}
finally
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
maskedTextBox1.Clear();
textBox5.Clear();
textBox1.Focus();
con1.cone().Close();}
Se vc puder me dr uma luz eu agradeço muitao.
- Editado Felipe1520 segunda-feira, 12 de junho de 2017 19:53
-
-
Sim aparece os fornecedores direitinho!
Da problema na hora de fazer o insert no banco. Pq nao sei , se estou fazendo errado. Pq eu tenho que inserir esse valor da combo que é ta bela fornecedores na tabela produtos sendo que na tabela de produtos esse nome do fornecedor que a pessoa selecionar ela é uma chave estrangeira que contem o id do fornecedor, resumindo na tabela produtos gravo nome do produto , o iddo fornecedor (que o usuario selecionou) e o tipo de produto.
Porém acredito que estou fazendo o método de inserir no banco errado ou esta faltando algo que nao sei oque é.
Quando coloco p rodar da um erro agora dizendo que ha um erro de conversao do paramentro de string para int32.
-
O erro aparece exatamente em qual linha ?
cmd.Parameters.Add("@fk_id_FORNECEDOR", SqlDbType.Int).Value = cbFORNECEDORES.Text;
Nesta linha por exemplo, vc ta convertendo para int, porém o campo é text, se for o id mesmo que você precisa ai você tem que colocar
int.Parse(cbFORNECEDORES.SelectedValue);
-
-
Tenta desta forma:
cmd.Parameters.Add("@fk_id_FORNECEDOR", SqlDbType.Int).Value = cbFORNECEDORES.SelectedValue;
- Marcado como Resposta Felipe1520 segunda-feira, 12 de junho de 2017 20:15
- Não Marcado como Resposta Felipe1520 segunda-feira, 12 de junho de 2017 20:15
- Sugerido como Resposta Mariana C. Costa terça-feira, 13 de junho de 2017 11:37
- Marcado como Resposta Guilherme Macedo SModerator segunda-feira, 19 de junho de 2017 13:10
-
Muito obrigada Mariana, Deu certo!!
- Editado Felipe1520 segunda-feira, 12 de junho de 2017 20:21
-