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

MS SQL Server Discussion :

problème au niveau de ma requête?


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 46
    Points
    46
    Par défaut problème au niveau de ma requête?
    bonjour à tous, jai un problème qui m'enpêche d'avancer...En fait j'ai une base de données sous sql server2000 dont je vous donne un extrait de la structure(qui nous interesse).

    RESERVATION(NUMERORES,IDTYPERES,IDSTATUT,MATRICULEEMPLOYE,
    DATEDEMANDE,DATEDEB,DATEFIN,HEUREDEB,HEUREFIN)

    MATERIEL(CODEMAT,NUMEROSERIEMAT,LIBELLEMAT)

    PORTER(NUMERORES,CODEMAT)

    Les champs "DATEDEB" et "DATEFIN" sont de type string

    Mon objectif est d'arriver à faire une recherche pour afficher les matériels disponibles à une période donnée.Pour cela jai fait un formulaire avec 2 textbox (tb_datedeb1 et tb_datefin1). Lorsqu' on fait une reservation les tables "reservation" et "porter" sont renseignés... Mon problème est que lorsque j'exécute il affiche meme les matériels qui sont réservés à la période choisé dans le formulaire. Voici le code:

    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
    Protected Sub bt_rechercher_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_rechercher.Click
     
            Dim oConnection As System.Data.SqlClient.SqlConnection
            Dim oCommand As System.Data.SqlClient.SqlCommand
            Dim oDataReader As System.Data.SqlClient.SqlDataReader
            Dim sSQL As String
     
            oConnection = New System.Data.SqlClient.SqlConnection
            oConnection.ConnectionString = "Server=(local); Initial Catalog='GESSALLE';" & " Trusted_Connection=True;"
     
            oConnection.Open()
     
            sSQL = "SELECT DISTINCT m.LIBELLEMAT FROM MATERIEL m, PORTER p, RESERVATION r WHERE p.NUMERORES=r.NUMERORES AND p.CODEMAT=m.CODEMAT OR m.CODEMAT NOT IN (SELECT CODEMAT FROM PORTER) AND (r.DATEDEB NOT BETWEEN '" & tb_datedeb1.Text & "' and '" & tb_datefin1.Text & "') AND (r.DATEFIN NOT BETWEEN '" & tb_datedeb1.Text & "' and '" & tb_datefin1.Text & "')"
     
            oCommand = New System.Data.SqlClient.SqlCommand(sSQL, oConnection)
     
            oDataReader = oCommand.ExecuteReader()
     
            DTG_RESULT1.DataSource = oDataReader
            DTG_RESULT1.DataBind()
     
            oDataReader.Close()
            oConnection.Close()
     
        End Sub
    svp aidez moi
    NB: je développe avec vs.net 2005 et jai crée un data grid DTG_RESULT1 pour l'affichage des données

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par lesultan2007 Voir le message
    svp aidez moi
    on veut bien, mais... tu as juste oublié d'expliquer ce qui te pose problème

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 46
    Points
    46
    Par défaut
    ce qui me pose problème c'est que ma requête ne m'affiche pas les matériels disponibles à une période donnée. Or c'"est à ca que je veux aboutir.Je sais pas si vous avez des suggestion par rapport à la structure de ma base ou alors si la structure de la base est bonne, je veux pouvoir extraire les matériels disponibles à une période donnée

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    OK, donc la question n'a rien à voir avec VB.NET, c'est une question SQL Server.
    Je déplace

  5. #5
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Je sais pas où est le problème.

    Mais évite les requêtes directes, utilise les requêtes paramétrées ou des PS.
    cela renforcera la sécurité de ton application

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Quelque chose come :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT DISTINCT m.LIBELLEMAT 
    FROM   MATERIEL m
           INNER JOIN PORTER p
                 ON p.CODEMAT = m.CODEMAT
    WHERE  NOT EXISTS(SELECT * 
                      FROM   PORTER p1
                              INNER JOIN RESERVATION r1
                                   ON p1.NUMERORES = r1.NUMERORES
                      WHERE  m.CODEMAT = p1.CODEMAT
                        AND  (r1.DATEDEB > @DATEDEBUT AND (r1.DATEDEB < @DATEFIN OR r1.FIN < @DATEFIN)) OR
                             (@DATEDEBUT > r1.DATEDEB AND (@DATEDEBUT < r1.FIN OR @DATEFIN < r1.FIN)) OR
                             (r1.DATEDEB = @DATEDEBUT AND (r1.FIN IS NOT NULL AND @DATEFIN IS NOT NULL)))
    Cela utilise un NOT EXISTS et le principe du prédicat OVERLPAS.
    Voir : http://sqlpro.developpez.com/cours/gestiontemps/#L1.2.2

    @DATEDEBUT et @DATEFIN étant les paramètres de la période souahitée...

    A +

Discussions similaires

  1. [1.x] Probléme au niveau d'une requête DQL
    Par simolewestside dans le forum Symfony
    Réponses: 1
    Dernier message: 27/12/2012, 12h31
  2. Problème au niveau de la requête..
    Par Abdellah2010 dans le forum VB.NET
    Réponses: 0
    Dernier message: 05/07/2011, 16h07
  3. Problème au niveau de la requête Update
    Par info.pascal dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2011, 16h53
  4. [SQL-Server] Problème de code au niveau de ma requête
    Par meryem85 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/09/2007, 15h05
  5. [Oracle] Problème au niveau d'une requête et de l'utilisation de son résultat
    Par LethaL86 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/09/2007, 14h31

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