Znów problem z datą na Vista i Windows 7

0

Cześć, mam jakiś dziwny problem z datą na tych dwóch systemach.

Na serwerze SQL format daty jest: yyyy-MM-dd
W Windows: dd-MM-yyyy

Po zaczytaniu z bazy daty do zmiennej(jako string) widnieje ona w formacie Windowsa, czyli: dd-MM-yyyy

Teraz chcąc zamienić stringa na datę, dostaję błąd konwersji. Ponadto, daty w Gridzie są pokazywane jako: dd/MM/yyyy (chociaż delimiterem w systemie jest myślnik).

Próbowałem nawet tak:

var
  d: TDate;
  s: string; //załóżmy, że tu mam datę jako string
  fs: TFormatSettings;
begin
  try
    d:=StrToDate(s);
  except
    fs.DateDelimiter:='/'; //*
    d:=StrToDate(s, fs);
  end;
end;
  • piszę z pamięci, ale wiadomo o co chodzi.

Niestety ten błąd uzyskuję cały czas. Jeśli chodzi o Windows XP to wszystko jest w porządku niezależnie od tego, jaki format wpiszę w systemie(format na serwerze jest ustawiany na sztywno).

Czytałem o tych datach, ale nic mnie nie ratuje. Więc może mi ktoś coś konstruktywnego poradzić?

0

Ja w swoich aplikacjach bazodanowych, ustawiam zmienne globalne typu DecimalSeparator i te z datami i godzinami na format bazodanowych, a potem
Application.UpdateFormatSettings := False;

0

datę przechowuje się (i operuje na niej) jako TDateTime a nie jako string!!

0
Misiekd napisał(a)

datę przechowuje się (i operuje na niej) jako TDateTime a nie jako string!!

Dokładnie.

jeśli korzystasz np. z ADO powinieneś zrobić to tak:

ADO_TABLE.FieldByName('nazwa_pola').AsDateTime
0
papudrun napisał(a)
Misiekd napisał(a)

datę przechowuje się (i operuje na niej) jako TDateTime a nie jako string!!

Dokładnie.

jeśli korzystasz np. z ADO powinieneś zrobić to tak:

ADO_TABLE.FieldByName('nazwa_pola').AsDateTime

Tak nie mogę zrobić. Pobieram Variant, ale coś z tym pokombinuję.

0

A po uzyskaniu połączenia należy wykonać set dateformat dmy
i tego formatu się trzymać przy konwersji ze stringa na datetime.
w innych przypadkach gdy w polu miesiaca bedzie wartosc wieksza niz 12 bedzie wyjatek

0
serviceapp napisał(a)

Ja w swoich aplikacjach bazodanowych, ustawiam zmienne globalne typu DecimalSeparator i te z datami i godzinami na format bazodanowych, a potem
Application.UpdateFormatSettings := False;

a moglbys podpowiedziec jak sie nazywaja te zmienne globalne od daty i czasu?

0

chwila z google i juz:

ShortTimeFormat
LongTimeFormat
ShortDateFormat
LongDateFormat

http://www.delphibasics.co.uk/ByFunction.asp?Main=DatesAndTimes

1 użytkowników online, w tym zalogowanych: 0, gości: 1