bletec
Messages postés3Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention22 décembre 2004
-
22 déc. 2004 à 09:49
phppro
Messages postés6Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention 8 août 2008
-
8 août 2008 à 11:54
Bonjour,
J'interroge une base de données ODBC d'un logiciel de Gestion Electronique de Documents "Alchemy". Si on définit un champ de type 'Date' dans une telle base, sa valeur par défaut est 'Null' !
Dans une appli .Net, si j'interroge la base et que ma requête tente d'extraire un enregistrement dont la valeur d'un champ de type Date est 'Null', le requête s'arrête, et j'obtiens le message d'erreur suivant:
"L'argument spécifié n'était pas dans les limites de la plage des valeurs valides. Nom du paramètre : Les paramètres Year, Month et Day décrivent un DateTime qui ne peut pas être représenté."
J'ai essayé de changer des paramètres de la connection, sans succès.
Y-a-t-il un moyen d'ignorer cette erreur, afin de pouvoir remplacer
ces satanés 'Null' par une Date '0' arbitraire ?
La même requête à travers Access remplace les 'Null' pas 1er Janvier 1980 ! J'espère qu'ADO.Net peut en faire autant...
bletec
Messages postés3Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention22 décembre 2004 22 déc. 2004 à 10:57
Certes, c'est ce que j'ai fait dans un premier temps, mais on prive l'utilisateur des fonctions de recherche spécifiques aux dates: Avant le... Après le... Entre le... et le ... .
Merci quand-même ;-)
Je m'en sors avec un prétraitement systématique de la base.
Si ID est une clé unique et maDate un champ de type Date:
SELECT ID From maBase WHERE maDate<'0000-01-01'
et si cette requête sort des enregistrements:
UPDATE maBase SET maDate='1900-01-01' WHERE maDate<'0000-01-01'
Mais c'est une perte de temps que je voudrais éviter en ignorant l'erreur ADO.Net.
Je cherche à surcharger la méthode OdbcDataReader.GetDateTime pour gérer l'erreur et retourner un date par défaut. Sans succès jusqu'à présent.
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 22 déc. 2004 à 11:05
labout
Mais non cela n'empeche en rien il suffit de définir les champs
text et y mettre la date en string au format yyyymmdd ainsi toutes les fonctions de recherche sur les dates peuvent être utilisées. Il suffit ensuite de traduire par le code.
bletec
Messages postés3Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention22 décembre 2004 22 déc. 2004 à 11:42
Oui je comprends bien, MAIS j'interroge une base GED d'un logiciel appelé Alchemy qui dans son fonctionnement pour les utilisateurs est une boîte noire! Je n'ai pas la possibilité de redéfinir les recherches sur les dates pour les utilisateurs du logiciel. Moi je dois réaliser des opérations sur les bases depuis l'extérieur, par des requêtes SQL.
Le format de données Date est donc une contrainte que je ne peux contourner et je dois gérer l'abération générée par ce logiciel qui met Null au lieu d'une date arbitraire par défaut.
---
BL
Vous n’avez pas trouvé la réponse que vous recherchez ?
phppro
Messages postés6Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention 8 août 2008 8 août 2008 à 11:54
Bonjour,
je sais que cette discussion remonte à 4 ans mais google ne trouve que votre discussion avec le même message d'erreur que moi ...
base {System.ArgumentException} = {"Les paramètres Year, Month et Day décrivent un DateTime qui ne peut pas être représenté."}
Je cherche aussi un moyen de contré ce problème tout en sachant que je ne peut modifier les infos de la base càd pas d'update ni de transformation en type text ou autre....
Comment t'y es tu pris afin de surcharger cette methode ?
Merci pour vos réponses par avance, je ne trouve pas de solution depuis un mois et je déprime
phppro
Messages postés6Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention 8 août 2008 8 août 2008 à 11:54
Bonjour,
je sais que cette discussion remonte à 4 ans mais google ne trouve que votre discussion avec le même message d'erreur que moi ...
base {System.ArgumentException} = {"Les paramètres Year, Month et Day décrivent un DateTime qui ne peut pas être représenté."}
Je cherche aussi un moyen de contré ce problème tout en sachant que je ne peut modifier les infos de la base càd pas d'update ni de transformation en type text ou autre....
Comment t'y es tu pris afin de surcharger cette methode ?
Merci pour vos réponses par avance, je ne trouve pas de solution depuis un mois et je déprime