IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème gestion disponibilité chambre c#


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut Problème gestion disponibilité chambre c#
    bonjour,
    je suis entrain de développer un module de disponibilité de chambre
    lorsque je choisie la date début et la date fin et je clique sur le bouton rechercher je dois afficher la liste de toutes les chambres dans un tableau et devant ceux disponibles je mets une colonne vert et devant ceux occupées je mets une colonne rouge

    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
    string cmdQuery = "select ID_ch, nom_ch date_debut, date_fin from calendrier, chambre where chambre.ID_ch=calendrier.ID_ch";
    	OracleCommand cmd = new OracleCommand(cmdQuery);
    	 cmd.Connection = con;
        cmd.CommandType = CommandType.Text;
    	 OracleDataReader reader = cmd.ExecuteReader();
    	  while (reader.Read())
        {
    	TableRow tRow = new TableRow();
                    tb.Rows.Add(tRow);
                    TableCell tCell = new TableCell();
                    TableCell tCel2 = new TableCell();
                    if (Convert.ToDateTime(TextBox1.Text)>reader[1] || Convert.ToDateTime(TextBox1.Text)<reader[2] || Convert.ToDateTime(TextBox2.Text)>reader[1] || Convert.ToDateTime(TextBox2.Text)>reader[2])
                    {
                        tCell.Text = reader[0];
                        tRow.Cells.Add(tCell);
                        tCel2.BackColor = Color.Green;
                        tRow.Cells.Add(tCel2);
                    }
                    else
                    {
                        tCell.Text = reader[0];
                        tRow.Cells.Add(tCell);
                        tCel2.BackColor = Color.Red;
                        tRow.Cells.Add(tCel2);
                    }
    	}
    avec ce code il m'affiche toujours les chambres occupées seulement
    alors que je devrais afficher tous les chambres en indiquant les occupées par une couleur rouge et les disponibles par une couleur vert
    sachant que j'ai deux tables
    Calendrier: id_cal, date_debut,date_fin,ID_ch
    Chambre: ID_ch, nom_ch, id_visiteur

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 157
    Points : 7 408
    Points
    7 408
    Billets dans le blog
    1
    Par défaut
    1/ La recherche de disponibilité devrait se faire directement dans la base de données et non dans ton code. Là si tu as un milliard de chambres, dont seulement 10 disponible, tu vas charger le milliard de ligne et planter à la fois la base de données, le réseau, et le programme.
    2/ Pour saisir une date, n'utilise pas un TextBox, mais un DatePicker. Là tu n'as aucune certitude que la valeur saisie est une date valide. Et encore moins que son format est celui que C# attend.
    3/ Du coup tu devrais modifier ton code et poser la question sur le forum "Langage SQL" dans la catégorie bases de données.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    en plus des remarques de StringBuilder, quelques une en sus sur le SQL :
    - il te manque une virgule,
    - que vient faire id_visiteur dans ta table Chambre ?
    - dans ta requête où est le BETWEEN entre les dates ?
    - enfin, si tu veux avoir toutes les lignes de ta table Chambre même si aucun tuple n'est associé côté Calendrier, il faut faire une "jointure à gauche" (la syntaxe d'une telle jointure peut dépendre du SGBD utilisé) mais attention, ça reste une "multiplication", si tu as plusieurs réservations pour une même chambre en considérant les contraintes appliquées (dates), celle-ci apparaîtra plusieurs fois.
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Problème gestion de collisions
    Par kaien dans le forum Physique
    Réponses: 6
    Dernier message: 31/01/2007, 15h31
  2. Problème gestion IOException
    Par matt8-5 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 03/11/2006, 15h07
  3. [C# 2.0] Problème gestion mémoire
    Par Stéphane-M dans le forum Windows Forms
    Réponses: 13
    Dernier message: 21/09/2006, 14h36
  4. Problème gestion actionListener pour JButton
    Par cedricbr dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/05/2006, 16h39
  5. Problème - Gestion des exceptions - MFC.
    Par Atomikx dans le forum MFC
    Réponses: 4
    Dernier message: 14/11/2005, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo