Temps execution requete pour AutoCompleteSource

Résolu
cs_Kassidy Messages postés 97 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 21 mars 2008 - 25 janv. 2007 à 15:51
cs_Kassidy Messages postés 97 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 21 mars 2008 - 25 janv. 2007 à 16:31
Bonjour a tous,
Je souhaite faire une saisie semi-automatique sur un champs texte via AutoCompleteSource, a partir d’un champs d'une table de ma base de données.
Le problème est qu'il y a beaucoup d'enregistrements dans ma table, et donc la requête met beaucoup trop de temps à s'exécuter (je l'effectue au chargement de ma page).

Peut-on faire en sorte que la requête s'effectue comme en VirtualMode d'un datagridview?
(ou que ca se charge "petit a petit")?
Je suis sous visual c# express 2005, et j'exploite une base MySQL via MySQL Connector NET 1.0.8 (j'utilise donc : using MySql.Data.MySqlClient;)

voici mon code :

private void MaForm_Load(object sender, EventArgs e)
{
    String requete = "SELECT MonChamps FROM MaTable";
    try
    {
        //active l'autocomplétion
        MonTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
        //mode de l'autocomplete
        MonTextBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
       
        string connection_bdd = "Database=MaBase;Data source=localhost;User Id=root;Password=";
        ma_connection.ConnectionString = connection_bdd;

        ma_connection.Open();
       
        MySqlCommand cmd_autocompletion = new MySqlCommand(requete, ma_connection);
        MySqlDataReader exe_autocompletion = cmd_autocompletion.ExecuteReader();

        while (exe_autocompletion.Read())
        {
            //ajoute un élément a ma liste de saisie semi-auto.
            MonTextBox.AutoCompleteCustomSource.AddRange(new String[] { exe_autocompletion.GetString(0)});
        }
        exe_autocompletion.Close();
        ma_connection.Close();
    }
    catch (MySqlException ex)
    {
        MessageBox.Show("Erreur SQL:\n" + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

en d'autres termes : HEEEEEEEEEELPPPPPPPPPP SVP !!!!!!!!!!!!!!

5 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 janv. 2007 à 15:53
tu peux déjà charger tes données dans un autre thread... ca permettra d'éviter de figer ta fenêtre.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
3
cs_Kassidy Messages postés 97 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 21 mars 2008 3
25 janv. 2007 à 16:00
merci beaucoup de répondre aussi vite
je vais test ca et je te tien au courrant
0
cs_Kassidy Messages postés 97 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 21 mars 2008 3
25 janv. 2007 à 16:13
Merci
beaucoup c’est nikel !!!!!!!!!!!!!!!





Par contre
ça risque pas de poser problème si j’effectue une autre requête dans mon évènement
OnLoad, si mon opération dans le thread n’est pas fini









(au cas ou ça mettrait vraiment beaucoup de temps, en
pensant que j’ai mais mon thread dans le constructeur de ma class)
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 janv. 2007 à 16:20
si tu fais une requête dans un autre thread : pas de souci... par contre évite de mettre à jour le même controle ;)

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kassidy Messages postés 97 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 21 mars 2008 3
25 janv. 2007 à 16:31
vi
et encore merci!
0
Rejoignez-nous