Insertion de date dans une base access [Résolu]

Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
- - Dernière réponse : cs_badrbadr
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
- 13 janv. 2006 à 12:20
Salut,
j'ai un formulaire en asp.net qui doit inscrire les nouveaux membres.
mon probleme est avec la base de donnée quand j'essaie d'insérer une date.
voici un extrait du code:
bithday est de type DateTime, et les autres variables sont des string

string cmdString = "INSERT INTO members ([username], [password], [e-mail], [birthday]) VALUES (@username,@password,@mail,@birthday)";

//la connection est correcte
OleDbConnection conn =
new OleDbConnection(connString);

OleDbCommand cmd =
new OleDbCommand(cmdString, conn);
cmd.Parameters.Add("@username", username);
cmd.Parameters.Add("@password", password);
cmd.Parameters.Add("@mail", email);
cmd.Parameters.Add("@birthday", birthday);

Le problème est avec la date. quand je la vire, tout marche bien
quand j'entre:
string cmdString = "INSERT INTO members ([username], [password], [e-mail], [birthday]) VALUES (@username,@password,@mail,#2006-01-02 22:45:00#)";

ca marche bien

mais quand j'essaie d'utiliser les paramètres, ca marche plus :(
j'ai essayé plein de combinaison mais ca marche pas

etk, merci d avance

p.s. le champ birthday est Date/Time dans une base Access qui n'a aucun format ni aucun Input Mask

@++
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
3
Merci
Salut,
J'avais essayé de spécifier le type de paramètres. D'ailleurs, j'ai essayé tout les combinaisons possibles
Cependant, j'ai fini par trouver la solution (ou une solution)
Quand je faisais DateTime.Now pour la date d'anniversaire, le résultat était une date avec une heure précise aux millisecondes. La base de donnée access accepte la date avec une heure qui s'arrete aux secondes (ex.: 2006-06-07 15:45:31). Il y a donc deux solutions:
1 - declarer la date soit meme : DateTime dt = new DateTime(1987,12,17,...);
2 - utiliser la fonction suivante qui rend la date "valide" pour Access


private DateTime GetFormattedDate(DateTime datetime)
{

return DateTime.Parse(datetime.ToString(), System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat);
}

J'espère que cela aidera certains.
voici l'extrait de mon code final :

string cmdString = "INSERT INTO members ([username], [password], [e-mail], [birthday]) VALUES (@username,@password,@mail,@birthday)";

//la connection est correcte
OleDbConnection conn = new OleDbConnection(connString);

OleDbCommand cmd = new OleDbCommand(cmdString, conn);
cmd.Parameters.Add("@username", username);
cmd.Parameters.Add("@password", password);
cmd.Parameters.Add("@mail", email);
cmd.Parameters.Add("@birthday", GetFormattedDate(
birthday));

@++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_badrbadr
Messages postés
1648
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
0
Merci
Salut,

essaye de préciser le format des données du parameter :

OleDbParamater parametre = new OleDbParameter("@birthday",System.Data.OleDb.OleDbDataTypes.Date);
OleDbParameter.Value = birthday;
cmd.Parameters.Add(parametre);

Il y a dans OleDbDataType tous les types qui devrait pouvoir t'intéresser : Date, DBDate, DBTime ou DBTimeSpan Personnellement je dirais Date dans ton cas, mais je ne suis pas sûr...

Nurgle
Commenter la réponse de cs_Nurgle