Bonjour,

Je suis étudiante en développement, lors du développement de mon programme, je me suis retrouvé face à un petit problème de requête.
Mon environnement de travail est du c# sur visual studio 2010 avec une BDD mysql.

Le contexte :
Cette application permet de mettre à jour l'ensemble des produits qui sont en location. Un client appel l’entrepôt pour réserver un produit. L'utilisateur doit être capable de répondre rapidement si le produit est disponible pour la date souhaité (s'il n'est pas déjà loué pour cette période).
Donc l'utilisateur sélection la date de sortie du produit et la date d'entrée au dépot.
Sur l'événement, de la case à cocher, on fait une vérification auprès de la BDD pour voir sa disponibilité.
S'il n'est pas disponible, on affiche un message d'erreur.
1er problème : requête sql
2ème problème : comment vérifier si la requête renvoi un résultat pour afficher le message de non disponibilité ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private void checkedListBoxProduit_SelectedIndexChanged(object sender, EventArgs e)
        {
            string reference = ((Location)(checkedListBoxProduit.SelectedItem)).Reference.ToString();
            int idProduit = ((Location)(checkedListBoxProduit.SelectedItem)).ID;
            DateTime dateD = dateDebutLocation.Value;
            DateTime dateF = dateFinLocation.Value;
            factory = DbProviderFactories.GetFactory(leProvider);
            string strConnect = ConfigurationManager.ConnectionStrings["aplvlecs"].ConnectionString;
            maConnexion = factory.CreateConnection();
            maConnexion.ConnectionString = strConnect;
            maConnexion.Open();
            //Création de l'objet responsable de l'exécution des requêtes
            maCommand = factory.CreateCommand();
            maCommand.CommandText = "SELECT numProduit  from jos_mleweb_louer WHERE numProduit NOT IN(SELECT numProduit from jos_mleweb_louer WHERE '"+dateD+"' between dateDeSortieProduitLouer and dateEntreeProduitLouer OR '"+dateF+"' between dateDeSortieProduitLouer and dateEntreeProduitLouer OR ('"+dateD+"' <= dateDeSortieProduitLouer AND '"+dateF+"' >= dateEntreeProduitLouer))AND  numProduit = " + idProduit;
            //MessageBox.Show("SELECT numProduit  from jos_mleweb_louer WHERE numProduit NOT IN(SELECT numProduit from jos_mleweb WHERE '" + dateD + "' between dateDeSortieProduitLouer and dateEntreeProduitLouer OR '" + dateF + "' between dateDeSortieProduitLouer and dateEntreeProduitLouer OR ('" + dateD + "' <= dateDeSortieProduitLouer AND '" + dateF + "' >= dateEntreeProduitLouer))AND  numProduit = " + idProduit);
 
            maCommand.Connection = maConnexion;
 
            //Méthode qui ExecuteReader
            monLecteur = maCommand.ExecuteReader();
 
            if (monLecteur.HasRows == true)
            {
                 MessageBox.Show("non");
 
            }
            else
            {
               monLecteur.Read();
               MessageBox.Show("ok");
            }
        }
Et la BDD :

Merci d'avance de l'aide que vous pourrez m'apporter

Madleen