IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Pb Format DateTime


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut Pb Format DateTime
    Bonjour,

    J'ai fait le développement d'une application multi-culture(multi langue) et donc les formats des données change automatiquement selon la culture de l'utilisateur (FR ou EN). Le problème lors de la mise à jour de la base des données. En effet,la base n'accepte pas tous les formats et on ne peut pas changer le format au niveau de code car ils sont liés à la culture d'utilisateur.

    quelqu'un a rencontré ce type de problème ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    J'aurais tendance à dire cela :

    1 ; La base de données stocke les données dans un format INDEPENDANT de la culture utilisé. Il faut donc définir quel est le format à utiliser

    2 : Tu dois avoir un module de "conversion".... de telle sorte que la représentation des données soient différentes mais que la donnée elle, ne le soit pas...
    en clair, après une saisie par l'utilisateur, la saisie doit être "traduite" dans le format de la base de donnée ...

    Ton problème est un classique des formats dit PIVOT...

    The Monz, Toulouse

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Un dateTime n'a pas de format. Les chaînes en ont. D'où viennent les DateTime de ton appli ? S'ils viennent de TextBox dont tu as changé la string "Text" en DateTime via Convert.ToDateTime ou DateTime.Parse, il faut que tu rajoutes en paramètre à ces fonction la culture qui va bien.

  4. #4
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    Le problème comment fournir à la base une bonne format des données sans toucher à la culture d'utilisateur ?

  5. #5
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Un dateTime n'a pas de format. Les chaînes en ont. D'où viennent les DateTime de ton appli ? S'ils viennent de TextBox dont tu as changé la string "Text" en DateTime via Convert.ToDateTime ou DateTime.Parse, il faut que tu rajoutes en paramètre à ces fonction la culture qui va bien.
    J'ai fourni à la procédure comme paramèetre un objet de Type DateTime et non pas une chaine. et donc la format est spécifiée par la culture.

  6. #6
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par layouni Voir le message
    J'ai fourni à la procédure comme paramèetre un objet de Type DateTime et non pas une chaine. et donc la format est spécifiée par la culture.
    Peux-tu montrer le code que tu utilises pour passer ton DateTime en paramètre de la proc stock ? Parce que je répète : les DateTime n'ont pas de format

  7. #7
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Peux-tu montrer le code que tu utilises pour passer ton DateTime en paramètre de la proc stock ? Parce que je répète : les DateTime n'ont pas de format
    Voila un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand("ClientUpdate");
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("DATMOD", DateTime.Now); 
    ......

  8. #8
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Peux-tu montrer le code que tu utilises pour passer ton DateTime en paramètre de la proc stock ? Parce que je répète : les DateTime n'ont pas de format

    La dateTime possede une valeur, tu peux vérifier ca en changeant la culture de l'application. Faites espionner la valeur de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat

  9. #9
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Oui, mais ce que les espions montrent sont forcément des chaînes de caractères ; c'est juste que les espions affichent tonDateTime.ToString(taCultureCourrante).

    Tu vois ce que je veux dire ? Les formats ne servent qu'à parser et formatter les types. Que ta machin soit fr ou us, le double 1.2, c'est 1.2. Pareil pour les dates.

    Quelle est la nature de l'erreur de base que tu rencontres ? Et comment est configurée ta base, relativement aux dates ?

  10. #10
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    il affiche message d'erreur suivant : ORA-01843: ce n'est pas un mois valide
    vu que la base stocke le date sous fourme dd/MM/yyyy et l'application utilise la format : MM/dd/yyyy

  11. #11
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Quel est le type du paramètre DATMOD de ta proc ? c'est bien une date ?

  12. #12
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    le même type que le champ DATMOD,c-a-d DATE

  13. #13
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Tu utilises ODP, non ? Il y a ça dans la doc ODP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Set the nls_date_format for the ToString()
    OracleGlobalization og = OracleGlobalization.GetClientInfo();
    og.DateFormat = "DD-MON-YYYY BC";
    OracleGlobalization.SetThreadInfo(og);
    Même pour oracle, les notions de format ont l'air de se limiter aux chaînes.

    Question bête : tu as une seule BDD oracle et tout le monde est connecté dessus ?

  14. #14
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut
    Oui, j'ai une seule BDD oracle et tout le monde est connecté dessus.

  15. #15
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Beh je sèche L'info doit transiter sous forme de caîne quelque part, et c'est là que doit être ton souci, mais où...

    Pourtant je bosse aussi sur Oracle avec ODP, avec un poste de développement en culture FR et des utilisateurs US, et mes applis marchent aussi bien en dév qu'en prod.

  16. #16
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Bon, je suis un peu comme Guulh, je suis a fond sur de l'oracle + dotnet...et pas de pb identique au tien...

    Est-ce que tu peux essayer un test a 2frcs50, genre, faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters.Add( "DATMOD", OracleDbType.Date).Value=DateTime.Now;
    ???

    test a la noix numero 2, si le 1 marche pas, si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters.Add( "DATMOD", OracleDbType.Date).Value=DateTime.Now - 1;
    Est ce que dans la base, tu as bien le 8 decembre pour DATMOD ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. Soustraire 2 heures d'un format datetime ?
    Par innova dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2007, 14h29
  2. [MySQL] comment rechercher une date au format datetime avec une date au format date
    Par Menoly dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/06/2007, 10h14
  3. DTS importation de données texte - probleme format datetime
    Par kungouf dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/10/2006, 17h00
  4. [Oracle] Retour de date complète (format DATETIME)
    Par AntaresJon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/04/2006, 17h57
  5. pb format datetime avec mysql
    Par ms91fr dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/12/2004, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo