CAMPO CÓDIGO DO COMBO
Olá, tenho uma rotina que carrega um combo com os nomes dos funcionários, conforme abaixo. Porém no mesmo form, mais adiante em um tabControl preciso exibir um total de valores em um campo textbox, selecionado em outra tabela de acordo com o código do funcionário selecionado no combobox. Só que no combo só aparece o nome. E no final da query SQL(inteira abaixo) pede o código: ......ConsultaCertificadoDescricao.codMatricula=[Ô] & txtMatriculaFunc. Preciso tirar esse txtMatricula e apontar para o combobox. Como ficaria isso???
private void carregaFunc()
{
Conexao conn = new Conexao();
DataTable dados = conn.Pesquisar([Ô]SELECT * FROM ConsultaMatricula ORDER BY Nome[Ô]);
comboFunc.Text = [Ô][Ô];
comboFunc.ValueMember = [Ô]codMatricula[Ô]; //O campo código da sua tabela vai aqui
comboFunc.DisplayMember = [Ô]Nome[Ô];//O que o usuário enxerga vai aqui
comboFunc.DataSource = dados; //O combo pega os dados recuperados
comboFunc.SelectedIndex = -1;
}
Seleção que preciso fazer:
Conexao conn = new Conexao();
DataTable dados = conn.Pesquisar([Ô]SELECT SUM ([nroPontos]) AS [Soma] From ConsultaCertificadoDescricao WHERE (((ConsultaCertificadoDescricao.nroPontos)=1))AND ConsultaCertificadoDescricao.codMatricula=[Ô] & txtMatriculaFunc); // esse & txtMatricula que preciso substituir pelo codMatricula do combo.
private void carregaFunc()
{
Conexao conn = new Conexao();
DataTable dados = conn.Pesquisar([Ô]SELECT * FROM ConsultaMatricula ORDER BY Nome[Ô]);
comboFunc.Text = [Ô][Ô];
comboFunc.ValueMember = [Ô]codMatricula[Ô]; //O campo código da sua tabela vai aqui
comboFunc.DisplayMember = [Ô]Nome[Ô];//O que o usuário enxerga vai aqui
comboFunc.DataSource = dados; //O combo pega os dados recuperados
comboFunc.SelectedIndex = -1;
}
Seleção que preciso fazer:
Conexao conn = new Conexao();
DataTable dados = conn.Pesquisar([Ô]SELECT SUM ([nroPontos]) AS [Soma] From ConsultaCertificadoDescricao WHERE (((ConsultaCertificadoDescricao.nroPontos)=1))AND ConsultaCertificadoDescricao.codMatricula=[Ô] & txtMatriculaFunc); // esse & txtMatricula que preciso substituir pelo codMatricula do combo.
minha funcao esta assim
AcessoBancodeDados.Abreconecao(con);
string sql = strSql;
Combo.DropDownStyle = ComboBoxStyle.DropDownList;
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
//coloque as definições na ordem abaixo
Combo.DisplayMember = Display;
Combo.ValueMember = Value;
Combo.DataSource = dt;
a sua esta faltando a informação Combo.ValueMember = Value; onde voce pega ela depois
com
combo.selectvalue
eu fiz uma funcao que eu busca minha funcao esta numa .cs
vou ti passar se ti achudar
public static void preencheComboBox(ComboBox Combo, string strSql, string Display, string Value)
{
using (SqlConnection con = AcessoBancodeDados.GetConnection())
{
try
{
AcessoBancodeDados.Abreconecao(con);
string sql = strSql;
Combo.DropDownStyle = ComboBoxStyle.DropDownList;
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
//coloque as definições na ordem abaixo
Combo.DisplayMember = Display;
Combo.ValueMember = Value;
Combo.DataSource = dt;
}
catch (Exception ex)
{
throw ex;
}
finally
{
AcessoBancodeDados.FechaConecao(con);
}
}
}
para chamar ele no formulario
funcao.preencheComboBox(CbStatus, [Ô]select valor,descricao from simano where tipo=27[Ô], [Ô]descricao[Ô], [Ô]valor[Ô]);
assim eu uso ela em todo meu projeto
AcessoBancodeDados.Abreconecao(con);
string sql = strSql;
Combo.DropDownStyle = ComboBoxStyle.DropDownList;
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
//coloque as definições na ordem abaixo
Combo.DisplayMember = Display;
Combo.ValueMember = Value;
Combo.DataSource = dt;
a sua esta faltando a informação Combo.ValueMember = Value; onde voce pega ela depois
com
combo.selectvalue
eu fiz uma funcao que eu busca minha funcao esta numa .cs
vou ti passar se ti achudar
public static void preencheComboBox(ComboBox Combo, string strSql, string Display, string Value)
{
using (SqlConnection con = AcessoBancodeDados.GetConnection())
{
try
{
AcessoBancodeDados.Abreconecao(con);
string sql = strSql;
Combo.DropDownStyle = ComboBoxStyle.DropDownList;
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
//coloque as definições na ordem abaixo
Combo.DisplayMember = Display;
Combo.ValueMember = Value;
Combo.DataSource = dt;
}
catch (Exception ex)
{
throw ex;
}
finally
{
AcessoBancodeDados.FechaConecao(con);
}
}
}
para chamar ele no formulario
funcao.preencheComboBox(CbStatus, [Ô]select valor,descricao from simano where tipo=27[Ô], [Ô]descricao[Ô], [Ô]valor[Ô]);
assim eu uso ela em todo meu projeto
Tente assim:
ou
Conexao conn = new Conexao();
DataTable dados = conn.Pesquisar([Ô]SELECT SUM ([nroPontos]) AS [Soma] From ConsultaCertificadoDescricao WHERE (((ConsultaCertificadoDescricao.nroPontos)=1))AND ConsultaCertificadoDescricao.codMatricula=[Ô] & [txt-color=#e80000]comboFunc.SelectedValue[/txt-color]);
ou
Conexao conn = new Conexao();
DataTable dados = conn.Pesquisar([Ô]SELECT SUM ([nroPontos]) AS [Soma] From ConsultaCertificadoDescricao WHERE (((ConsultaCertificadoDescricao.nroPontos)=1))AND ConsultaCertificadoDescricao.codMatricula=[Ô] & [txt-color=#e80000]comboFunc.SelectedIndex[/txt-color]);
ALANTB perceba que no combobox antes de vc setar o DataTable [Ô]dados[Ô] como DataSource, é especificado que o ValueMember será o CodFunc e o DisplayMember será o NomeFunc. Portanto o comando que recupera o valor selecionado que é o CodFunc é:
Mas para que seja realizada uma outra pesquisa ao selecionar um valor do ComboBox, é necessário faze-la dentro de um evento dele. Aconselho vc usar o SelecteIndexChanged
Té mais
ComboBox1.SelectedValue.ToString();
Mas para que seja realizada uma outra pesquisa ao selecionar um valor do ComboBox, é necessário faze-la dentro de um evento dele. Aconselho vc usar o SelecteIndexChanged
Té mais
Tópico encerrado , respostas não são mais permitidas