Marek Murawski

Marek Murawski Dyrektor Produkcji,
TS PCB
Techno-Service S.A.

Temat: Przesuwanie daty z godziną o godziny „robocze”

Witam,

W bazie mam zapisaną datę i godzinę przyjęcia zamówienia. Powiedzmy, że jest to mój czas początkowy.
Mam tez zdefiniowaną ilość godzin (różną dla różnych produktów; np.: 4, 6, 10, 12), o którą muszę przesunąć czas początkowy.
Problem w tym, że są to godziny robocze (od 8 do 16) w dniach roboczych (od poniedziałku do piątku).

Np.:
Czas początkowy: 2013-02-22 14:30:00 (piątek)
Ilość godzin o która muszę przesunąć czas początkowy: 10
W wyniku przesunięcia powinienem otrzymać: 2013-02-26 08:30:00
(1,5 godziny z 22.02 + 8 godzin z 25.02 + 0,5 godziny z 26.02)

Czy w CR8.5 jest możliwość zdefiniowania funkcji, która zrealizuje powyższe przesunięcie?

konto usunięte

Temat: Przesuwanie daty z godziną o godziny „robocze”

http://crystaltricks.com/wordpress/?p=153

DateAddFunction (?)
Piotr Dryńkowski

Piotr Dryńkowski Specjalista ds.
Systemów ERP,
Crystal Reports,
PL/SQL

Temat: Przesuwanie daty z godziną o godziny „robocze”

Funkcja DateAdd w połączeniu z funkcją DateDiff (sposób użycia pod tym linkiem http://www.goldenline.pl/forum/180147/formuly-w-crysta... powinny rozwiązać twój problem.Piotr Dryńkowski edytował(a) ten post dnia 24.02.13 o godzinie 09:38
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Przesuwanie daty z godziną o godziny „robocze”

CR nie posiada gotowej funkcji, która przesuwa datę z uwzględnieniem godzin roboczych.
Trzeba trochę samemu pogłówkować i napisać własną funkcję.

Przyda się pewnie funkcja DateAdd z parametrem h.
Proponuję również zwrócić uwagę na funkcję TimeSerial.

Jeśli sobie nie poradzisz to daj znać, to wspólnie na forum napiszemy funkcję ;-)

Powodzenia!
Marek Murawski

Marek Murawski Dyrektor Produkcji,
TS PCB
Techno-Service S.A.

Temat: Przesuwanie daty z godziną o godziny „robocze”

Witam,

Dziękuję wszystkim za pomoc.

Skorzystałem z gotowych propozycji ze strony: http://www.kenhamady.com/form13.shtml
Z początku nie chciało działać, ale po małych korektach wydaje się, że wszystko jest ok.

Dni robocze obliczam przy pomocy formuły {@Business Days Formula}:

//Set the values of Start Date and End Date
DateVar StartDate := {StartDate});
DateVar EndDate := {EndDate};
//Find out the difference in days and subtract the weekends
NumberVar DaysDiff := DateDiff("d",StartDate,EndDate) -
DateDiff("ww",StartDate,EndDate,crsaturday) -
DateDiff("ww",StartDate,EndDate,crsunday);
//Create an array of Holiday dates
Local DateVar Array Holidays := MakeArray(
Date(2013,01,01));
//Loop through the array checking if each holiday is within the dates
Numbervar Counter := 0;
While UBound(Holidays) <> Counter do
(Counter := Counter + 1;
if Not(dayofweek(Holidays[Counter]) in [1,7]) and
Holidays[Counter] in StartDate to EndDate then DaysDiff := DaysDiff -1;);
//Display result to 0 decimal places and no thousand separator
totext(DaysDiff,0,"");

Godziny robocze obliczam przy pomocy:

NumberVar Days := {@Business Days Formula}; //wynik powyższych obliczeń
TimeVar SetStart := TimeValue( "8:00"); // The start your work day
TimeVar SetEnd := TimeValue("16:00"); // The end your work day
TimeVar StartTime := TimeValue({StartDate });// The data field that holds your Start Time
TimeVar EndTime := TimeValue({EndDate}); // The data field that holds your End Time
(Days * ((SetEnd - SetStart) / 3600))+
((EndTime - SetStart) / 3600)
- ((StartTime - SetStart) / 3600)
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Przesuwanie daty z godziną o godziny „robocze”

Twoja formuła celowo nie uwzględnia świąt?
Marek Murawski

Marek Murawski Dyrektor Produkcji,
TS PCB
Techno-Service S.A.

Temat: Przesuwanie daty z godziną o godziny „robocze”

Terminy świąt można dopisać (Create an array of Holiday dates). W niektóre święta pracujemy więc dla nas są to dni robocze.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Przesuwanie daty z godziną o godziny „robocze”

OK, bo robiłem kiedyś raportu czasu pracy, który musiał uwzględniać święta, w tym te ruchome :)
Dałem radę :)

Następna dyskusja:

Inny format daty i godziny ...




Wyślij zaproszenie do