none
AutompleteTextbox con Sql (actualizar en ejecución) RRS feed

  • Pregunta

  • Hola, mi consulta es la siguiente: El "autocompletar" del texbox se ejecuta bien con la base existente pero al guardar nuevos valores estos no aparecen en la lista sugerida del textbox en ese momento. Cuando cierro el formulario o la aplicación y la vuelvo abrir con los datos si  aparecen en el listado. Básicamente es eso si cargo 25 nuevos datos quisiera que en el listado aparezcan sin tener que estar cerrando el formulario y abriendo de nuevo .Aclaro que la base se actualiza, pero no así la colección del  listado del "autocompletar", hasta que se vu

      public Form1()
            {
                InitializeComponent();
                // TODO: esta línea de código carga datos en la tabla 'baseProvedoresDataSet.Provedores' Puede moverla o quitarla según sea necesario.
                this.provedoresTableAdapter.Fill(this.baseProvedoresDataSet.Provedores);
            }
            SqlConnection cn = new SqlConnection();
            SqlCommand cmd;
            SqlDataReader dr;
    
            SqlDataAdapter adapter;
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
    
            private void Form1_Load(object sender, EventArgs e)
            {
                cn = Miconexion.ObtenerConexion();
                AutocompletarCuit();
                AutocompletarNombre();
                cn.Close();
            }
    
            private void ActualizarDG()
            {
                cn = Miconexion.ObtenerConexion();
                cmd = cn.CreateCommand();
                string commandText = "SELECT * FROM Provedores";
                adapter = new SqlDataAdapter(commandText, cn);
                baseProvedoresDataSet.Reset();
                ds.Reset();
                adapter.Fill(ds);
                adapter.Fill(baseProvedoresDataSet);
                dt = ds.Tables[0];
                dataGridView1.DataSource = dt;
                cn.Close();
    
            }
            //METODOS AUTOCOMPLETAR
            #region Zona Autocompletar
            private void AutocompletarCuit()
            {
                cmd = new SqlCommand("SELECT CUIT FROM Provedores", cn);
                dr = cmd.ExecuteReader();
                AutoCompleteStringCollection Collection = new AutoCompleteStringCollection();
                while (dr.Read())
                {
                    Collection.Add(dr.GetString(0));
                }
                TxtCuil.AutoCompleteCustomSource = Collection;
    
                dr.Close();
            }
            private void AutocompletarNombre()
            {
                cmd = new SqlCommand("SELECT NOMBRE FROM Provedores", cn);
                dr = cmd.ExecuteReader();
                AutoCompleteStringCollection Collection = new AutoCompleteStringCollection();
                while (dr.Read())
                {
                    Collection.Add(dr.GetString(0));
                }
                textName.AutoCompleteCustomSource = Collection;
                dr.Close();
            }
            #endregion
    
            private void BtnGuardar_Click(object sender, EventArgs e)
            {
                SqlConnection Conexion = Miconexion.ObtenerConexion();
    
                SqlCommand Comando = new SqlCommand(string.Format("Insert Into Provedores (CUIT,NOMBRE) values ('{0}','{1}')",
                    TxtCuil.Text,textName.Text), Conexion);
    
                int Resultado = Comando.ExecuteNonQuery();
                Conexion.Close();
    
                if (Resultado > 0)
                    MessageBox.Show("Datos Guardados Correctamente!!", "Guardados!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                    MessageBox.Show("Se Guardardo", "Error al Guardar", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                ActualizarDG();
              
            }

    elve a entrar al formulario. Gracias por su aporte. Adjunto código.

    miércoles, 29 de mayo de 2019 12:19

Respuestas

  • Hola:

    Cuando hace el botón BtnGuardar, actualizas la base de datos y vuelves a leer los datos usando ActualizarDG(), pero en no actualizas el autocompletar llamando a AutocompletarCUIT() ni AutocompletarNombre().

    Yo añadiría las llamadas a AutocompletarCUIT() y AutocompletarNombre() dentro de ActualizarDG(), justo antes del cn.Close. Así cada vez que 'refresques' los datos, también se refrescarán los autocompletar.

    Un saludo

    • Marcado como respuesta LesPro1221 miércoles, 29 de mayo de 2019 13:47
    miércoles, 29 de mayo de 2019 13:30

Todas las respuestas

  • Hola:

    Cuando hace el botón BtnGuardar, actualizas la base de datos y vuelves a leer los datos usando ActualizarDG(), pero en no actualizas el autocompletar llamando a AutocompletarCUIT() ni AutocompletarNombre().

    Yo añadiría las llamadas a AutocompletarCUIT() y AutocompletarNombre() dentro de ActualizarDG(), justo antes del cn.Close. Así cada vez que 'refresques' los datos, también se refrescarán los autocompletar.

    Un saludo

    • Marcado como respuesta LesPro1221 miércoles, 29 de mayo de 2019 13:47
    miércoles, 29 de mayo de 2019 13:30
  • Gracias funcionó, me acabo de dar cuenta del error. 
    • Editado LesPro1221 miércoles, 29 de mayo de 2019 13:51
    miércoles, 29 de mayo de 2019 13:47