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 :

Requête SQL - Remplissage datagridView - Intervalle entre deux dates


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut Requête SQL - Remplissage datagridView - Intervalle entre deux dates
    Bonjour,

    Je vous explique le contexte : J'ai une base de donnée, tournant sur SQL Server, lui même tournant sur windows server. J'ai une machine distante sur lequel je programme sur Visual Studio 2010 en VB.NET.

    Je souhaite récupérer des données SQL pour les mettre dans un datagridview. Tout fonctionne, sauf les contions concernant les dates. Celà fait deux jours que je cherche, de forum en forum, en testant chaques propositions. Sans résultat.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dateD = Format(Me.DateTimePicker1.Text, "mm/dd/yyyy")
    dateFin = Format(Me.DateTimePicker2.Text, "mm/dd/yyyy")
    Dim cmd As SqlCommand = connexion.CreateCommand()
    cmd.CommandText = "SELECT COUNT(*) FROM maTable AS Surnom WHERE UneCondition LIKE '%" & UneVariable & "%' AND Date BETWEEN #" & dateD & "# AND #" & dateFin & "#"
    connexion.Open()
    ligne = cmd.ExecuteScalar()
    connexion.Close()
    *Ceci n'est pas l'ensemble du code mais les parties qui posent problème*

    Testes effectués:
    * Mettre les dates en format date
    * Différents type de formatage des dates ( dated = String.format( ...))
    * Différents format de date ( mm/dd/yyyy et d'autres)
    * enlever le between et mettre des >= et <=

    Messages d'erreurs recontrés :
    * Erreur près du charactère '#' (le dernier)
    * Affichage d'une ligne vide
    * Convertion d'un format date à un format string impossible (le plus récurent)

    Désolé de pas pouvoir relier l'erreur au teste mais j'ai fait telment de testes que je ne m'en souvient plus.

    Merci d'avance pour toute proposition

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Utilisez une requête paramétrée. Cela devrait mieux se passer.

    http://faqvbnet.developpez.com/?page...onet_execparam

  3. #3
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Utilise les requêtes paramétrées.
    http://webman.developpez.com/article...rameter/vbnet/

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut
    J'essaye tout de suite, je vous tiens au courant.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut
    J'avais déjà vu son utilisation mais je vous avouerais ne pas trop avoir compris comment l'utiliser pour une date.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cmd.CommandText = "SELECT COUNT(*) FROM MaTable AS result WHERE UnChamp LIKE '%" & UneVariable & "%' AND Date BETWEEN #@dateD# AND #@dateFin#"
    cmd.Parameters.Add(New SqlParameter("@dateD", SqlDbType.Date))
    cmd.Parameters("@dateD").Value = dateD
    cmd.Parameters.Add(New SqlParameter("@dateFin", SqlDbType.Date))
    cmd.Parameters("@dateFin").Value = dateFin
    Mon erreur :
    Failed to convert parameter value from a String to a DateTime.
    Mon champ contenant la date dans ma base est de type Date, dois-je le passer en varchar ou text?

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Essayez en enlevant les dièses (#) de votre requête.

    Griftou.

    EDIT : Vous pouvez aussi initialisez vos dates de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim dateD as DateTime = datetimepicker1.value
    Dim dateFin as DateTime = datetimepicker2.value
    Notez également qu'il serait préférable de donner un "vrai" nom à vos contrôles de manière à rendre votre code plus compréhensible.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut
    Je n'ai plus d'erreur mais l'intervalle à l'affichage n'est pas respecté.

    J'ai déclaré mes deux variables comme indiqué et ai enlevé les '#'

    ps : Je prend note de ta remarque de changer les noms

  8. #8
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    msdn

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

Discussions similaires

  1. [SQL] Nombre de jours entre deux dates
    Par azeggouar dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/08/2009, 16h07
  2. [SQL] difference en annee entre deux dates
    Par tatayoyo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/02/2008, 16h47
  3. Intervale entre deux dates
    Par ecirb dans le forum Collection et Stream
    Réponses: 20
    Dernier message: 26/03/2007, 09h21
  4. Intervalle entre deux dates
    Par ecirb dans le forum InfoPath
    Réponses: 15
    Dernier message: 22/03/2007, 10h39
  5. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50

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