Insertion d'une date de naissance dans ma Table

Résolu
haamome Messages postés 8 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 1 novembre 2012 - 17 févr. 2012 à 08:19
haamome Messages postés 8 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 1 novembre 2012 - 17 févr. 2012 à 13:22
Bonjour à tous et à toutes,

Voilà je vous expose mon problème :

Je développe une application pour une école sous VB.Net 2008 en connexion avec une BDD qui se trouve sur le serveur (easyPHP en local pour l'instant). Quand je souhaite insérer une ligne dans ma table (etudiant), la connexion se fait mais il ne veux pas l'ajouter dans ma table. Il me dit que la syntaxe est incorrecte.

Alors voici ma requête (qui au passage n'est sur qu'une seul ligne) mais par souci de compréhension :

Dim requete_ajout As String =

"INSERT INTO etudiant VALUES (
'" & TB_Maticule.Text & "',
'" & TB_Num_Dossier.Text "',
'" & CB_Civ_E.Text & "',
'" & TB_Nom_Pat_E.Text & "',
'" & TB_Nom_Mar_E.Text & "',
'" & TB_Pre_E.Text & "',
'" & CB_Sex_E.Text & "',
" & TB_Age_E.Text & ",
#" & TB_Dat_Nai_E.Text & "#,
'" & TB_Lie_Nai_E.Text & "',
'" & TB_Nat_E.Text & "',
'" & CB_Sit_Fam_E.Text & "',
'" & TB_Adr_E.Text & "',
'" & TB_Cod_Pos_E.Text & "',
'" & TB_Vil_E.Text & "',
" & TB_Tel_Fix_E.Text & ",
" & TB_Tel_Por_E.Text & ",
'" & TB_Adr_Email_E.Text & "',
'" & CB_Cho_Fil_E.Text & "',
'" & eleve_E & "',
'" & eleve_S & "',
'" & CB_Cho_Ann_Lic_Sej_Lin_E.Text & "'
)"


Voici le code VB.net de ma connexion à la base + exécution de la requête :

Imports MySql.Data.MySqlClient
----------------------------------------------------------------
Module ModuleFonction

Public MyConnection As MySqlConnection = New MySqlConnection
Public MyCommand As MySqlCommand = New MySqlCommand
Public MyReader As MySqlDataReader
Public Choix_Action As String
Public Choix_Categorie As String
----------------------------------------------------------------
'Déclaration de la variable qui spécifie les informations de connexion à la BDD MySQL.
Dim link_BDD As String = "Server=localhost;User Id=root;Password=;Database=bdiash"
----------------------------------------------------------------

Public Sub connexion()

MyConnection.Close()
MyConnection.ConnectionString = link_BDD

Try
If MyConnection.State = ConnectionState.Closed Then
MyConnection.Open()
MsgBox("Connection à la base de donnée MySQL réussi")
Else
MyConnection.Close()
MsgBox("Connection est fermé.")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub

----------------------------------------------------------------
'Procédure exécution de la requête d'ajout
Public Sub ajout(ByVal requete As String)

'Procédure exécution de la requête d'ajout
MyConnection.Close()
MyConnection.ConnectionString = link_BDD
MyConnection.Open()

MyCommand = MyConnection.CreateCommand
Mycommand.CommandText = requete
MyCommand.ExecuteNonQuery()

MsgBox("La ligne a été ajouté")
MyConnection.Close()

End Sub

End Module



Alors pour ma BDD tout mes champs son en Varchar (sauf TB_Age_E.Text qui est au format int, TB_Dat_Nai_E.Text qui est au format DATE, TB_Tel_Fix_E.Text et TB_Tel_Por_E.Text qui sont au format int)

Quand je change le type date_naissance en varchar (dans ma BDD) et que je met les '' dans ma valeur, la requête s’exécute et la ligne est ajouté. Mais quand je remets date_naissance en type DATE et que je met les ## il ne veut plus. Même si je tente d'insérer dans les formats :

JJ/MM/AAAA
JJ-MM-AAAA
AAAA/MM/JJ
AAAA-MM-JJ

Il me répond toujours syntaxe incorrecte

Que faire

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 févr. 2012 à 09:43
...
une date est un numérique

le JJ-MM-AAAA n'est que TA vision de chose, en tant qu'humain

tu dois transmettre :
AAAA-MM-JJ

de manière a lever toute ambiguité.


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Tenshikris Messages postés 11 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 17 février 2012 1
17 févr. 2012 à 09:43
Bonjour ,

Je te conseille de récupérer les jours mois année séparément (à l'aide d'une liste déroulante par exemple pour éviter les problèmes) et ensuite tu concatènes dans le format que tu veux.

Essaye de formater ta date avant de l'envoyer dans ta requête.
Pour être que sur ta date soit au bon format dans ta BDD, passe par les fonction (Pour mysql : str-to-date http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date)
3
haamome Messages postés 8 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 1 novembre 2012
17 févr. 2012 à 08:38
Par un mystérieux hasard j'ai réussi à insérer ma ligne en mettant date_naissance en type DATE et en mettant des '' à la place des ##

Le problème qui se pose maintenant c'est le format :

Comment passer de AAAA-MM-JJ à JJ-MM-AAAA car :

- Si je saisie la date 2012-10-10 |-- il m'affiche --> 2012-10-10 dans ma BDD

- Alors que si je saisie la date 10-10-2012 |-- il m'affiche --> 0000-00-00 dans ma BDD

Je vais faire quelques recherches si quelqu'un à une solution je suis preneurs.
0
haamome Messages postés 8 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 1 novembre 2012
17 févr. 2012 à 13:22
Qui est ce qui à réussi ? hein ? Oui monsieur Oui monsieur

Super ça fonctionne nikel ! Merci à vous
0
Rejoignez-nous