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

Dotnet Discussion :

Problème dans la résultat entre deux dates Oledbconnection


Sujet :

Dotnet

  1. #1
    Membre du Club
    Homme Profil pro
    chargé d'affaire commercial
    Inscrit en
    Mai 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : chargé d'affaire commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 45
    Points : 55
    Points
    55
    Par défaut Problème dans la résultat entre deux dates Oledbconnection
    salut à tous
    je suis entrain de connecter à une base de donnés Access via oledb et je veux afficher les résultats dans une datagirdview par ce code

    Code VB.NET : 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
            Dim cnz As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\ferme.mdb")
            cnz.Open()
            Dim a1 As Date
            Dim a2 As Date
            a1 = remunration_s_Label.Text
            a2 = Now.Date
            Dim cmdz As New OleDbCommand("SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN #" & a1 & "# and #" & a2 & "#", cnz)
            Dim dsa As New DataSet
            Dim dra As New OleDbDataAdapter(cmdz)
            dra.Fill(dsa, "fonctionaire_ab")
            DataGridView1.DataSource = dsa
            DataGridView1.DataMember = "fonctionaire_ab"
            cnz.Close()
            cnz = Nothing
            dra = Nothing
            dsa = Nothing

    le code a fonctionné mais il donne toujours des valeurs fausses sans aucune logique

    par exemple, les dates sont :

    date_ab :
    28/04/2019
    26/04/2019
    18/05/2019
    01/05/2019
    02/05/2019
    08/05/2019

    a1 = 26/04/2019 ET a2 = 02/05/2019 il me retourne comme résultat que la date : 26/04/2019
    et si j'inverse les arguments a1 ET a2 il me retourne le même résultat
    et dans des autres exemples il me retourne des résultats hors les bornes de l'intervalle datse

    merci d'avance pour vos aides

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je pense que le problème est le format des dates,Tu ne dois pas formater les dates dans le format attendu YYYYMMDD par exemple et DD/MM/YYYY fourni. Ce qui est recommandé pour éviter les injections de sql et d'utiliser une requête paramétrée
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cmdz As New OleDbCommand("SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN @a1 and @a2", cnz)
    With cmd.Parameters
                .Add("@a1", OleDbType.Date).Value = a1
                .Add("@a2", OleDbType.Date).Value = a2
            End With
    Je me suis inspirée de https://social.msdn.microsoft.com/Fo...nes-avec-vbnet.
    Cordialement
    Soazig

  3. #3
    Membre du Club
    Homme Profil pro
    chargé d'affaire commercial
    Inscrit en
    Mai 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : chargé d'affaire commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 45
    Points : 55
    Points
    55
    Par défaut Bien fonctionné
    merci soazig vous avez raison votre code a bien fonctionné mais veuillez m'expliquer pourquoi il m a retourné des valeurs fausses avant l’utilisation de requête parametré . merci une autre fois .

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    dans
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmdz As New OleDbCommand("SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN #" & a1 & "# and #" & a2 & "#", cnz)
    On ne sait pas quelle chaine de caractères est passée à Access, puisque le cast des dates est implicite est-ce
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN #28/04/2019# and #01/05/2019#)
    comme vous le pensez ou peut-être
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN #04/28/2019# and #05/01/2019#)

    ou encore
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN #2019/04/28# and #2019/05/01#)
    ou peut-être
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM fonctionaire_ab WHERE date_ab BETWEEN #28/04/19# and #01/05/19#)
    De plus de mémoire Access convertira 28/04/2019 en date convenable (car il n'y a pas d'ambiguité le mois n° 28 n'existe pas), la bonne, mais il pourra interpréter 01/05/2019 en 1er mai ou 5 janvier.

    Avec la solution que j'ai proposé, les paramètres passées à la requête sont de type date, donc il n'y a pas de conversion implicite.
    Sauf ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a1 = remunration_s_Label.Text
    Où là en toute logique il vaudrait mieux utiliser un DateTime.TryParse en indiquant le format de la date.

    Cordialement
    Soazig

  5. #5
    Membre du Club
    Homme Profil pro
    chargé d'affaire commercial
    Inscrit en
    Mai 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : chargé d'affaire commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 45
    Points : 55
    Points
    55
    Par défaut Bien compris
    merci soazig maintenant toute est claire .

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

Discussions similaires

  1. [XL-2013] Problème dans une condition entre deux dates
    Par PIERRE-DEVIN dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/09/2017, 16h34
  2. [2008R2] Résultat entre deux dates sans utiliser la table temporaire
    Par manal_b dans le forum Développement
    Réponses: 2
    Dernier message: 14/04/2015, 16h16
  3. Problème règle de validation entre deux dates
    Par clickandgo dans le forum Modélisation
    Réponses: 1
    Dernier message: 09/06/2013, 19h38
  4. problème dans la connexion entre deux webpart
    Par Wnejla dans le forum SharePoint
    Réponses: 2
    Dernier message: 27/03/2013, 13h02
  5. Problème dans la relation entre deux slots
    Par info_sara dans le forum Débuter
    Réponses: 3
    Dernier message: 03/10/2012, 11h19

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