Thread View: pl.comp.lang.delphi.bazy-danych
8 messages
8 total messages
Started by silos10000@gmail
Sun, 24 Jul 2016 02:27
Format pol dla dat na potrzeby operacji arytmetycznych
Author: silos10000@gmail
Date: Sun, 24 Jul 2016 02:27
Date: Sun, 24 Jul 2016 02:27
19 lines
1010 bytes
1010 bytes
Witam Chcialem rozbudowac program wykonany w Delphi (5-7) na bazie danych Firebird 2.x (dialekt 3) o mozliwosc wyliczania stazu pracy pracownikow. W tym celu nalezy wprowadzac dla kazdego pracownika orkesy pracy we wczesniejszych zakladach pracy (nazwa zakladu pracy, data od [dd.mm.yyyy], data do [dd.mm.yyyy]). Moje pytanie dotyczy tego w jakim typie danych przechowywac daty aby potem po wczytaniu tych wartosci do odpowiednich zmiennych o odpowiednim typie wlasciwe wykonywac operacje odejmowania na tych datach w celu otrzymania ilosci lat, miesiecy i dni w danym zakladzie pracy i nastepnie zsumowania otrzymanych roznic w celu wlasciwego wykazania calkowitego stazu pracy. Czy wystarczy zastosować gotowy typ TIMESTAMP (jego czesc całkowita, bez czasu) lub DATE i potem wczytywac wartosci pod zmienne typu TDate, czy też odrzucic wbudowane typy daty i czas i operowac na zmiennych zmiennoprzecinkowych ? Za wszelka odpowiedz serdecznie dziekuje. Pozdrawiam M.K.
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: silos10000@gmail
Date: Mon, 25 Jul 2016 09:49
Date: Mon, 25 Jul 2016 09:49
11 lines
557 bytes
557 bytes
Witam i dziekuje za odpowiedz. Korzystajac z okazji chcialem jeszcze dopytac sie jak prawidlowo wyliczyc dla danego pracownika staz w kazdym zakladzie pracy w postaci lata, miesiace, dni (uwzgledniajac lata przestepne - 365 i 366 oraz rozne ilosci dni w miesiacu) oraz w jaki sposob prawidlowo te wartosci zsumowac lacznie (staz laczny) aby miec lacznie ilosc lat, miesiecy i dni przepracowanych (jak zwiekszac licznik lat oraz miesiecy jezeli przy kolejnych sumowanych pozycjach liczba miesiecy i dnie bedzie sie zmieniac). Pozdrawiam M.K.
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: wloochacz
Date: Mon, 25 Jul 2016 13:21
Date: Mon, 25 Jul 2016 13:21
9 lines
1142 bytes
1142 bytes
W dniu 2016-07-24 o 11:27, silos10000@gmail.com pisze: > Witam > > Chcialem rozbudowac program wykonany w Delphi (5-7) na bazie danych Firebird 2.x (dialekt 3) o mozliwosc wyliczania stazu pracy pracownikow. W tym celu nalezy wprowadzac dla kazdego pracownika orkesy pracy we wczesniejszych zakladach pracy (nazwa zakladu pracy, data od [dd.mm.yyyy], data do [dd.mm.yyyy]). Moje pytanie dotyczy tego w jakim typie danych przechowywac daty aby potem po wczytaniu tych wartosci do odpowiednich zmiennych o odpowiednim typie wlasciwe wykonywac operacje odejmowania na tych datach w celu otrzymania ilosci lat, miesiecy i dni w danym zakladzie pracy i nastepnie zsumowania otrzymanych roznic w celu wlasciwego wykazania calkowitego stazu pracy. Czy wystarczy zastosować gotowy typ TIMESTAMP (jego czesc całkowita, bez czasu) lub DATE i potem wczytywac wartosci pod zmienne typu TDate, czy też odrzucic wbudowane typy daty i czas i operowac na zmiennych zmiennoprzecinkowych ? Żadnych własnych wynalazków - po co?! Jeśli tylko data, to w Firebird typ DATE (TDate). Jeśli data i czas, to w Firebird typ TIMESTAMP (TDateTime). -- wloochacz
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: jh
Date: Tue, 26 Jul 2016 23:23
Date: Tue, 26 Jul 2016 23:23
9 lines
707 bytes
707 bytes
W dniu 2016-07-25 o 18:49, silos10000@gmail.com pisze: > Witam i dziekuje za odpowiedz. > > Korzystajac z okazji chcialem jeszcze dopytac sie jak prawidlowo wyliczyc dla danego pracownika staz w kazdym zakladzie pracy w postaci lata, miesiace, dni (uwzgledniajac lata przestepne - 365 i 366 oraz rozne ilosci dni w miesiacu) oraz w jaki sposob prawidlowo te wartosci zsumowac lacznie (staz laczny) aby miec lacznie ilosc lat, miesiecy i dni przepracowanych (jak zwiekszac licznik lat oraz miesiecy jezeli przy kolejnych sumowanych pozycjach liczba miesiecy i dnie bedzie sie zmieniac). http://docwiki.embarcadero.com/Libraries/Berlin/en/System.DateUtils.DaysBetween Czy w D5-7 to już było, nie wiem. jh
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: arivald
Date: Wed, 27 Jul 2016 06:21
Date: Wed, 27 Jul 2016 06:21
32 lines
1133 bytes
1133 bytes
W dniu 2016-07-26 o 23:23, jh pisze: > W dniu 2016-07-25 o 18:49, silos10000@gmail.com pisze: >> Witam i dziekuje za odpowiedz. >> >> Korzystajac z okazji chcialem jeszcze dopytac sie jak prawidlowo >> wyliczyc dla danego pracownika staz w kazdym zakladzie pracy w postaci >> lata, miesiace, dni (uwzgledniajac lata przestepne - 365 i 366 oraz >> rozne ilosci dni w miesiacu) oraz w jaki sposob prawidlowo te wartosci >> zsumowac lacznie (staz laczny) aby miec lacznie ilosc lat, miesiecy i >> dni przepracowanych (jak zwiekszac licznik lat oraz miesiecy jezeli >> przy kolejnych sumowanych pozycjach liczba miesiecy i dnie bedzie sie >> zmieniac). > > http://docwiki.embarcadero.com/Libraries/Berlin/en/System.DateUtils.DaysBetween > > > Czy w D5-7 to już było, nie wiem. > jh > Przecież TDate / TDateTime to zwykły double, reprezentujący liczbę dni od jakiegoś tam punktu. Czyli żeby obliczyć różnicę wystarczy odjąć jeden TDate od drugiego, zaokrąglając odpowiednio w przypadku TDateTime. Dni jako integer wystarczy dodawać do daty. Za to z godzinami, minutami i sekundami jest więcej zabawy. -- Arivald
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: silos10000@gmail
Date: Wed, 27 Jul 2016 08:34
Date: Wed, 27 Jul 2016 08:34
17 lines
1001 bytes
1001 bytes
Witam i dziekuje za odpowiedzi. Jezeli mam juz procedury ktore po stronie Delphi oblicza mi dla danego okresu staz w postaci lata, miesiace, dni (dla kazdego zakladu pracu osobno jak i sumarycznie ze wszystkich zakladow pracy w jakich pracowal dany pracownik) to czy prawidlowo powinienem w tabeli stazow obok pol: nazwa zakladu, data od, data do, dodac pola lata, miesiace, dni i tam wpisywac wyliczone dane (przed ostatecznym commit dla rekordu) czy tez w trakcie prezentacji danych w gridzie online wyliczac te dane jako pola calculated lub z uzyciem procedury osadzonej i funkcji dla dat (np. z WIN32_FreeAdhocUDF20101206.zip)? Jaka jest prawidlowa praktyka w takim przypadku ? Czy zapisywac od razu wyliczone dane czy w trakcie odczytu na zywo liczyc te wartosci ? W przypadku zapisywania od razu wynikow odpowiednio musze przeliczac i aktualizowac takze sumaryczny staz (lata, miesiace, dni) dla danego pracownika co moze komplikowac program. Dziekuje i pozdrawiam M.K.
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: wloochacz
Date: Wed, 27 Jul 2016 09:36
Date: Wed, 27 Jul 2016 09:36
17 lines
664 bytes
664 bytes
W dniu 2016-07-27 o 06:21, arivald pisze: /ciach/ > Przecież TDate / TDateTime to zwykły double, reprezentujący liczbę dni > od jakiegoś tam punktu. > Czyli żeby obliczyć różnicę wystarczy odjąć jeden TDate od drugiego, > zaokrąglając odpowiednio w przypadku TDateTime. > > Dni jako integer wystarczy dodawać do daty. > > Za to z godzinami, minutami i sekundami jest więcej zabawy. Jest i nie jest; jak się używa standardowych typów danych, to się ma standardowe funkcje do operowania na tych typach. Z datami jest podobnie i cały zestaw funkcji jest dostępny to po stronie bazy jak i Delphi. To nie rozumiem w czym problem? -- wloochacz
Re: Format pol dla dat na potrzeby operacji arytmetycznych
Author: arivald
Date: Wed, 27 Jul 2016 12:48
Date: Wed, 27 Jul 2016 12:48
25 lines
815 bytes
815 bytes
W dniu 2016-07-27 o 09:36, wloochacz pisze: > W dniu 2016-07-27 o 06:21, arivald pisze: > /ciach/ >> Przecież TDate / TDateTime to zwykły double, reprezentujący liczbę dni >> od jakiegoś tam punktu. >> Czyli żeby obliczyć różnicę wystarczy odjąć jeden TDate od drugiego, >> zaokrąglając odpowiednio w przypadku TDateTime. >> >> Dni jako integer wystarczy dodawać do daty. >> >> Za to z godzinami, minutami i sekundami jest więcej zabawy. > Jest i nie jest; jak się używa standardowych typów danych, to się ma > standardowe funkcje do operowania na tych typach. Z datami jest podobnie > i cały zestaw funkcji jest dostępny to po stronie bazy jak i Delphi. > > To nie rozumiem w czym problem? > Delphi (5-7) Nie pamiętam czy one miały już te funkcje. AFAIR coś biednie było. -- Arivald
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads