Usuário com melhor resposta
Combo box deve apresentar o registro correto no Form Load

Pergunta
-
Bom dia amigos,
Fiz um Combo box, e vinculei na tabela Operacao, só tem dois registros nensta tabela do Combo box, que são débito e crédito.
Utilizo o combo box, selecionando a operação se é Débito ou Crédito no Form de Lançamento, porém quando abro o formulário de lançamento, o Combo box está sempre no Crédito, que é o primeiro registro da tabela Operacao. embora o registro da tabela Lancamento esteja debito. Os outros registros no Form de lançamento estão corretos, fazem a leitura correta da tabela.
O problema é no load, que sempre vem Crédito. E não vem o valor da tabela Lancamento Porquê?
Obs.: Está salvando corretamente. Somente no Load que parece que está lendo o 1º registro da tabela do Combo Box.Quando mudei o nome para outro qualquer, confirmou isso, aparece o novo nome no Load. Isto é, o combo box, no load, está lendo o 1º registro da tabela que está vinculado (operacao).
Como resolver isso, que ele leia exatamente o que está na tabela de Lancamento?
Respostas
-
Ola F.oliveirarocha
Particularmente não utilizo este meio para carregar o combo nas minhas aplicações.
Inicialmente, sugiro observar o seu código.
Aparentemente você está associando a tblOperações por ultimo e isto explica o fato que aparecer a informação de Operacaos em vez de Lacamentos.
this.operacaoBindingSource1.DataSource = DataContextFactory.DataContext.Operacaos;
Outra sugestão:
Tente carregar o seu combo desta forma:
private void preencherCBDescricao() { String scon = "Data Source=NOME DO SERVIDOR\\BASESQL;Initial Catalog=SI_ATPS;Persist Security Info=True;User ID=sa;Password=MINHASENHA"; con = new SqlConnection(scon); try { con.Open(); } catch (SqlException sqle) { MessageBox.Show("Falha ao efetuar a conexão. Erro: " + sqle); } String scom = "select * from departamento"; SqlDataAdapter da = new SqlDataAdapter(scom,con); DataTable dtResultado = new DataTable(); dtResultado.Clear();//o ponto mais importante (limpa a table antes de preenche-la) comboBox1.DataSource = null; da.Fill(dtResultado); comboBox1.DataSource = dtResultado; comboBox1.ValueMember = "codigo"; comboBox1.DisplayMember = "descricao"; comboBox1.SelectedItem = ""; }
Este exemplo está aqui.
Crie uma classe e reaproveite o seu código.
- Sugerido como Resposta Marcos_Roberto sábado, 3 de novembro de 2018 19:31
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 14 de novembro de 2018 19:43
Todas as Respostas
-
-
Bom dia Marcos,
Não estou carregando com código nenhum. Esse mesmo problema aparece em outros formulários com outros combo box. Quando carrega, vem o 1º item da tabela do combo box (1º Crédito, 2º Débito).
Está apenas com a configuração de praxe, e o bindingsource que busca na tabela os valores.
No form Load está assim:
this.lancamentoBindingSource.DataSource = DataContextFactory.DataContext.Lancamentos;
this.bancoBindingSource.DataSource = DataContextFactory.DataContext.Bancos;
this.operacaoBindingSource1.DataSource = DataContextFactory.DataContext.Operacaos;Deve ter algum comando com SQL para fazer ele ler o código da tabela, e mostrar a descrição no Display.
Muito obrigado pela atenção.
Abraços.
-
Ola F.oliveirarocha
Particularmente não utilizo este meio para carregar o combo nas minhas aplicações.
Inicialmente, sugiro observar o seu código.
Aparentemente você está associando a tblOperações por ultimo e isto explica o fato que aparecer a informação de Operacaos em vez de Lacamentos.
this.operacaoBindingSource1.DataSource = DataContextFactory.DataContext.Operacaos;
Outra sugestão:
Tente carregar o seu combo desta forma:
private void preencherCBDescricao() { String scon = "Data Source=NOME DO SERVIDOR\\BASESQL;Initial Catalog=SI_ATPS;Persist Security Info=True;User ID=sa;Password=MINHASENHA"; con = new SqlConnection(scon); try { con.Open(); } catch (SqlException sqle) { MessageBox.Show("Falha ao efetuar a conexão. Erro: " + sqle); } String scom = "select * from departamento"; SqlDataAdapter da = new SqlDataAdapter(scom,con); DataTable dtResultado = new DataTable(); dtResultado.Clear();//o ponto mais importante (limpa a table antes de preenche-la) comboBox1.DataSource = null; da.Fill(dtResultado); comboBox1.DataSource = dtResultado; comboBox1.ValueMember = "codigo"; comboBox1.DisplayMember = "descricao"; comboBox1.SelectedItem = ""; }
Este exemplo está aqui.
Crie uma classe e reaproveite o seu código.
- Sugerido como Resposta Marcos_Roberto sábado, 3 de novembro de 2018 19:31
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 14 de novembro de 2018 19:43
-
Marcos boa noite,
Está dando um erro no sublinhado. Veja o que é e me envie de volta.
private void PreencherCB_Box_Operacao()
{
String scon = "Data Source=DESKTOP-3O98051;Initial Catalog=SGFRenaissance;Integrated Security=True";
con = new SqlConnection(scon);
try
{
con.Open();
}
catch (SqlException sqle)
{
MessageBox.Show("Falha ao efetuar a conexão. Erro: " + sqle);
}
String scom = "select * from departamento";
SqlDataAdapter da = new SqlDataAdapter(scom,con);
DataTable dtResultado = new DataTable();
dtResultado.Clear();//o ponto mais importante (limpa a table antes de preenche-la)
CB_Operacao.DataSource = null;
da.Fill(dtResultado);
CB_Operacao.DataSource = dtResultado;
CB_Operacao.ValueMember = "Cod_Operacao";
CB_Operacao.DisplayMember = "Descricao_Op";
CB_Operacao.SelectedItem = "";
}O problema está no con e no SQLAdapter.
Abraço e obrigado pela atenção.
-
Marcos boa noite,
Está dando um erro no sublinhado. Veja o que é e me envie de volta.
private void PreencherCB_Box_Operacao()
{
String scon = "Data Source=DESKTOP-3O98051;Initial Catalog=SGFRenaissance;Integrated Security=True";
con = new SqlConnection(scon);
try
{
con.Open();
}
catch (SqlException sqle)
{
MessageBox.Show("Falha ao efetuar a conexão. Erro: " + sqle);
}
String scom = "select * from departamento";
SqlDataAdapter da = new SqlDataAdapter(scom,con);
DataTable dtResultado = new DataTable();
dtResultado.Clear();//o ponto mais importante (limpa a table antes de preenche-la)
CB_Operacao.DataSource = null;
da.Fill(dtResultado);
CB_Operacao.DataSource = dtResultado;
CB_Operacao.ValueMember = "Cod_Operacao";
CB_Operacao.DisplayMember = "Descricao_Op";
CB_Operacao.SelectedItem = "";
}O problema está no con e no SQLAdapter.
Abraço e obrigado pela atenção.
naos seria um erro de using System.Data.SqlClient; ?
coloque assim o com
SqlConnection con = new SqlConnection(scon);
e no using do cabeçalho o evento
using System.Data.SqlClient;
espero que te ajude.
- Editado Titodj7 terça-feira, 6 de novembro de 2018 03:22
-
-
Bom dia Marcos,
Não estou carregando com código nenhum. Esse mesmo problema aparece em outros formulários com outros combo box. Quando carrega, vem o 1º item da tabela do combo box (1º Crédito, 2º Débito).
Está apenas com a configuração de praxe, e o bindingsource que busca na tabela os valores.
No form Load está assim:
this.lancamentoBindingSource.DataSource = DataContextFactory.DataContext.Lancamentos;
this.bancoBindingSource.DataSource = DataContextFactory.DataContext.Bancos;
this.operacaoBindingSource1.DataSource = DataContextFactory.DataContext.Operacaos;Deve ter algum comando com SQL para fazer ele ler o código da tabela, e mostrar a descrição no Display.
Muito obrigado pela atenção.
Abraços.
é Operacaos ou Operacao?
aqui tem um link interesante
https://social.msdn.microsoft.com/Forums/pt-BR/2fb03947-3cf6-487e-9d1b-1d15b1dda3ae/como-preencher-um-combobox-usando-c-ado-sql-server?forum=vscsharppt
- Editado Titodj7 quinta-feira, 8 de novembro de 2018 02:17
-
Boa tarde,
Por falta de retorno essa thread está encerrada.
Se necessário favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.