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 :

vb.net 2010 + access => requête sur champ date/time


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut vb.net 2010 + access => requête sur champ date/time
    Bonjour,

    Pour les besoin de mon application, j'ai besoin de faire une requête sur un champ date/time en access.

    Dans ma base de donnée, j'ai divers champs dont celui de type date/time avec des données de ce type de structure : 27/03/2012 16:00:38

    Dans mon application, j'ai un contrôle "DateTimePicker".

    Je voudrais faire un SELECT dans ma base de donnée et ne sélectionner que les enregistrements correspondant à la date choisie dans mon DateTimePicker.

    Plusieurs difficultés :

    - Récupérer un format pour la date du DateTimePicker compatible avec le champ de type date/time de ma BD.

    - Comment écrire ma requête SQL pour faire mon SELECT ? (a priori, format américain au niveau mois et jours, etc ...) Donc, choisir dans un champ qui contient la date et l'heure uniquement la partie date qui correspondrait à celle choisie dans mon DateTimePicker.

    J'ai déjà regardé pas mal de doc, aide au niveau des dates mais je ne suis arrivé à rien

    Je sollicite donc votre aide pour une solution ou une piste de réflexion

    (ps : il y aurait un moyen vraiment moche du style scinder la date en 3 champs jj mm aaaa distinct dans la BD mais c'est pas vraiment jolis comme solution :p)

  2. #2
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Salut,
    Quel est ton code, et quelle est le format de la date dans ta bdd?
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par hugoclo Voir le message
    Salut,
    Quel est ton code?
    Et bien, comme j'ai essayé diverses choses, le dernier bout de code qu'il me reste est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "date([daterequete]) = #" + DateTimePicker1.Value.ToShortDateString + "#"
    le champ dans ma BD est daterequete et le petit bout de code ci-dessus correspond à la condition dans ma requête SQL.

  4. #4
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsql = "SELECT * FROM ta_table WHERE champs_date =#" & DateTimePicker1.Value.ToString("dd/mm/yyyy") & "#"
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par hugoclo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsql = "SELECT * FROM ta_table WHERE champs_date =#" & DateTimePicker1.Value.ToString("dd/mm/yyyy") & "#"
    merci mais erreur en exécution :

    Erreur de syntaxe dans la date dans l'expression 'daterequete = #27/52/2012#'.
    Ce qui est marrant c'est que dans le DateTimePicker1 j'ai sélectionné : 27/03/2012 donc 03 est devenus 52

  6. #6
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsql = "SELECT * FROM ta_table WHERE champs_date =#" & DateTimePicker1.Value.ToString("dd/MM/yyyy") & "#"
    En fait "mm" c'est pour minute et "MM" pour le mois
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par hugoclo Voir le message
    essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsql = "SELECT * FROM ta_table WHERE champs_date =#" & DateTimePicker1.Value.ToString("dd/MM/yyyy") & "#"
    En fait "mm" c'est pour minute et "MM" pour le mois
    Oui, je viens de voir en fouillant sur le net

    J'ai essayé avec MM, pas d'erreurs mais mon datagridview1 est alors vide
    (or je suis certain qu'il y a des enregistrements correspondant au 27 mars)

    J'en arrive au même stade que dans mes précédents essais

  8. #8
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    On ne met pas de date ni aucun parametre en dur dans une requete SQL.
    On utilise les requêtes paramétrée. Ca évite les problèmes de formatage de date par exemple.
    http://webman.developpez.com/article...ameter/csharp/

  9. #9
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Sous quelles forme sont les dates dans ta bdd
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    format : Date, général
    exemple de donnée : 27/03/2012 16:00:38

  11. #11
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Il te faud changer le format en jj/mm/yyyy sans les heures dans ta bdd.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par hugoclo Voir le message
    Il te faud changer le format en jj/mm/yyyy sans les heures dans ta bdd.
    changé en format : date, abrégé

    et pas mieux

    De plus, j'ai tout de même besoin de conserver l'heure car c'est une table de log et l'heure est importante bien que l'on ne filtre pas sur l'heure...

    et pour meziantou, le code illustré est pour sqlserveur et je suis en access :/

  13. #13
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Ca marche aussi avec Access
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim conn As New System.Data.OleDb.OleDbConnection(connStr)
    conn.Open()
    Dim sql As String = "SELECT * FROM ta_table WHERE champs_date=@date"
    Dim comm As New System.Data.OleDb.OleDbCommand(sql, conn)
    comm.Parameters.AddWithValue("@data", tadate)
    Dim reader As System.Data.OleDb.OleDbDataReader = comm.ExecuteReader()
     
    ...
     
    conn.Close()

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Bon bin, j'ai essayé avec les paramètres et pas mieux

    j'ai ensuite légèrement modifié pour avoir un code qui ressemble à la source que tu renseigne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim sql As String = "SELECT * FROM log WHERE daterequete = @datereq"
            Dim comm As New System.Data.OleDb.OleDbCommand(sql, conn)
            comm.Parameters.Add("@datereq", OleDbType.Date)
            comm.Parameters("@datereq").Value = DateTimePicker1.Value.ToString("dd/MM/yyyy")
    et rien non plus :s

    Quelle crasse ces foutues date !

  15. #15
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim sql As String = "SELECT * FROM log WHERE daterequete = @datereq"
            Dim comm As New System.Data.OleDb.OleDbCommand(sql, conn)
            comm.Parameters.Add("@datereq", OleDbType.Date)
            comm.Parameters("@datereq").Value = DateTimePicker1.Value ' type datetime

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    pas mieux non plus.

    Ne pas oublier que dans ma base de donnée j'ai la date et l'heure mais que pour ma requête je ne veux faire mon select que sur la date mais sans pour autant perdre l'info de l'heure.

    Compliqué tout ça :s

  17. #17
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Si j'ai bien compris dans ta base tu as daterequete = 21/12/2012 12:42:00
    et l'utilisateur cherche seulement avec la date 21/12/2012.
    Tu peux faire un between la date sélectionnée et la date sélectionnée plus 1 jour.

  18. #18
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Dim ma_date As Date
            Dim ma_date1 As Date
            Dim sql As String
            ma_date = DateTimePicker1.Value.ToString("dd/MM/yyyy")
            ma_date1 = DateAdd("d", 1, ma_date)
     sql = "SELECT * From log WHERE daterequete between CDate("" " & ma_date & " "")  And Cdate("" " & ma_date1 & " "")"
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par hugoclo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Dim ma_date As Date
            Dim ma_date1 As Date
            Dim sql As String
            ma_date = DateTimePicker1.Value.ToString("dd/MM/yyyy")
            ma_date1 = DateAdd("d", 1, ma_date)
     sql = "SELECT * From log WHERE daterequete between CDate("" " & ma_date & " "")  And Cdate("" " & ma_date1 & " "")"
    Youhouuuuuuuuuuuuuuuuuuuuuu

    Tip top nickel ! Le résultat est exactement celui souhaité ! Merci à toi et meziantou !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2013, 12h38
  2. Requête sur champ date + champ durée
    Par GodHunter74 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/10/2011, 20h40
  3. [Access 2003] Tri sur champ vide
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/11/2006, 12h07
  4. Date/Heure Requête sur champ vide
    Par Polo_973 dans le forum Access
    Réponses: 3
    Dernier message: 19/04/2006, 21h19
  5. Requête sur champ DATE
    Par bud_gw dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/12/2005, 13h18

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