miércoles, 23 de marzo de 2011

Solución...al problema planteado de listar los tipos de películas en un ComboBox.


  1. Incluir en el formulario un ComboBox. Le llamaremos, por ejemplo, ComboTipo. También una etiqueta que identifique el campo tipo de película.
  2. Al método que trata el evento de clic de dicho ComboBox le añadimos el siguiente código:

    String sql = "SELECT typeID, Type FROM movietype";
    Conexion.Open();
    OleDbDataAdapter da = new OleDbDataAdapter(sql, Conexion);
    DataTable dt = new DataTable("TiposPeliculas");
    da.Fill(dt);

    this.ComboTipo.DataSource = dt;
    this.ComboTipo.DisplayMember = "Type";
    this.ComboTipo.ValueMember = "typeID";
    Conexion.Close();

    Observa que aprovechamos el objeto "Conexion" que ya teníamos. En cambio, necesitamos modificar la consulta del adaptador. Lo mejor es crear un adaptador nuevo, como se indica aquí. Con esto, aparecerá la lista desplegable de tipos de películas cada vez que hagamos clic en el cuadro combinado. No obstante, el valor que nos interesa recoger es el identificador del tipo de película. Ya solo queda pasar dicho valor a la sentencia de inserción.
  3. En el método que atiende el evento de clic del botón Insertar, modificamos la sentencia de inserción. A los dos campos de prueba que ya introducíamos (en este ejemplo: título de la película y distribuidora) le añadimos el valor del cuadro Combinado referido al tipo de la película.

    void BtnInsertarClick(object sender, System.EventArgs e)
    {
    string strTitulo = "";
    string strDistribuidor = "";

    strTitulo = TextTitulo.Text;
    strDistribuidor = TextDistribuidor.Text;
    OleDbConnection con = new OleDbConnection
    ("Provider=Microsoft.Jet.OLEDB.4.0;
    Data Source=moviedb.mdb");
    con.Open();
    OleDbCommand Comando2 = new OleDbCommand(
    "Insert into movie (Title, Publisher, typeID)
    Values ('" + strTitulo + "', '" + strDistribuidor
    + "',"+ComboTipo.SelectedValue.ToString()+")",con);
    Comando2.ExecuteNonQuery();
    con.Close();
    mostrarDatos();
    }

  4. Ahora, cada vez que incluyes una nueva película, aparecerá correctamente insertado su tipo.

No hay comentarios:

Publicar un comentario