DatePicker på engelsk.

Tags:    .net

Hej

Jeg har et program der lægger input fra en datepicker over i en mysql db. Problemet ligger så i at når man køre programmet på andre maskiner med dansk eller polsk windows, bliver indputtet fra datepicker på dette sprog, hvilke betyder at indputtet fra datepicker til db, bliver forkert også.

Jeg har forsøgt at låse det fast til engelsk med:

using System.Threading;
using System.Globalization;

og så:

namespace WindowsApplication1
{

public partial class Form1 : Form
{

public Form1()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

InitializeComponent();


Men min datepicker, som ligger i form1 er stadig på det forkerte sprog, samt inputtet er stadig forkert også. desuden når jeg så forsøger at hente det ud igen fra db får jeg fejl om det er i forkert format?



6 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Du skal også sætte Thread.CurrentThread.CurrentUICulture

MEN! :D Hvis du gerne vil have de skal se deres DateTime Picker i deres sprog, som jeg vil anbefale til alt, da det minsker misforståelser, så vil jeg lige spørge om.

Bruger du SQLParameters, eller sætter du datoen direkte ind i SQL'en? Hvordan ser din kode ud der sætter dataen ind i databasen, for med et Date (DateTime object i Csharp) Skulle dette aldrig blive et problem, da din DateTimePicker kun er et UI objekt, der behandler et DateTime objekt.

Så ved at lave en SQL parameter, der sender dit DateTime objekt med, så skulle den være fikset, samtigdig med at de kan få deres datetimepicker i et dato format de forstår.




Indlæg senest redigeret d. 22.03.2006 23:09 af Bruger #9703
Som Jesper siger så skal du sætte CurrentUICulture for at vise datepickeren i det korrekte sprog. For at sætte ind i databasen skal du bruge SQLParametre, så skal du bare fodre den med et DateTime objekt, så kan den selv håndtere resten, på den måde får du altid konsistente data i din database. Husk at parametre i MySQL skal prefikset med et spørgsmålstegn (?) i stedet for et aat (@) for at de vil virke (se eventuelt artikelen her på sitet omkring sql injections i C#, den forklarer noget om Parametre



mads, her er der en forklaring på hvorfor det ikke virker:
http://blogs.msdn.com/michkap/archive/2005/03/28/402839.aspx -
"The WinForms DateTimePicker and MonthCalendar do not support culture settings"

Jeg vil, som de andre siger indsætte det i databasen som et DateTime-objekt. Her er en måde man kan gøre det på:

Fold kodeboks ind/udKode 




Jeg vil fortrække at det bare står på engelsk, nu kan det så godt være jeg spør dumt men denne her "Thread.CurrentThread.CurrentUICulture" har jeg da i det overnævnte?

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
InitializeComponent();

når jeg smider dato ind i db, så bliver det bare gjort som datepicker.text = og så min tabel, som er varchar25. Jeg ved godt jeg burde nok bruge et date felt, men fortrækker denne her metode til det jeg laver lige nu.. og enlig virkede det perfekt indtil jeg fandt ud af den skrev det efter hva sprog programmet blev kørt på.



Naturligvis gør det det, du indsætter jo en string i databasen. Så forstår jeg ikke hvad du vil, hvis ikke du vil indsætte et "universalt" dato format, der ikke er afhængig af sproget brugeren kommer ind med.



Naturligvis gør det det, du indsætter jo en string i databasen. Så forstår jeg ikke hvad du vil, hvis ikke du vil indsætte et "universalt" dato format, der ikke er afhængig af sproget brugeren kommer ind med.


problemet er jo at dato formatet ikke skifter, det er stadig dansk.



t