begin process at 2010 02 10 02:27:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

SQL Server

 > 

Requete de recherche ne fonctionnant pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requete de recherche ne fonctionnant pas

lundi 2 mars 2009 à 10:54:33 | Requete de recherche ne fonctionnant pas

luudii34

Bonjour!
Quelqu'un pourrait il me dire la syntaxe d'une requête sql qui utilise des champs saisis par l'utilisateur. Je m'explique: via des textbox l'utilisateur saisit deux nombres et j'ai a comparé ses nombres avec une liste dans une base de données mais on dirait que ma requête ne fonctionne pas car quand je clique sur valider mon datagridview ne se remplit pas.
Voici ma requete:
datemax et datemin ont été déclaré comme des chaines car ils sont extraits de mes textbox:
                strSQL = "select AUTMAT, DTENTA, NMCLI, NMCLA, LBADR1, LBADR2, LBVILL, CDPOST, NOTEL1 from DOSSIP INNER JOIN CLIENP ON DOSSIP.CDTITU=CLIENP.CDCLI where DOSSIP.TYPDOS='CAM' and DTENTA<=datemax and DTENTA>=datemin and (CDMOT1=21 or CDMOT1=211 or CDMOT1=12 or CDMOT2=21 or CDMOT2=211 or CDMOT2=12 or CDMOT3=21 or CDMOT3=211 or CDMOT3=12 or CDMOT4=21 or CDMOT4=211 or CDMOT4=12 or  CDMOT5=21 or CDMOT5=211 or CDMOT5=12 or CDMOT6=21 or CDMOT6=211 or CDMOT6=12)";

Au cas ou je laisse mon code complet, car je me demande si vraiment mon problème vient de là, je débute et j'ai vraiment beaucoup de mal à m'en sortir:
private void button1_Click(object sender, EventArgs e)
        {
            string datemin = textBox1.Text;
            string datemax = textBox2.Text;
            string strSQL = "select AUTMAT, DTENTA, NMCLI, NMCLA, LBADR1, LBADR2, LBVILL, CDPOST, NOTEL1 from DOSSIP INNER JOIN CLIENP ON DOSSIP.CDTITU=CLIENP.CDCLI where DOSSIP.TYPDOS='CAM'";
            string strCon = Settings.Default.LX_LANSAConnectionString;
            SqlConnection cn = new SqlConnection(strCon);
            cn.Open();
            if (comboBox1.GetItemText(comboBox1.SelectedItem) == "jaugeage")
            {
                strSQL = "select AUTMAT, DTENTA, NMCLI, NMCLA, LBADR1, LBADR2, LBVILL, CDPOST, NOTEL1 from DOSSIP INNER JOIN CLIENP ON DOSSIP.CDTITU=CLIENP.CDCLI where DOSSIP.TYPDOS='CAM' and DTENTA<=datemax and DTENTA>=datemin and (CDMOT1=21 or CDMOT1=211 or CDMOT1=12 or CDMOT2=21 or CDMOT2=211 or CDMOT2=12 or CDMOT3=21 or CDMOT3=211 or CDMOT3=12 or CDMOT4=21 or CDMOT4=211 or CDMOT4=12 or  CDMOT5=21 or CDMOT5=211 or CDMOT5=12 or CDMOT6=21 or CDMOT6=211 or CDMOT6=12)";
            }
            else if (comboBox1.GetItemText(comboBox1.SelectedItem) == "essai d'étanchéité")
            {
                strSQL = "select AUTMAT, DTENTA, NMCLI, NMCLA, LBADR1, LBADR2, LBVILL, CDPOST, NOTEL1 from DOSSIP INNER JOIN CLIENP ON DOSSIP.CDTITU=CLIENP.CDCLI where DOSSIP.TYPDOS='CAM' and DTENTA<=datemax and DTENTA>=datemin and (CDMOT1=18 or CDMOT1=15 or CDMOT2=15 or CDMOT2=18 or CDMOT3=15 or CDMOT3=18 or CDMOT4=18 or CDMOT4=15 or CDMOT5=15 or CDMOT5=18 or CDMOT6=18 or CDMOT6=15)";
            }

            SqlCommand cmd = new SqlCommand(strSQL, cn);
            cmd.CommandText = strSQL;
            SqlDataReader dr = cmd.ExecuteReader();
            List<camion> mesCamions;
            mesCamions=new List<camion>();
            int i;
            i = 0;


            while (dr.Read())
            {
                mesCamions.Add(new camion());
                mesCamions[i].Immatriculation = dr["AUTMAT"].ToString();
                mesCamions[i].Adresse = dr["LBADR1"].ToString();
                mesCamions[i].Complement = dr["LBADR2"].ToString();
                mesCamions[i].DateEntree = dr["DTENTA"].ToString();
                mesCamions[i].Nom = dr["NMCLI"].ToString();
                mesCamions[i].Nomcla = dr["NMCLA"].ToString();
                mesCamions[i].Ville = dr["LBVILL"].ToString();
                mesCamions[i].Notel = dr["NOTEL1"].ToString();
                mesCamions[i].Cp = dr["CDPOST"].ToString();
                i++;
            }

            dr.Close();
            cn.Close();
            dataGridView1.DataSource=mesCamions;


Quelqu'un pourrait-il de m'aider svp????
        
lundi 2 mars 2009 à 11:01:55 | Re : Requete de recherche ne fonctionnant pas

krimog

Salut

As-tu essayé d'enlever des conditions à ta requête pour voir celle(s) qui bug(gent) ?

Krimog :
while (!succeed = try()) ;

lundi 2 mars 2009 à 11:10:28 | Re : Requete de recherche ne fonctionnant pas

SharpMao

Membre Club
Hello,

J'ai deux petites remarques,

Tout d'abord, pour tout ce qui vient de l'utilisateur, comme tes dates, utilise des requêtes paramétrées. Sans oublier de parser le contenu de ton champs pour obtenir un DateTime.

Ensuite, pour plus de lisibilité (et d'efficacité, je crois), utilise des requêtes avec le mot-clef IN :

SELECT ...
AND(CDMOT1 IN (21,211,12) or CDMOT2 IN(21,211,12) or CDMOT3 IN(21,211,12) or CDMOT4 IN(21,211,12) or  CDMOT5 IN(21,211,12) or CDMOT6 IN(21,211,12))

D'ailleurs, j'espère pour toi que cette table n'es pas trop grande, car ce genre de requête avec un grand nombre de or n'est vraiment pas optimisé, mais si tu n'as pas le choix...


micalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
lundi 2 mars 2009 à 11:39:17 | Re : Requete de recherche ne fonctionnant pas

luudii34

Merci pour votre aide.
Je vais essayé de faire des requêtes paramétrées (je ne savais même pas que ça existait... lol)
Pour le IN, je n'y avais pas pensé en fait! Merci!!!

Par contre lorsque j'essaie de faire un pas à pas détaillé (sous visual studio) je viens de m'apercevoir que le code de mon if et de mon else if n'était même pas parcouru et je ne comprends pas pourquoi???
lundi 2 mars 2009 à 11:54:15 | Re : Requete de recherche ne fonctionnant pas

SharpMao

Membre Club
Hello,

à la place de comboBox1.GetItemText(comboBox1.SelectedItem), essaie combobox1.SelectedText.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
lundi 2 mars 2009 à 13:17:31 | Re : Requete de recherche ne fonctionnant pas

luudii34

Merci de me répondre aussi vite!
Ca ne change rien à mon problème si je remplace comboBox1.GetItemText(comboBox1.SelectedItem) par combobox1.SelectedText.
Mon projet est bien généré mais mes boucles ne sont pas parcourues, lorsque je regarde ce qui a été mis dans ma liste "mesCamions": ma liste se remplit de toutes les informations de la base de données. Mais par contre lorsque j'affecte ma liste à mon datagridview rien ne s'affiche, j'ai un tableau vide.

Quelqu'un saurait il d'où cela peut venir???
Je suis désolée si je pose des questions peut être bête mais je galère vraiment!


Cette discussion est classée dans : tostring, dr, mescamions, dossip, dtenta


Répondre à ce message

Sujets en rapport avec ce message

Problème Index hors limite [ par luudii34 ] Bonjour. J'ai un problème au niveau de mon code, je souhaite récupérer des données dans ma base, les stocker dans une liste (mesCamions) et m'en servi DatagridView qui ne se remplit pas!?! [ par luudii34 ] Bonjour!!! J'ai un problème avec un datagridview. Je vous explique le contexte: j'ai un datagridview que je remplis automatiquement à partir d'une ba Datagrid [ par Tommy666 ] Bonjour,J'ai un prob' avec mon Datagrid : si je veux sélectionner (ou supprimer) la personnes correspondant à la colonne sélectionné, ça ne fonctionne fonction javascript a partir du code behind [ par amel468 ] Bonjour,J'essaye de construire un tableau qui doit posseder les propriétés extend et collapse.Ce tableau se remplit a l'aide des données d'une table o probleme avec listbox [ par speedus95 ] Existe-t-il une solution qui permet de mettre ma listBox1(liste de dates) correspondant aux noms(cbbdom1)? Parce que la date ne correspond pas au nom TextBox, listbox et .ToString [ par zmaster ] Bonsoir tout le monde,Voila le problème, je veux afficher dans une listBox une suite d'éléments qu'on rentre au clavier dans une textBox. Jusque la to comboBox ne voulant pas se remplir à partir d'un IDataReader [ par systemic_anomaly ] Bonjour à tous, J'ai un problème surement simple à résoudre mais qui me prend la tête. J'aimerais remplir une comboBox avec les valeurs récupérées da [C#] Enum & ToString() [ par scoubidou944 ] Lorsque l'on a un enum,on peut avoir un code :MyEnum.MyElement.ToString ()Oki, ca marche mais si par exemple on voulait redéfinir le résultat pour obt [C#] Insertion d'une ligne dans un datagrid existant [ par sopi ] Hello !!! Je cherche à insérer une nouvelle ligne à un datagrid existant, mais rien ne se passe ... J'ai donc inséré manuellement toutes les colonnes DateTime + Helpppp [ par emmanuel9 ] Bonjour à tous, En faite mon problème est le suivant : J'ai un dateTime sous forme 05/02/2005  et je voudrais l'obtenir sous forme 20050602 Donc


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales