none
Combobox RRS feed

  • Pregunta

  • Alo my gente buenas noche.

    Estoy con un problema con los combobox. Tengo un form con (2) dois comboboox my codigo esta asi:

    public cadastroFunc()
            {
                InitializeComponent();
            }
            //
            //Metodo Para Preencher Comboxo
            public void preencheComboDeparat()
            {
                using (SqlConnection con = Conexao.coneta())
                {
                   
                    string SQL = ("SELECT codigoDeparta, sigla FROM Departamento");
    
                    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
                    comboDeparta.DisplayMember = "sigla";
                    comboDeparta.ValueMember = "codigoDeparta";
                    comboDeparta.DataSource = dt;
                    con.Close();
                }
            }
            //Metodo Para Preencher Combox Sexo
            public void cmboSexo()
            {
                    using (SqlConnection con = Conexao.coneta())
                    {
                        
                        string SQL = ("SELECT idSexo, siglaSexo FROM Sexo");
                        
                        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
                        comboSexo.DisplayMember = "siglaSexo";
                        comboSexo.ValueMember = "idSexo";
                        comboSexo.DataSource = dt;
                        con.Close();
                                                            
                    }
     
            }
            private void cadastroFunc_Load(object sender, EventArgs e)
            {
                preencheComboDeparat();
                cmboSexo();
    
                    
            }
    
        }
    

    El problema es que quando compilo da error. Me dice que la Bd no hacerrado. Como hago para tener los dois combobox preechidos. Pero quando  hago el segundo metodo como comentario el primeiro preenche su combo normalmente. Y quando hago el primeiro como comentario el segundo tambien coje bien sin problema.

    Que hago para tener lod dois combobox preenchidos en el mismo form sin error.


    NekFred,Lda
    miércoles, 21 de diciembre de 2011 1:01

Todas las respuestas

  • hola

    en los metodos: preencheComboDeparat()  y cmboSexo()

    elimina esta linea

    con.Close();

     

    es el dataadpater quien se encarga de abrir y cerrar la conexion, no necesitas tu hacerlo explicitamente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 21 de diciembre de 2011 12:51
  • Hola , el error que te sale es por que no le pasaste La cadena de conexión al SqlConnection,

    Proba con :

    using (SqlConnection connection = new SqlConnection(connectionString))
                {

    Saludos

    Cristian


    jueves, 22 de diciembre de 2011 17:27
  • Para Melhor entender ally va my form y my codigo.

    Esse es el form y yo necessito preencher los combobox con los Datos de las Tablas Sexo, Provincia, Estado Civil, Categoria, Departamento e Nacionalidade.

    Quiero decir que estas tablas estan relcionadas con la tabla Funcionario.

    El codigo es lo seguiente:

    //Preencher ComboboxSexo
            public void preenchaComboSexo()
            {
                using (SqlConnection con = Conexao.coneta())
                {
                    string SQL = ("SELECT idSexo, siglaSexo FROM tbSexo");
                    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
                    comboSexo.DisplayMember = "siglaSexo";
                    comboSexo.ValueMember = "idSexo";
                    comboSexo.DataSource = dt;
    
                }//fim preencheComboBox
            }
            //Preencher Combobox Provincia
            public void preenchaComboProv()
            {
                using (SqlConnection con = Conexao.coneta())
                {
                    string SQL = ("SELECT idprov, descprov FROM tbProvincia");
                    SqlCommand cmd = new SqlCommand(SQL, con);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable("tbProvincia");
                    da.Fill(dt);
                    comboProv.DisplayMember = "descprov";
                    comboProv.ValueMember = "idprov";
                    comboProv.DataSource = dt;
                }
            }
         
            public void Form2CadastroDeFuncionario_Load(object sender, EventArgs e)
            {
                preenchaComboSexo();
                preenchaComboProv();
    
            }

     

    El problema es que quando compilo me apresenta un error. Dice que: "La stringconnetion no ha inicializado." Yo tengo una Classe aparte que sirve para la concion y le llamo: Conexao.

    public class Conexao
        {
            public string stringconnection ="Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SIGT\\SIGT\\SIGT\\Dados\\BDSIGT.mdf;Integrated Security=True;User Instance=True";
            public static SqlConnection con = null;
    
            //Construtor Conexao
            public Conexao()
            {
                //Defino Um Ponteiro q vai ficar todo tempo a pontado para BD
                con = new SqlConnection(stringconnection);
                //ConnectionString obtem ou estabelece a cadeia utilizada para abrir uma BD do SQL
                con.ConnectionString = stringconnection;
                con.Open();
            }
    
            //Definimos o Metodo GetConexao "Coneta" (DevolveConexao) que é Disponibilizado para à Aplicação
            //Este metodo representa uma conexao aberta con a BD SQL
            public static SqlConnection coneta()
            {
                if (con == null)
                {
                    new Conexao();
                }
                return con;
            }
                 
            //Metodo Para Fechar a Conexao
            public void desconeta()
            {
                con.Close();
            }


    Pero se yo quito el bloco de Metodo preenchaComboProv, funciona naturalmente. Solo que la Intension es popular todos los Combox del formulario.

    Alguem puede ayudar en eso!!!!

    Agracias.

     


     

    NekFred,Lda


    • Editado Jesus Spray viernes, 23 de diciembre de 2011 13:34
    viernes, 23 de diciembre de 2011 13:14
  • Hola

    el problema puede ser que usas la misma conexion para  preenchaComboSexo() y para preenchaComboProv() , tendrias que cerrar la conexion despues que la utilizas en   preenchaComboSexo() y despues volver a usarla en  preenchaComboProv()

     

    Saludos 

    Cristian

    viernes, 23 de diciembre de 2011 21:06