Gestion de date avec FormatException, SqlException non attrapée
Salut à tous,
Dans mon application je gère des dates et pour que le format de la date soit toujours bon, je me suis dis que j'allais faire confiance à FormatException et à DateTime.Parse()
Le problème est que le format de date géré par DateTime.Parse() est bizarre. La date suivante est jugée comme correct : 14.05.008 et ne renvoie donc aucune exception.
Le code C#
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
try
{
if (date.Value.Trim().Length != 0)
{
DateTime.Parse(date.Value);
}
}
catch (FormatException fe)
{
LblSqlErreur.Text = fe.Message;
boException = true;
} |
Donc je me suis dis, je vais sur SQL-Server juste pour voir si j'ai le droit à cette même bizarrerie tout droit sortie de derrière les fagots :aie: :
Code:
1 2
|
SELECT CAST('14.05.008' AS DATETIME) AS date |
Evidemment ça ne marchait et j'ai eu le droit à cette belle erreur : La conversion d'un type de données CHAR en type DATETIME a donné une valeur hors limite de date et d'heure.
Voilà comment les étapes se suivent :
Page aspx : qui a un champ de recherche sur la date, si un enregistrement existe dans la base de données correspondant au critère saisi celui-ci est affiché.
Codebehind : bloc try - catch englobant une condition qui teste que la date ne soit pas vide. On parse la date à l'aide de DateTime.Parse(), si une exception est levée on affiche le message d'erreur et on met la variable boException à true. Après le bloc try - catch une condition qui teste si boException est à true on ne peut pas poursuivre notre recherche, sinon on exécute une méthode nous renvoie une chaine de caractère à affecter au SqlDataSource qui est le suivant :
Code:
1 2
|
SqlSourceRapport.SelectCommand = myCreation.rechercheRapport(DropDownListClient.SelectedValue, DropDownListRapport.SelectedValue, date.Value, etat); |
Là, j'ai une SqlException lors du remplissage de mon GridView que je n'arrive pas à récupérer. Evidemment le message d'erreur renvoyé est le même que cité en rouge plus haut. :aie:
Quelqu'un aurait-il une idée sur la manière de procéder pour récupérer cette exception ?
Merci pour votre aide.