Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ustawienie formatu daty dla aplikacji D7 SQLEXPRESS2005

54 views
Skip to first unread message

baran_r

unread,
May 4, 2010, 5:29:00 AM5/4/10
to
Witam

Chciałbym uodpornić aplikacje na ustawienia regionalne WINDOWS.

W pliku *.dpr wpisałem :
Application.UpdateFormatSettings:=False;
DateSeparator:='-'
DecimalSeparator :=','
ShortDateFormat := 'yyyy-mm-dd';
LongTimeFormat:='hh:nn:ss';

oraz funkcje DatetoStr zmieniłem na

function Date2String(pDT: TDateTime): String;
begin
if pDT=0 then
Result:=''
else
Result:=FormatDateTime('yyyy-mm-dd',pDT);
end;

Czy powyższe działania wystarczą ?

Drugi temat to DateTimePicker - mimo powyższych ustawień w dalszym
ciągu format daty jest pobierany z WINDOWS stosowałem komponenty
TdateTimerPicker oraz JvdateTimerPicker i mimo ustawienia formatu yyyy-
mm-dd rok i dzień pokazuje dobrze natomiast miesiąc jest w
dateTimePicker 45 a w jvDatetime Picker 9.

Co należy ustawić aby data była właściwa zgodna z ustawionym
formatem ?

PaSkol

unread,
May 4, 2010, 5:51:30 AM5/4/10
to
baran_r pisze:

> Chcia�bym uodporni� aplikacje na ustawienia regionalne WINDOWS.

Hmm, s� r�ne szko�y czy nale�y tak robi�, ja nale�� do tej liberalnej.
W ko�cu skoro kto� sobie skonfigurowa� format daty tak a nie inaczej w
systemie, to widocznie chce jej tak u�ywa�. A Ty mu chcesz narzuci� sw�j
format (czyli szko�a dyktatu)?

No chyba, �e chodzi o wsp�prac� z MSSQL-em - ale tutaj wystarczy u�ywa�
parametr�w, a nie dzierganiny typu sklejanie �a�cuch�w.


--
PaSkol

baran_r

unread,
May 4, 2010, 6:25:11 AM5/4/10
to

Sam MSSQL to jedna sprawa - tutaj dat używam przy ich wprowadzeniu
przez JvDBDateEdit i przy zapytaniach tworząc raporty a daty do
raportów pobieram z dateTimePicker i tworzę następująco

Quer.close;
Query.active :=False;
Query.sql.clear;
Query.sql.add()
Quer.open;
Query.active :=True;

niektóre warunki są dość "duże" i data jest tylko jedna ze składowych
warunku

Oprócz operacji na bazie w aplikacji dokonuje obliczeń na datach,
zapisu daty do pliku tekstowego (datetostr), odczyty daty z pliku
tekstowego (StrtoDate).

Najlepiej by było aby format daty dla użytkownika aplikacji był taki
sam jak ustawiony w Windows ale nawet pomiędzy WINDOWS XP a WINDOWS 7
są różnice w formacie daty.
Więc aby zabezpieczyć aplikacje przed wysypywaniem sie z powodu
formatów dat przyjąłem koncepcje ustalenia formatu daty dla aplikacji
z nadzieja że można to globalnie i "szybko" załatwić


Arivald

unread,
May 4, 2010, 7:04:14 AM5/4/10
to
W dniu 2010-05-04 12:25, baran_r pisze:

>
> Sam MSSQL to jedna sprawa - tutaj dat używam przy ich wprowadzeniu
> przez JvDBDateEdit i przy zapytaniach tworząc raporty a daty do
> raportów pobieram z dateTimePicker i tworzę następująco
>
> Quer.close;
> Query.active :=False;

Człowiek, naucz się trochę delphi najpierw... "Quer.Close();" i
"Query.Active := False;" robią dokładnie to zamo, i nie ma sensu się
powtarzać! podobnie "Open()" i "Active := True;".

> Query.sql.clear;
> Query.sql.add()
> Quer.open;
> Query.active :=True;
>
> niektóre warunki są dość "duże" i data jest tylko jedna ze składowych
> warunku

No i co z tego?

>
> Oprócz operacji na bazie w aplikacji dokonuje obliczeń na datach,
> zapisu daty do pliku tekstowego (datetostr), odczyty daty z pliku
> tekstowego (StrtoDate).
>

Ok.

> Najlepiej by było aby format daty dla użytkownika aplikacji był taki
> sam jak ustawiony w Windows ale nawet pomiędzy WINDOWS XP a WINDOWS 7
> są różnice w formacie daty.

Tak? A jakie różnice?
Zresztą program powinien być tak napisany żeby mu to nie przeszkadzało.

> Więc aby zabezpieczyć aplikacje przed wysypywaniem sie z powodu
> formatów dat przyjąłem koncepcje ustalenia formatu daty dla aplikacji
> z nadzieja że można to globalnie i "szybko" załatwić

Trzymaj się po prostu kilku zasad:

1) Datę i czas prezentuj użytkownikowi w standardzie aktualnego systemu
(DateToStr() i podobne)

2) Od użytkownika pobieraj datę w formacie systemu. Najlepiej mieć
specjalizowane kontrolki, które automatycznie parsuję i konwertują datę
na TDateTime.

3) Do plików roboczych (tam gdzie ludzie i tak sami nie będą edytować),
które muszą być przenośne pomiędzy użytkownikami i wersjami językowymi,
zapisuj date w swoim, łatwym do sparsowanie formacie. np
YYYYMMDD[hhmmss]. Napisz dobie funkcje do konwersji do i ze stringa w
tym formacie.
Ja do tego celu napisałem sobie funkcje zgodne z normą ISO 8601.

4) do bazy danych zawsze zapisuj datę za pomocą parametru Query, np tak:

Query.Sql.Text := 'update tabela set DataZmiany=:Data';
Query.ParamByName('Data').AsDateTime := Now();
Quer.Open();

lub select:

Query.Sql.Text := 'select * from tabela where DataZmiany <= :Data';
Query.ParamByName('Data').AsDateTime := ......;
Quer.Open();


--
Arivald

baran_r

unread,
May 4, 2010, 9:17:25 AM5/4/10
to

Właśnie się ucze Delphi i jest to moja pierwsza aplikacje w D.

Więc troszke błedów popełniam a potem trzeba co nieco poprawiać.

Wolałbym w bazie nie trzymać dat jako string - troche za dużo do
przerobienia

wloochacz

unread,
May 4, 2010, 12:01:22 PM5/4/10
to
baran_r pisze:
> W�a�nie si� ucze Delphi i jest to moja pierwsza aplikacje w D.
>
> Wi�c troszke b�ed�w pope�niam a potem trzeba co nieco poprawia�.
>
> Wola�bym w bazie nie trzyma� dat jako string - troche za du�o do
> przerobienia
A kto Ci powiedzia�, �e masz w bazie dat� jak string przechowywa�?
Sam pisa�e� o plikach tekstowych i do tego (jak mniemam) odni�s� si�
Arivald...

PS.
A mnie jaki� czas temu pewien konsultant z BSC przekonywa�, �e poziom
grupy wzr�s� niepomiernie... No nie jestem przekonany... ;-)

--
wloochacz

Arivald

unread,
May 4, 2010, 12:33:17 PM5/4/10
to
W dniu 2010-05-04 15:17, baran_r pisze:
??? A kto Ci każe trzymać daty w bazie jako string????

Chodzi o to aby przekazywać daty jako parametry, a nie bezpośrednio w
SQL. Dzięki temu to sterownik bazy zajmie się niezbędnymi konwersjami.

--
Arivald

baran_r

unread,
May 4, 2010, 2:34:53 PM5/4/10
to
Przepraszam niedoładnie przeczytałem rady Arvida . Dziekuje za pomoc

PaSkol

unread,
May 5, 2010, 3:13:26 AM5/5/10
to
wloochacz pisze:

> PS.
> A mnie jaki� czas temu pewien konsultant z BSC przekonywa�, �e poziom
> grupy wzr�s� niepomiernie... No nie jestem przekonany... ;-)

Wiesz, bo wtedy to Ty monopolizowa�e� tu dyskusj�, wi�c chcia� Ci si�
podlizaďż˝ ;P.


--
PaSkol

0 new messages