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

VB.NET Discussion :

Filtrer selon deux date [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Points : 60
    Points
    60
    Par défaut Filtrer selon deux date
    Bonjour,

    Je veux filtrer des données stocker selon deux dates: date de dépôt et date de livraison. Vous trouvez ci-dessous le code. Mais on cliquant sur le bouton, il m'affiche tous les données stockés pas selon les dates sélectionner .
    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
    Dim cmd As OleDbCommand = cn.CreateCommand()
            Dim debut As Date = CDate(DateTimePicker1.Text())
            Dim fin As Date = CDate(DateTimePicker2.Text())
            If ComboBox1.SelectedItem = "toutes" Then
                cmd.CommandText = "SELECT numero, total FROM facture WHERE DATEDIFF(date_depot, " & debut & ") >= 0 AND DATEDIFF(date_livraison, " & fin & ") <= 0 "
     
     
            End If
     
            cn.Open()
            Dim reader As OleDbDataReader = cmd.ExecuteReader()
            Dim indice As Integer = 0
     
     
            Do While reader.Read()
                DataGridView1.Rows.Add()
                DataGridView1.Rows(indice).Cells(0).Value = reader.GetInt32(0)
                DataGridView1.Rows(indice).Cells(1).Value = reader.GetDouble(1)
                indice = indice + 1
            Loop
     
            reader.Close()
            cn.Close()

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Pourquoi utiliser DATEDIFF ?

    Quelle est précisément la règle à appliquer ? (ex. Il faut récupérer tous les enregistrements pour lesquels la date de dépot est inférieure ou égale à la date de début....)

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Points : 60
    Points
    60
    Par défaut
    Bon, j'ai plusieurs règle à appliquer.
    La première consiste à sélectionner les enregistrements faite supérieur ou égale à la date de dépôt et inférieur ou égale à la date de livraison.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Ce n'est toujours pas très clairement expliqué, mais voici déjà une piste :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT numero, total FROM facture WHERE date_depot >= @dateDebut AND date_livraison <= @dateFin"
    Tu auras besoin de te documenter pour utiliser ce code : Requêtes paramétrées.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Points : 60
    Points
    60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim debut As Date = CDate(DateTimePicker1.Text())
            Dim fin As Date = CDate(DateTimePicker2.Text())
    On a une table access facture possédant les attributs numero, total, date_depot et date_livraison. on veut sélectionner le numero et le total de la table facture ou date_depot>=debut et date_livraison<=fin.

    J'ai testé ce type de requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT numero, total FROM facture WHERE date_depot >= #" & debut & "# AND date_livraison <= #" & fin & "#"
    mais elle affiche tous les enregistrement.


    J'ai testé votre proposition mais pas de résultat.
    Merci pour votre réponse

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    L'utilisation d'une requête paramètrée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        cmd.CommandText = "SELECT numero, total FROM facture WHERE date_depot >= ? AND date_livraison <= ?"
        cmd.Parameters.AddWithValue("?", debut)
        cmd.Parameters.AddWithValue("?", fin)

  7. #7
    Nouveau membre du Club
    Profil pro
    Chef projet
    Inscrit en
    Novembre 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef projet

    Informations forums :
    Inscription : Novembre 2002
    Messages : 20
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par foufou.mr Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim debut As Date = CDate(DateTimePicker1.Text())
            Dim fin As Date = CDate(DateTimePicker2.Text())
    On a une table access facture possédant les attributs numero, total, date_depot et date_livraison. on veut sélectionner le numero et le total de la table facture ou date_depot>=debut et date_livraison<=fin.

    J'ai testé ce type de requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT numero, total FROM facture WHERE date_depot >= #" & debut & "# AND date_livraison <= #" & fin & "#"
    mais elle affiche tous les enregistrement.


    J'ai testé votre proposition mais pas de résultat.
    Merci pour votre réponse
    il faut certainement formater les dates en "anglais" en faisant quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT numero, total FROM facture WHERE date_depot >= #" & debut.tostring("MM/dd/yyyy") & "# AND date_livraison <= #" & fin.tostring("MM/dd/yyyy") & "#"

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    @crevecoeurj, si tu utilises une requête paramétrée, pas besoin de t'occuper du format. Donc il FAUT utiliser des requêtes paramétrées, ça évite bien des soucis en plus de sécuriser ton application contre les attaques par injection SQL entre autre.

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Et afin d'être sur que le format sera bien pris en compte, on procède ainsi. (voir le résultat dans la miniature attachées : table access ; sélection date debut = "06/12/2013", date fin = "12/12/2013" ; dgv résultant)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                cmd.CommandText = "SELECT numero, total FROM facture WHERE date_depot >= ? AND date_livraison <= ?"
                cmd.Parameters.Add(New OleDbParameter("DateDebut", OleDbType.DBDate))
                cmd.Parameters("DateDebut").Value = debut
                cmd.Parameters.Add(New OleDbParameter("DateFin", OleDbType.DBDate))
                cmd.Parameters("DateFin").Value = fin
    Access ne tient pas compte des noms dans la requête. D'ou les "?", par contre il est indispensable d'ajouter les paramètres dans l'ordre d'apparition dans la requête.

    Un peu de lecture : Tuto sur les requêtes paramétrées (avec sqlServer, mais le principe est le même pour acces, à part les "?" dans la requête à la place des @...)
    Images attachées Images attachées  

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Points : 60
    Points
    60
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtrer selon deux critères en combobox
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/10/2013, 10h00
  2. [Débutant] Filtrer entre deux dates dans un gridview en asp.net c#
    Par pemco dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/08/2013, 22h19
  3. [AC-2010] Filtrer un sous formulaire selon une date.
    Par UnessBen dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/07/2012, 23h24
  4. Impossible filtrer requête entre deux dates
    Par alfhcg dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/01/2012, 18h02
  5. Réponses: 6
    Dernier message: 08/11/2005, 20h33

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