none
Cargar datos a un TxtBox desde la seleccion desde un combobox conectado a una tabla Acces RRS feed

  • Pregunta

  • Buenos dias,

    Me gustaria saber como puedo cargar los datos automaticamente a un txtbox segun la seleccion de un combobox xonectado a dicha tabla.

    Imagino que lo tengo que hacer a través del "TextChanged"....

    la Tabla contiene datos de Conductores de camion y según el nombre del conductor elegido en el combo,  automaticamente rellene los campos restantes que son un TxtBox.

    que pasos qhe de seguir?

    Imagino que, conectar con BD. Hacer consulta ?(SELECT * FROM TABLA WHERE ID = " & COMBOBOX..

    Alguna idea?

    martes, 24 de abril de 2012 12:40

Respuestas

  • a Tabla contiene datos de Conductores de camion y según el nombre del conductor elegido en el combo,  automaticamente rellene los campos restantes que son un TxtBox.

    tienes que suar el evento SelectionChangeCommitted, este es un evento del combo

    entonces alli es donde realzias la query para recuperar el resto de los datos

    private void combo1_SelectionChangeCommitted(...){
    
    	int id = Convert.ToInt32(combo1.SelectedValue);
    
    	using (SqlConnection cn = new SqlConnection("connection string")) 
    	{
    		cn.Open();
    
    		string query = "SELECT * FROM NombreTabla WHERE Id = @id";
    		SqlCommand cmd = new SqlCommand(query, cn);
    
    		cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text));
    
    		SqlDataReader reader = cmd.ExecuteReader();
    
    		if (reader.Read()) {
    			TextBox1.Text = Convert.ToString(reader("nombrecampo1"));
    			TextBox2.Text = Convert.ToString(reader("nombrecampo2"));
    			TextBox3.Text = Convert.ToString(reader("nombrecampo3"));
    		}
    
    	}
    
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Leith Oscar martes, 24 de abril de 2012 17:10
    martes, 24 de abril de 2012 13:01
  • Leandro: ¿No te parece una buena opción tener un BindingSource, los textboxes asociados con campos del BindingSource y el combo también enlazado al BindingSource? De esta forma, al cambiar el SelectedValue del combo se actualiza el curent del BindingSource y consecuentemente los textboxes. 

    La ventaja es que para un desarrollador con poca experiencia es más fácil de implementar, todo se puede hacer desde el diseñador de formularios.

    La desventaja es que si la tabla es grande, recuperar todos los registros con todos los campos puede ser costoso en performance (tiempo de respuesta) y además en uso de memoria.

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    • Marcado como respuesta Leith Oscar martes, 24 de abril de 2012 17:10
    martes, 24 de abril de 2012 14:27
  • Hola,

    gracias por responder con tanta rapidez.

    @Leandro, mañana probaré lo que me comentas, además tiene buena pinta y lo entiendo que es lo importante.

    @Yván: Si que es verdad, la tabla no va ser grande, calculo que como máximo habrán 50 conductores,(creo) además de esta tabla también haré algo parecido so bre la tabla " Camiones " . La idea es facilitar al usuario esta entrada de datos (Evitar error Humanos) y a su vez, facilitarle el trabajo. A nivel de Perfomance, no se que como trabajaría pero prefiero realizar una Query.



    No obstante probaré ambos metodos y os comento el que ! Gracias!!!!
    • Marcado como respuesta Leith Oscar martes, 24 de abril de 2012 17:10
    martes, 24 de abril de 2012 17:09

Todas las respuestas

  • a Tabla contiene datos de Conductores de camion y según el nombre del conductor elegido en el combo,  automaticamente rellene los campos restantes que son un TxtBox.

    tienes que suar el evento SelectionChangeCommitted, este es un evento del combo

    entonces alli es donde realzias la query para recuperar el resto de los datos

    private void combo1_SelectionChangeCommitted(...){
    
    	int id = Convert.ToInt32(combo1.SelectedValue);
    
    	using (SqlConnection cn = new SqlConnection("connection string")) 
    	{
    		cn.Open();
    
    		string query = "SELECT * FROM NombreTabla WHERE Id = @id";
    		SqlCommand cmd = new SqlCommand(query, cn);
    
    		cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text));
    
    		SqlDataReader reader = cmd.ExecuteReader();
    
    		if (reader.Read()) {
    			TextBox1.Text = Convert.ToString(reader("nombrecampo1"));
    			TextBox2.Text = Convert.ToString(reader("nombrecampo2"));
    			TextBox3.Text = Convert.ToString(reader("nombrecampo3"));
    		}
    
    	}
    
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Leith Oscar martes, 24 de abril de 2012 17:10
    martes, 24 de abril de 2012 13:01
  • Leandro: ¿No te parece una buena opción tener un BindingSource, los textboxes asociados con campos del BindingSource y el combo también enlazado al BindingSource? De esta forma, al cambiar el SelectedValue del combo se actualiza el curent del BindingSource y consecuentemente los textboxes. 

    La ventaja es que para un desarrollador con poca experiencia es más fácil de implementar, todo se puede hacer desde el diseñador de formularios.

    La desventaja es que si la tabla es grande, recuperar todos los registros con todos los campos puede ser costoso en performance (tiempo de respuesta) y además en uso de memoria.

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    • Marcado como respuesta Leith Oscar martes, 24 de abril de 2012 17:10
    martes, 24 de abril de 2012 14:27
  • Hola,

    gracias por responder con tanta rapidez.

    @Leandro, mañana probaré lo que me comentas, además tiene buena pinta y lo entiendo que es lo importante.

    @Yván: Si que es verdad, la tabla no va ser grande, calculo que como máximo habrán 50 conductores,(creo) además de esta tabla también haré algo parecido so bre la tabla " Camiones " . La idea es facilitar al usuario esta entrada de datos (Evitar error Humanos) y a su vez, facilitarle el trabajo. A nivel de Perfomance, no se que como trabajaría pero prefiero realizar una Query.



    No obstante probaré ambos metodos y os comento el que ! Gracias!!!!
    • Marcado como respuesta Leith Oscar martes, 24 de abril de 2012 17:10
    martes, 24 de abril de 2012 17:09
  • Buenos dias,


    he estado trasteando y... me falla a la hora de conectar con la BD Acces (2010) no sé..

    el error que me dice es ( Keyword not suportted:"Provider" ) quiere decir que la ruta no es correcta?

    lo que he hecho a sido coger la conexion de la tabla del "databasedataset wizard", ¿es correcto?

                int id = Convert.ToInt32(comboBox1.SelectedValue);
                SqlConnection con = new SqlConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Administrator\My Document\Database.accdb;Persist Security Info=False");

                con.Open();

                string query = "SELECT * FROM Conductores WHERE Id = @id";
                using (SqlCommand cmd = new SqlCommand(query, con))
                using (SqlDataReader reader = cmd.ExecuteReader())

            while (reader.Read())
            {
                textBox6.Text= Convert.ToString(reader.GetString(1));  //reader("Nombre"));
                //textBox6.Text = Convert.ToString(reader("Nombre"));
                //TextBox2.Text = Convert.ToString(reader("nombrecampo2"));
                //TextBox3.Text = Convert.ToString(reader("nombrecampo3"));
            }

    miércoles, 25 de abril de 2012 9:45