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 :

DateTimePicker en Date Time


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut DateTimePicker en Date Time
    Bonjour a tous,

    Alors voila je développe une application un peu comme un moteur de recherche qui met les informations dans un datagridview.
    Dans ce moteur de recherche je vais chercher des informations entre 2 dates que je sélectionne grâce a DateTimePicker.
    Mon problème est qu'il faudrait que je convertisse le DateTimepicker en DateTime pour que ma base "comprenne" ce que je veux faire

    Voila les 2 DateTimePicker passer en paramètre parmi d'autres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myCommand.Parameters.Add("@DATEBEGIN", SqlDbType.DateTime).Value = UserControl_Date1.DateTimePicker_BeginSearch
            myCommand.Parameters.Add("@DATEEND", SqlDbType.DateTime).Value = UserControl_Date1.DateTimePicker_EndSearch
    Ici ca me mettait une erreur de convertion j'ai donc rajouté "value"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myCommand.Parameters.Add("@DATEBEGIN", SqlDbType.DateTime).Value = UserControl_Date1.DateTimePicker_BeginSearch.value
            myCommand.Parameters.Add("@DATEEND", SqlDbType.DateTime).Value = UserControl_Date1.DateTimePicker_EndSearch.value
    Et la au moment de lire ma procedure j'ai l'erreur

    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
       myReader = myCommand.ExecuteReader()
            Do While myReader.Read() 'Conversion failed when converting datetime from character string.
     
                DataGridView_Log.Rows.Add()
     
                DataGridView_Log(0, X).Value = myReader.GetValue(0)
                DataGridView_Log(1, X).Value = myReader.GetValue(1)
                DataGridView_Log(2, X).Value = myReader.GetValue(2)
                DataGridView_Log(3, X).Value = myReader.GetValue(3)
                DataGridView_Log(4, X).Value = myReader.GetValue(4)
                DataGridView_Log(5, X).Value = myReader.GetValue(5)
                DataGridView_Log(6, X).Value = myReader.GetValue(6)
     
                X = X + 1
            Loop
     
            myReader.Close()
            Connect.Close()
    Voila ma procedure stocké
    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
    26
     
    ALTER  PROCEDURE [dbo].[PS_LOG_Viewer] (
    	@APPLICATION NVARCHAR(MAX),
    	@AREA NVARCHAR(MAX),
    	@ACTION NVARCHAR(MAX),
    	@SUBACTION NVARCHAR(MAX),
    	@USERID UNIQUEIDENTIFIER,
    	@SESSIONID UNIQUEIDENTIFIER,
    	@DATEBEGIN DATETIME,
    	@DATEEND DATETIME)
    AS
     
    SELECT  RAP.[APPLICATION],RA.[AREA], RAC.[ACTION], RS.[SUBACTION], AL.[USERID], AL.[SESSIONID],AL.[ACTIONLOG_TIMESTAMP]
    FROM T_ACTION_LOG AL
    JOIN [T_REF_AREA] RA ON RA.AREAID = AL.[AREAID]
    JOIN [T_REF_ACTION] RAC ON RAC.ACTIONID = AL.[ACTIONID]
    JOIN [T_REF_SUBACTION] RS ON RS.SUBACTIONID = AL.[SUBACTIONID]
    JOIN [T_REF_APPLICATION] RAP ON RAP.APPLICATIONID = AL.[APPLICATIONID]
    WHERE ([AREA] LIKE '%' + @AREA + '%' OR @AREA IS NULL)
    AND ([ACTION] LIKE '%' + @ACTION + '%' OR @ACTION IS NULL)
    AND ([SUBACTION] LIKE '%' + @SUBACTION + '%' OR @SUBACTION IS NULL)
    AND ([APPLICATION] LIKE '%' + @APPLICATION + '%' OR @APPLICATION IS NULL)
    AND ([USERID] LIKE CAST(@USERID AS NVARCHAR(50)) OR @USERID IS NULL)
    AND ([SESSIONID]LIKE CAST(@SESSIONID AS NVARCHAR(50)) OR @SESSIONID IS NULL)
    AND ([ACTIONLOG_TIMESTAMP] BETWEEN  '%' + @DATEBEGIN + '%' AND '%' + @DATEEND + '%')
    ORDER BY AL.ACTIONLOG_TIMESTAMP DESC
    J'ai cherché sur msdn ainsi que sur le forum et je n'ai rien trouvé semblable a ce que je souhaite faire

    Cordialement

    Carmel_O

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND ([ACTIONLOG_TIMESTAMP] BETWEEN  '%' + @DATEBEGIN + '%' AND '%' + @DATEEND + '%')
    Les pourcentages ne fonctionnent pas pour les dates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND ([ACTIONLOG_TIMESTAMP] BETWEEN @DATEBEGIN AND @DATEEND)
    Je pense que l'erreur vient du fait qu'il essaye de convertir '%12/03/2009 12:53%' en date.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut
    Merci de ta réponse,

    J'avais effectivement ce code ci mais lorsque je le met mon reader est égal a rien, il ne lit rien et donc j'en suis au meme point.
    Je pense qu'il ne lit rien car la date n'est pas bien converti mais je ne voi pas comment faire...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut
    ACTIONLOG_TIMESTAMP est de quel type et sur quel format ?

    et quand tu remplaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCommand.Parameters.Add("@DATEBEGIN", SqlDbType.DateTime).Value = UserControl_Date1.DateTimePicker_BeginSearch.value
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DateTime dateDEBUT  = UserControl_Date1.DateTimePicker_BeginSearch.value
     
    myCommand.Parameters.Add("@DATEBEGIN", SqlDbType.DateTime).Value = dateDEBUT
    en mettant un point d'arret, tu as quoi dans dateDEBUT ?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut
    ACTIONLOG_TIMESTAMP est de type DateTime dans ma base format jj/mm/aaaa hh:min:sec

    Ta méthode fonctionne dans le sens ou ca ne met pas d'erreur ca donne la meme chose que ce que j'avais mis lorsque je mets un point d'arret j'ai bien la date demander mais toujours rien dans mon reader peut etre que ca vient de quelque chose d'autre

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut
    si ton reader est vide c'est que ta procédure ne trouve rien

    simplifie ta procédure et retourne par exemple tous les enregistrement pour une date donnée

    select * from

    where [ACTIONLOG_TIMESTAMP] BETWEEN @DATEBEGIN AND @DATEEND

    ORDER BY AL.ACTIONLOG_TIMESTAMP DESC

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

Discussions similaires

  1. Controle Date Time Picker en mode 24h
    Par MarieMtl dans le forum MFC
    Réponses: 1
    Dernier message: 24/11/2005, 16h38
  2. ERROR: date/time
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/08/2005, 10h15
  3. Date time picker
    Par Steph4 dans le forum MFC
    Réponses: 3
    Dernier message: 01/03/2005, 14h30
  4. comparer des champs date time
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/01/2005, 14h02
  5. [DATE][TIME] Manque 1 heure
    Par cpr0 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 01/07/2004, 16h43

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