Un petit problème avec datetimepiker

Signaler
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013
-
 cs_TIKATKT -
salut tout le monde
j ai crèer ma base de donnée medecin ou il a une table patient qui contient les champs suivant (mle,nom,prenom,date_naiss ,poids,taille)
j ai un form pour ajouter j ajoute un patient
mon problème c est que quand je veux modifier un patient j arrive pas a afficher la date que j ai ajouter pour ce patient dans ma base de donnée il change voila mon code pour ajouter:
imports System.Data
Imports System.Data.SqlClient

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        co.Open()

        Dim cmd As New SqlCommand("insert into passion values(" & mle.Text & ",'" & nom.Text & "','" & prenom.Text & "','" & DateTimePicker1.Value & "'," & poid.Text & "," & taille.Text & ")", co)
        cmd.ExecuteNonQuery()
        MsgBox("ajoue reussi ")
        co.Close()
    End Sub
end class 

et mon code pour modifier (j utilise un combo pour afficher le patient que je veu modifier ) :
Imports System.Data
Imports System.Data.SqlClient
Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        co.Open()
        Dim cmd As New SqlCommand("update passion set nom ='" & nom.Text & "',prenom='" & prenom.Text & "',date_naiss'" & DateTimePicker1.Value & "',poid =" & poid.Text & ",taille=" & taille.Text & " where mle= " & mle.SelectedValue, co)
        cmd.ExecuteNonQuery()
        MsgBox("modification reussite ")
        co.Close()

    End Sub

    Private Sub mle_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mle.SelectedIndexChanged
        co.Open()
        Dim cmd As New SqlCommand("select * from passion where mle =" & mle.Text, co)
        Dim re As SqlDataReader

        re = cmd.ExecuteReader
        While re.Read
            nom.Text = re(1)
            prenom.Text = re(2)
            DateTimePicker1.Value = re(3)
            poid.Text = re(4)
            taille.Text = re(5)

        End While
        re.Close()
        co.Close()


    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        co.Open()
        Dim cmd As New SqlCommand("select mle from passion ", co)
        Dim re As SqlDataReader

        re = cmd.ExecuteReader()
        While re.Read

            mle.Items.Add(re(0))

        End While
        re.Close()
        co.Close()
    End Sub

donc voila j espère que quelqu'un un pourra m aider
merci d'avance et bonne journée

24 réponses

Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Salut,
il y a peut être un problème de format
de date... Et DateTimePicker1.Value renvoie
la date + l'heure, si tu veux juste la date,
il faut le préciser :
MsgBox(DateTimePicker1.Value.Date)
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

malheureusement sa marche pas
je veux importer de la base de donnée la date du patient que je choisi et quand j ecri datetimepiker1.value.date sa me dit que cette expression est une valeur et ne peut donc pas être la cible d une assignation
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

A quel endroit as tu ce message d'erreur ?
Si c'est à la ligne :
DateTimePicker1.Value = re(3)
Tu n'est pas obligé de mettre
DateTimePicker1.Value.Date = re(3)
comme le dit le message d'erreur :
DateTimePicker1.Value.Date renvoie la date sans
l'heure, qui était peut être à l'origine du bug...
Mais tu peux très bien assigner à DateTimePicker1.Value
une date qui comprends aussi l'heure.
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

en faite c est pas une erreur il le souligne et affiche le message que je t avais dit ton a une autre solution pour que j affiche la date que j ai rentrè en base de donnée ?
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Je ne connais pas trop les bases de données.
Euh le champ date_naiss est dans quel format,
date, chaine de caractères... ?
Comme je t'ai dit il y a peut être une erreur
de format date, par exemple si ton champ date_naiss
est du format 2010/11/10 il y aura une erreur de format
car en VB le format est du type 10/11/2010...
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

j ai declarè date_naiss en type date sur ma base de donnèe et comment je peux changer la format de la date pour que vb l accepte ?
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Je sais pas si on peux modifier le format
de date dans la base de données.
Mais on peux "modifier" le format de date dans VB.
Dans quel ordre dans ta base de donnée
apparaisse le jour mois et année ?
Par exemple tu peux remplacer
DateTimePicker1.Value.Date
par :
DateTimePicker1.Value.year & "-" & DateTimePicker1.Value.month & "-" & datetimePicker1.Value.Day
(sur la même ligne)
Donc cette ligne renvoie ,tu peux tester avec un MsgBox :

MsgBox(DateTimePicker1.Value.Year & "-" & DateTimePicker1.Value.Month & "-" & DateTimePicker1.Value.Day)

renvoie : 2010-11-10
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

dans ma base de donnée c est année / mois /jour c est comme sa que la date apparait
et pour ce que tu viens de me proposer sa marche pas car deja je veux affecter ce que j ai dans la case date_naiss dans datetimepiker
par exemple j affecte ce qu il a dans la case nom dans un textbox.text
et pour cela j ai utilisé sqldatareader pour apporter les information que j ai dans la case nom qui est r(1) dans ma base de donnée :
textbox.text=r(1)
et je veux faire pareil pour la date sauf que je veux l afficher dans un datetimepiker
maint je dois juste chercher a modifier la format de la date sur vb pour que sa devien année/mois/jour
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Tu peux faire ça avec Substring :
donc si la date dans la base de donnée 2010-11-10 :

Dim date_de_la_bdd As String = "2010-11-10"

Dim annee As String = date_de_la_bdd.substring(0, 4)
Dim mois As String = date_de_la_bdd.substring(5, 2)
Dim jour As String = date_de_la_bdd.substring(8, 2)

Dim ladate As New Date(annee, mois, jour)
DateTimePicker1.Value = ladate

remplacer 2010-11-10 par la date récupérée de ta bdd
Salut
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

quand je veux modifier sa me donne un message d'erreur "incorrect syntaxe near :'10/11/2010'
meme quand j enlève le code que tu ma envoyé sa donne la même erreur
alors que quand j ajoute il a aucun problème
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Je ne comprends pas,
quand tu ajoutes des informations dans la base de
données ça marche ?
incorrect syntaxe near :'10/11/2010' est le message
venant de la base de données ?
C'est peut être les / ? Car moi je t'ai donné
un exemple avec des - commes séparateurs.
Peut être que la base de données veux un format jour mois année
séparés par des /, alors essaye avec ceci :
DateTimePicker1.Value.Day & "/" & DateTimePicker1.Value.month & "/" & datetimePicker1.Value.Year
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

dans la base de donnèe il a des - et quand j ai cherchè sur vb il les separe avec des /
je ne sais pas pourquoi il ajoute la date dans la base de donnée mais elle veut pas la modifier
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Ok, tu peux me donner le code et me dire à quel ligne
il y a une erreur ?
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

PS : Le reste ça marche maintenant ?
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim cmd As New SqlCommand("update passion set nom='" & nom.Text & "',prenom='" & prenom.Text & "',date_naiss='" & Me.DateTimePicker1.Value & "',poids=" & poid.Text & ",taille=" & taille.Text & "where mle=" & Me.mle.SelectedValue, co)
        co.Open()
        cmd.ExecuteNonQuery()

        MsgBox("modification reussite ")
        co.Close()

    End Sub

voila le code maint l erreur c est incorrect syntax near'='
et il parle du = après date_naiss car quand j enlève '=' il me donne l erreur de tt ta l heure incorrect syntax near '11/10/2010'
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Essayes ceci, remplaces ta ligne :
Dim cmd As New SqlCommand("update passion set nom='" & nom.Text & "',prenom='" & prenom.Text & "',date_naiss='" & Me.DateTimePicker1.Value & "',poids=" & poid.Text & ",taille=" & taille.Text & "where mle=" & Me.mle.SelectedValue, co)
par ceci :
Dim dateformatee As String
dateformatee = DateTimePicker1.Value.Date.Year
dateformatee = dateformatee & "/"
dateformatee = dateformatee & DateTimePicker1.Value.Date.Month
dateformatee = dateformatee & "/"
dateformatee = dateformatee & DateTimePicker1.Value.Date.Day

Dim cmd As New SqlCommand("update passion set nom='" & nom.Text & "',prenom='" & prenom.Text & "',date_naiss='" & dateformatee & "',poids=" & poid.Text & ",taille=" & taille.Text & "where mle=" & Me.mle.SelectedValue, co)
Ca doit marcher si la bdd attend bien un format de type 2010/11/10
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

sa me donne toujours le meme message d erreur (incorrect syntax near '=' )
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Tu n'as pas oublié des ' dans ton code :
dateformatee & "',poids=" & poid.Text & ",taille=" & taille.Text & "where mle="
par exemple ?
Là il manque pas les ' ?
Après poids par exemple, poidsil faut pas mettre des ' apres le ?
Regardes, ici j'ai rajouté des ' :
Dim cmd As New SqlCommand("update passion set nom='" & nom.Text & "',prenom='" & prenom.Text & "',date_naiss='" & dateformatee & "',poids='" & poid.Text & "',taille='" & taille.Text & "' where mle='" & Me.mle.SelectedValue & "'", co)
Messages postés
65
Date d'inscription
dimanche 25 avril 2010
Statut
Membre
Dernière intervention
28 mars 2013

non non on ajoute pas ' que pour les chaine de caractère mais je vien d essai mais sa ne marche toujours pas
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Et le reste ça marche ? Il n'y a que ça qui pose problème ?
Tu peux donner plus d'informations sur le message d'erreur,
une capture d'écran par exemple ?
Tu as surement fait une erreur de requête SQL,
tu es sûr quel le format demandé est bien Année/Mois/Jour ?
1 2