Probléme requete LINQ par rapport a une boucle tant que

Damiens29 - 6 févr. 2013 à 11:20
 Damiens29 - 14 févr. 2013 à 09:25
Bonjour,

je cherches a recuperer des éléments dans une textbox d'autocompletion via une requete Linq mais je ne sais pas du tous comment m'y prendre.

Code de mon autocompletion :

//Chaine permettant de ramener les éléments de ma requéte.
string[] suggestions = { };


private void t_numdeco_TextChanged(object sender, EventArgs e)
        {
            if (!textChanging)
            {
                textChanging = true;
                string prefix = "";
                string text = t_numdeco.Text;
                bool changed = false;

                if (lastText.Length < text.Length && text.EndsWith(" "))
                {
                    prefix = text;
                    changed = true;
                }
                else if (lastText.Length < text.Length && lastText.EndsWith(" ") && text.Contains(" "))
                {
                    prefix = text.Substring(0, text.LastIndexOf(' '));
                    changed = true;
                }

                if (changed)
                {
                    autoComplete.ReleaseAutoComplete();
                    autoComplete new CustomSource(suggestions.Where(t> !prefix.Split().Contains(t)).Select(t => prefix + t).ToArray());

                    autoComplete.Bind(t_numdeco);
                }

                textChanging = false;

            }


Requete SQL que je souhaiterais utiliser pour faire ma requete LINQ :

 connexion.Open();
                lock (this)
                    using (var command = new SqlCommand("SELECT * FROM dbo.T_Projets", connexion))
                    {
                        SqlDataReader dr = command.ExecuteReader();
                        while (dr.Read())
                        {
                            collec.Add(dr["CodeProjet"].ToString());
                        }
                        dr.Close();
                        dr.Dispose();
                    }
                connexion.Close();


Merci d'avance car je suis vraiment perdu !

17 réponses

salut @Damien29,

ta question par rapport aux:
connexion.Open();
lock (this)
using (var command = new SqlCommand("SELECT * FROM dbo.T_Projets", connexion))
{
SqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
collec.Add(dr["CodeProjet"].ToString());
}
dr.Close();
dr.Dispose();
}
connexion.Close();


je n'arrive pas à te comprendre ce que tu veut avoir

int mindongo
0
while (dr.Read())
{
collec.Add(dr["CodeProjet"].ToString());
}
dr.Close();
dr.Dispose();


que fait ton
dr.Dispose()?????


while (dr.Read())
{
collec.Add(dr["CodeProjet"].ToString());
}
dr.Close();

c'est déjà bon jusque là
int mindongo
0
Salut !

ca,c etait pour faire l'autocompletion.
En fait,j'aimerais juste savoir comment récuperer cette donnée(CodeProjet) par rapport a mon string[] suggestions = { " " };

 

//Chaine permettant de ramener les éléments de ma requéte. 
string[] suggestions = { }; 


private void t_numdeco_TextChanged(object sender, EventArgs e) 
{ 
if (!textChanging) 
{ 
textChanging = true; 
string prefix = ""; 
string text = t_numdeco.Text; 
bool changed = false; 

if (lastText.Length < text.Length && text.EndsWith(" ")) 
{ 
prefix = text; 
changed = true; 
} 
else if (lastText.Length < text.Length && lastText.EndsWith(" ") && text.Contains(" ")) 
{ 
prefix = text.Substring(0, text.LastIndexOf(' ')); 
changed = true; 
} 

if (changed) 
{ 
autoComplete.ReleaseAutoComplete(); 
autoComplete new CustomSource(suggestions.Where(t> !prefix.Split().Contains(t)).Select(t => prefix + t).ToArray()); 

autoComplete.Bind(t_numdeco); 
} 

textChanging = false; 

} 

Requete SQL que je souhaiterais utiliser pour faire ma requete LINQ :

 
connexion.Open(); 
lock (this) 
using (var command = new SqlCommand("SELECT * FROM dbo.T_Projets", connexion)) 
{ 
SqlDataReader dr = command.ExecuteReader(); 
while (dr.Read()) 
{ 
collec.Add(dr["CodeProjet"].ToString()); 
} 
dr.Close(); 
dr.Dispose(); 
} 
connexion.Close(); 
0
while (dr.Read()) 
{ 
collec.Add(dr["CodeProjet"].ToString()); 
} 


collec c'est quoi svp mon pot

int mindongo
0

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

Posez votre question
normalement tu peut faire:
while (dr.Read()) 
{ 
collec.Item.Add(dr["CodeProjet"].ToString()); 
} 

si au moin tu m'expliquait ton Controle ou quoi nommé "collec"
int mindongo
0
svp Item #Items:
c'est comme cà
while (dr.Read()) 
{ 
collec.Items.Add(dr["CodeProjet"].ToString()); 
} 


int mindongo
0
Collec :
    AutoCompleteStringCollection collec = new AutoCompleteStringCollection();

C'est pour ca qu'il n'y a pas besoin d'avoir d'items.
0
ok, quand tu lance y a t-il un message quelconque ?? ou ton collec affiche rien??
int mindongo
0
Non mais mon collec n'a rien a voir avec ca.
Faut même pas le prendre en compte.
C'etait juste un exemple pour expliquer ce que je voulais que ma requete me raméne dans mon string[] suggestions.

C'est juste qu'il faut passer par des requétes LINQ et que je ne m'y connais pas du tous en fin de compte et que j'aimerais bien qu'on m'explique un ptit peu.
0
Toujours Toujours personnes ???
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
12 févr. 2013 à 10:11
Bonjour, je ne fais pas de sql, donc je ne répondrais pas à ta question.

Si ton besoin est de faire de d'autocompletion avec une textbox, regarde du coté des propriétés AutoCompleteCustomSource, AutoCompleteMode, AutoCompleteSource.

Mais ton titre parle de requete Lind ou est elle?
Linq pourra sans doute t'aider à réinventer l'amérique, mais que les données viennent du sql, d'access, de xml qu'elles soit présentées sous forme de List<T>, de dataset ou datareader pour Linq ca ne change rien.

Donc centre biebn ta question sur cette requette (si c'est bien là ton problème)

Whismeril
0
Je gére déjà des autocompletion mais celles ci me raménent des erreurs une fois sur deux (memory is corrupt).

J'essaye donc d'utiliser une autre solution mais cette partie de code me bloque :

if (changed) 
{ 
autoComplete.ReleaseAutoComplete(); 
autoComplete new CustomSource(suggestions.Where(t> !prefix.Split().Contains(t)).Select(t => prefix + t).ToArray()); 
autoComplete.Bind(t_numdeco); 
} 


Mon but etant de ramener les valeurs de ma textbox dans cette chaine de caractére :

//Chaine permettant de ramener les éléments de ma requéte. 
string[] suggestions = { }; 


Et c'est là où je bloque aussi.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
13 févr. 2013 à 10:58
Sans même avoir vérifié comment on se sert de CustomSource, cette ligne
autoComplete new CustomSource(suggestions.Where(t> !prefix.Split().Contains(t)).Select(t => prefix + t).ToArray());

présuppose que suggestions contienne des données.

Or si
string[] suggestions = { }; 
ça ne peut pas fonctionner.

Whismeril
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
13 févr. 2013 à 11:33
Ta requette est obscure pour moi, ne sachant pas ce qu'est prefix je ne vois pas ou tu veux en venir

En prenant cet exemple msdn, j'ai refait le test et le textbox affiche bien la liste des mois commençant par le texte saisi.

Whismeril
0
Ah bien,ton exemple msdn est très clair mise a part que je dois ramener des valeurs d'une BDD.

Je vais l'essayer tout a l'heure en essayant d'intégrer une requete et je te tiens au courant si je m'en suis sorti.

Dans mon :
string[] suggestions = { }; 

Lorsque j'ajoute des données en dure,ca fonctionne très bien mais mon souci et juste que je ne vois pas comment intégrer ma requete dans cette chaine de données.

je te remercie en tous les cas pour ton code.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
13 févr. 2013 à 17:17
Dans mon :
Code C# :
string[] suggestions = { };

Lorsque j'ajoute des données en dure,ca fonctionne très bien mais mon souci et juste que je ne vois pas comment intégrer ma requete dans cette chaine de données.


Ok, moi ce que je ne comprends pas c'est que veux tu faire avec ta requête?

Whismeril
0
Ben en fait,les données de ma requéte,c'est ce qui va me permettre de faire ma recherche dans mon autocompletion.Au lieu de selectionné des données que j'ai intégré en dure, je vais aller chercher les données de ma requéte.
0
Rejoignez-nous