Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

popunjavanje datuma do na osnovu broja dana i datuma od

[es] :: Access :: popunjavanje datuma do na osnovu broja dana i datuma od

Strane: 1 2

[ Pregleda: 4550 | Odgovora: 29 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od13.09.2018. u 08:44 - pre 67 meseci
@miki2013
F-ja pozdrava i jednu i drugu varijantu. Po potrebi se poziva varijanta koja se hoce.
U MS Access je dato samo kako se koristi (oba primera).
Checkbox i ostalo sto sam dodao bi trebalo da se ukloni.

Pitanje: Ako je kraj g/o vikend, da li rezultat treba da bude (dan pre) petak ili (dan posle) ponedeljak?


 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od13.09.2018. u 09:56 - pre 67 meseci
Uz kafu, odradjena podrska za sve 3 varijante, pre i posle vikend dana, i kada se zavrsava odmor.

Dodata je dodatna ulazna vrednost u f-ji koja odredjuje gore navedeno.

Ima smisla samo kada je ulazna vrednost za 'VratiPrviRadniDan' = False

Vrednosti za trecu promenljivu u f-ji 'KrajOdmoraDaniVikenda'
' 0 - pre vikenda
' 1 - posle vikenda
' 2 - tacan dan

Evo preradjene f-je i rezultati u nastavku.
U prilogu je MS Access file.
Sto se tice MS Access treba privesti nameni i potrebi.


Code:


Public Function ObracunajKrajOdmora(ByVal PocetakOdmora As String, ByVal BrojDanaOdmora As Integer, Optional ByVal VratiPrviRadniDan As Boolean = False, Optional ByVal KrajOdmoraDaniVikenda As Integer = 0) As String

    ' KrajOdmoraDaniVikenda
    ' 0 - pre vikenda
    ' 1 - posle vikenda
    ' 2 - tacan dan

    Dim BrojRadnihDanaUNedelji As Integer
    Dim BrojNedelja As Integer
    Dim UkupanBrojDanaOdmora As Integer
    Dim Ostatak As Integer
    Dim r As String
    
    ' Broj radnih dana u nedelji Pon - Pet - 5
    BrojRadnihDanaUNedelji = 5
    
    UkupanBrojDanaOdmora = BrojDanaOdmora
    
    If BrojDanaOdmora > BrojRadnihDanaUNedelji Then
    
        UkupanBrojDanaOdmora = 0
    
        ' Broj nedelja
        BrojNedelja = BrojDanaOdmora \ BrojRadnihDanaUNedelji
        
        Ostatak = BrojDanaOdmora Mod BrojRadnihDanaUNedelji
        
        If VratiPrviRadniDan = False Then Ostatak = Ostatak - 1
        
        ' Ukupan broj
        UkupanBrojDanaOdmora = (BrojNedelja * 7) + Ostatak
    
    Else
    
        If VratiPrviRadniDan = False Then UkupanBrojDanaOdmora = UkupanBrojDanaOdmora - 1
        
        
    End If

    r = CDate(PocetakOdmora) + UkupanBrojDanaOdmora
    
    ' Koji je dan u nedelji kao integer vrednost
    nDan = CInt(DatePart("w", r, vbUseSystemDayOfWeek, vbUseSystem))
    
    If VratiPrviRadniDan = True Then
        
        ' Ako je dan vikend (subota ili nedelja) onda
        If nDan > 5 Then
        
            ' Ako je subota - dodaj 2 dana
            If nDan = 6 Then r = DateAdd("d", 2, r)
            
            ' Ako je nedelja - dodaj 1 dan
            If nDan = 7 Then r = DateAdd("d", 1, r)
        
        End If
        
    Else
    
        ' Ako je dan vikend (subota ili nedelja) onda
        If nDan > 5 Then
        
            ' Ako je rezim rada pre vikenda da bude datum onda
            If KrajOdmoraDaniVikenda = 0 Then
        
                ' Ako je subota - oduzmi 1 dan
                If nDan = 6 Then r = DateAdd("d", -1, r)
                
                ' Ako je nedelja - oduzmi 2 dana
                If nDan = 7 Then r = DateAdd("d", -2, r)
            
            ' Ako je rezim rada posle vikenda da bude datum onda
            ElseIf KrajOdmoraDaniVikenda = 1 Then
            
                ' Ako je subota - dodaj 2 dana
                If nDan = 6 Then r = DateAdd("d", 2, r)
                
                ' Ako je nedelja - dodaj 1 dan
                If nDan = 7 Then r = DateAdd("d", 1, r)
            
            End If
        
        End If
    
    End If
    
    Debug.Print "PocetakOdmora: "; PocetakOdmora, "BrojDanaOdmora: "; BrojDanaOdmora, "BrojNedelja: "; BrojNedelja, "Ostatak: "; Ostatak, "UkupanBrojDanaOdmora: "; UkupanBrojDanaOdmora, r, Format(r, "dddd"), IIf(VratiPrviRadniDan, "Prvi radni dan", "Kraj odmora"), IIf(KrajOdmoraDaniVikenda = 0, "Pre vikenda", IIf(KrajOdmoraDaniVikenda = 1, "Posle vikenda", "Tacan datum"))
    
    ' Povratna vrednost
    ObracunajKrajOdmora = r

End Function




Code:


3.2. DATUM KRAJA ODMORA --- KrajOdmoraDaniVikenda = 0
----------------------------------------------------------------------------
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  1          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  0    10/09/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  2          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  1    11/09/2018    Tuesday       Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  3          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  2    12/09/2018    Wednesday     Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  4          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  3    13/09/2018    Thursday      Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  5          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  4    14/09/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  6          BrojNedelja:  1             Ostatak:  0   UkupanBrojDanaOdmora:  7    17/09/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  7          BrojNedelja:  1             Ostatak:  1   UkupanBrojDanaOdmora:  8    18/09/2018    Tuesday       Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  8          BrojNedelja:  1             Ostatak:  2   UkupanBrojDanaOdmora:  9    19/09/2018    Wednesday     Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  9          BrojNedelja:  1             Ostatak:  3   UkupanBrojDanaOdmora:  10   20/09/2018    Thursday      Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  10         BrojNedelja:  2             Ostatak: -1   UkupanBrojDanaOdmora:  13   21/09/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  11         BrojNedelja:  2             Ostatak:  0   UkupanBrojDanaOdmora:  14   24/09/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  12         BrojNedelja:  2             Ostatak:  1   UkupanBrojDanaOdmora:  15   25/09/2018    Tuesday       Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  13         BrojNedelja:  2             Ostatak:  2   UkupanBrojDanaOdmora:  16   26/09/2018    Wednesday     Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  14         BrojNedelja:  2             Ostatak:  3   UkupanBrojDanaOdmora:  17   27/09/2018    Thursday      Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  15         BrojNedelja:  3             Ostatak: -1   UkupanBrojDanaOdmora:  20   28/09/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  20         BrojNedelja:  4             Ostatak: -1   UkupanBrojDanaOdmora:  27   05/10/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  21         BrojNedelja:  4             Ostatak:  0   UkupanBrojDanaOdmora:  28   08/10/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  23         BrojNedelja:  4             Ostatak:  2   UkupanBrojDanaOdmora:  30   10/10/2018    Wednesday     Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  25         BrojNedelja:  5             Ostatak: -1   UkupanBrojDanaOdmora:  34   12/10/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  26         BrojNedelja:  5             Ostatak:  0   UkupanBrojDanaOdmora:  35   15/10/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  30         BrojNedelja:  6             Ostatak: -1   UkupanBrojDanaOdmora:  41   19/10/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  31         BrojNedelja:  6             Ostatak:  0   UkupanBrojDanaOdmora:  42   22/10/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  32         BrojNedelja:  6             Ostatak:  1   UkupanBrojDanaOdmora:  43   23/10/2018    Tuesday       Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  34         BrojNedelja:  6             Ostatak:  3   UkupanBrojDanaOdmora:  45   25/10/2018    Thursday      Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  35         BrojNedelja:  7             Ostatak: -1   UkupanBrojDanaOdmora:  48   26/10/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  36         BrojNedelja:  7             Ostatak:  0   UkupanBrojDanaOdmora:  49   29/10/2018    Monday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  60         BrojNedelja:  12            Ostatak: -1   UkupanBrojDanaOdmora:  83   30/11/2018    Friday        Kraj odmora   Pre vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  61         BrojNedelja:  12            Ostatak:  0   UkupanBrojDanaOdmora:  84   03/12/2018    Monday        Kraj odmora   Pre vikenda


3.2. DATUM KRAJA ODMORA --- KrajOdmoraDaniVikenda = 1
----------------------------------------------------------------------------
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  1          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  0    10/09/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  2          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  1    11/09/2018    Tuesday       Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  3          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  2    12/09/2018    Wednesday     Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  4          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  3    13/09/2018    Thursday      Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  5          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  4    14/09/2018    Friday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  6          BrojNedelja:  1             Ostatak:  0   UkupanBrojDanaOdmora:  7    17/09/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  7          BrojNedelja:  1             Ostatak:  1   UkupanBrojDanaOdmora:  8    18/09/2018    Tuesday       Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  8          BrojNedelja:  1             Ostatak:  2   UkupanBrojDanaOdmora:  9    19/09/2018    Wednesday     Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  9          BrojNedelja:  1             Ostatak:  3   UkupanBrojDanaOdmora:  10   20/09/2018    Thursday      Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  10         BrojNedelja:  2             Ostatak: -1   UkupanBrojDanaOdmora:  13   24/09/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  11         BrojNedelja:  2             Ostatak:  0   UkupanBrojDanaOdmora:  14   24/09/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  12         BrojNedelja:  2             Ostatak:  1   UkupanBrojDanaOdmora:  15   25/09/2018    Tuesday       Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  13         BrojNedelja:  2             Ostatak:  2   UkupanBrojDanaOdmora:  16   26/09/2018    Wednesday     Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  14         BrojNedelja:  2             Ostatak:  3   UkupanBrojDanaOdmora:  17   27/09/2018    Thursday      Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  15         BrojNedelja:  3             Ostatak: -1   UkupanBrojDanaOdmora:  20   01/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  20         BrojNedelja:  4             Ostatak: -1   UkupanBrojDanaOdmora:  27   08/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  21         BrojNedelja:  4             Ostatak:  0   UkupanBrojDanaOdmora:  28   08/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  23         BrojNedelja:  4             Ostatak:  2   UkupanBrojDanaOdmora:  30   10/10/2018    Wednesday     Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  25         BrojNedelja:  5             Ostatak: -1   UkupanBrojDanaOdmora:  34   15/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  26         BrojNedelja:  5             Ostatak:  0   UkupanBrojDanaOdmora:  35   15/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  30         BrojNedelja:  6             Ostatak: -1   UkupanBrojDanaOdmora:  41   22/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  31         BrojNedelja:  6             Ostatak:  0   UkupanBrojDanaOdmora:  42   22/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  32         BrojNedelja:  6             Ostatak:  1   UkupanBrojDanaOdmora:  43   23/10/2018    Tuesday       Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  34         BrojNedelja:  6             Ostatak:  3   UkupanBrojDanaOdmora:  45   25/10/2018    Thursday      Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  35         BrojNedelja:  7             Ostatak: -1   UkupanBrojDanaOdmora:  48   29/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  36         BrojNedelja:  7             Ostatak:  0   UkupanBrojDanaOdmora:  49   29/10/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  60         BrojNedelja:  12            Ostatak: -1   UkupanBrojDanaOdmora:  83   03/12/2018    Monday        Kraj odmora   Posle vikenda
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  61         BrojNedelja:  12            Ostatak:  0   UkupanBrojDanaOdmora:  84   03/12/2018    Monday        Kraj odmora   Posle vikenda


3.2. DATUM KRAJA ODMORA --- KrajOdmoraDaniVikenda = 2
----------------------------------------------------------------------------
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  1          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  0    10/09/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  2          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  1    11/09/2018    Tuesday       Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  3          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  2    12/09/2018    Wednesday     Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  4          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  3    13/09/2018    Thursday      Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  5          BrojNedelja:  0             Ostatak:  0   UkupanBrojDanaOdmora:  4    14/09/2018    Friday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  6          BrojNedelja:  1             Ostatak:  0   UkupanBrojDanaOdmora:  7    17/09/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  7          BrojNedelja:  1             Ostatak:  1   UkupanBrojDanaOdmora:  8    18/09/2018    Tuesday       Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  8          BrojNedelja:  1             Ostatak:  2   UkupanBrojDanaOdmora:  9    19/09/2018    Wednesday     Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  9          BrojNedelja:  1             Ostatak:  3   UkupanBrojDanaOdmora:  10   20/09/2018    Thursday      Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  10         BrojNedelja:  2             Ostatak: -1   UkupanBrojDanaOdmora:  13   23/09/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  11         BrojNedelja:  2             Ostatak:  0   UkupanBrojDanaOdmora:  14   24/09/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  12         BrojNedelja:  2             Ostatak:  1   UkupanBrojDanaOdmora:  15   25/09/2018    Tuesday       Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  13         BrojNedelja:  2             Ostatak:  2   UkupanBrojDanaOdmora:  16   26/09/2018    Wednesday     Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  14         BrojNedelja:  2             Ostatak:  3   UkupanBrojDanaOdmora:  17   27/09/2018    Thursday      Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  15         BrojNedelja:  3             Ostatak: -1   UkupanBrojDanaOdmora:  20   30/09/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  20         BrojNedelja:  4             Ostatak: -1   UkupanBrojDanaOdmora:  27   07/10/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  21         BrojNedelja:  4             Ostatak:  0   UkupanBrojDanaOdmora:  28   08/10/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  23         BrojNedelja:  4             Ostatak:  2   UkupanBrojDanaOdmora:  30   10/10/2018    Wednesday     Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  25         BrojNedelja:  5             Ostatak: -1   UkupanBrojDanaOdmora:  34   14/10/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  26         BrojNedelja:  5             Ostatak:  0   UkupanBrojDanaOdmora:  35   15/10/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  30         BrojNedelja:  6             Ostatak: -1   UkupanBrojDanaOdmora:  41   21/10/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  31         BrojNedelja:  6             Ostatak:  0   UkupanBrojDanaOdmora:  42   22/10/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  32         BrojNedelja:  6             Ostatak:  1   UkupanBrojDanaOdmora:  43   23/10/2018    Tuesday       Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  34         BrojNedelja:  6             Ostatak:  3   UkupanBrojDanaOdmora:  45   25/10/2018    Thursday      Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  35         BrojNedelja:  7             Ostatak: -1   UkupanBrojDanaOdmora:  48   28/10/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  36         BrojNedelja:  7             Ostatak:  0   UkupanBrojDanaOdmora:  49   29/10/2018    Monday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  60         BrojNedelja:  12            Ostatak: -1   UkupanBrojDanaOdmora:  83   02/12/2018    Sunday        Kraj odmora   Tacan datum
PocetakOdmora: 10/09/2018   BrojDanaOdmora:  61         BrojNedelja:  12            Ostatak:  0   UkupanBrojDanaOdmora:  84   03/12/2018    Monday        Kraj odmora   Tacan datum











Prikačeni fajlovi
 
Odgovor na temu

Miki2013
Sarajevo

Član broj: 313952
Poruke: 69



+2 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od13.09.2018. u 12:33 - pre 67 meseci
Po prvim impresijama sve radi za 10.

Ovaj checkbox i combobox sam ubacio na formu i sakrio jer mi nece trebati vise, obzirom da sam dobio ono sto sam trazio.

Sada cu se baciti na obimnije testiranje da budem spreman za iducu godinu.

Zelim da ti se od srca zahvalim na ovoj zaista velikoj pomoci. Poziv za nadoknadu vremena je i dalje vazeci. Znaci, ako te put nanese u Sarajevo castim te i ruckom i picem, samo mi se javi e-mailom preko profila i dogovorit cemo se.

Nadam se da ce ovaj primjer posluziti jos nekome ko radi istu stvar.

Hvala jos jednom i lijep pozdrav!
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od13.09.2018. u 15:09 - pre 67 meseci
Evo uradio sam brzinski jos jednu kracu varijantu sa do while petljom kao moguce resenje.

Probati i uporediti sa prethodnom varijantom.

Kad budem stigao napravicu i MS Access uzorak i priloziti.

Code:


Public Function ObracunajKrajOdmora2(ByVal DatumPocetka As String, ByVal BrojDanaOdmora As Integer, Optional ByVal KrajOdmoraDaniVikenda As Integer = 2) As String

    Dim iDana As Integer
    Dim iBrojac As Integer
    Dim Dan As String
    Dim iDan As Integer
    
    iDana = BrojDanaOdmora
    iBrojac = 0
    
    ' Prvi dan odmora
    Dan = DateAdd("d", iBrojac, DatumPocetka)
    
    ' Uzmi dan u nedelji (1...7)
    iDan = CInt(DatePart("w", Dan, vbUseSystemDayOfWeek, vbUseSystem))
    
    If BrojDanaOdmora > 1 Then
    
        Do While Not iDana = 1
        
            ' Brojac dana
            iBrojac = iBrojac + 1
        
            ' Dan kada se doda broj vec izbrojanih dana
            Dan = DateAdd("d", iBrojac, DatumPocetka)
            
            ' Uzmi dan u nedelji (1...7)
            iDan = CInt(DatePart("w", Dan, vbUseSystemDayOfWeek, vbUseSystem))
            
            ' Ako je dan u nedelje 1...5 onda
            If iDan < 6 Then iDana = iDana - 1
    
        Loop
        
    End If
    
    If iDan > 5 Then
    
        ' Dan pre vikenda
        If KrajOdmoraDaniVikenda = 0 Then
        
            ' Ako je subota - oduzmi 1 dan
            If iDan = 6 Then Dan = DateAdd("d", -1, Dan)
            
            ' Ako je nedelja - oduzmi 2 dana
            If iDan = 7 Then Dan = DateAdd("d", -2, Dan)
        
        ' Dan posle vikenda
        ElseIf KrajOdmoraDaniVikenda = 1 Then
        
            ' Ako je subota - dodaj 2 dana
            If iDan = 6 Then Dan = DateAdd("d", 2, Dan)
            
            ' Ako je nedelja - dodaj 1 dan
            If iDan = 7 Then Dan = DateAdd("d", 1, Dan)
        
        End If
    
    End If

    Debug.Print "DatumPocetka: "; DatumPocetka, "BrojDanaOdmora: "; BrojDanaOdmora, "Dan: "; Dan, Format(Dan, "dddd"), IIf(KrajOdmoraDaniVikenda = 0, "Pre vikenda", IIf(KrajOdmoraDaniVikenda = 1, "Posle vikenda", "Tacan datum")); KrajOdmoraDaniVikenda
    
    ' Povratna vrednost
    ObracunajKrajOdmora2 = Dan

End Function




Test f-je

Code:


Sub Test2()

    Dim i As Integer
    Dim DatumPocetka As String
    Dim BrojDanaOdmora As Variant
    Dim KrajOdmoraDaniVikenda As Integer
    
    DatumPocetka = "10/09/2018"
    BrojDanaOdmora = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21, 23, 25, 26, 30, 31, 32, 34, 35, 36, 60, 61)
    KrajOdmoraDaniVikenda = 2
    
    Debug.Print vbCrLf, vbCrLf
    Debug.Print "DATUM KRAJA ODMORA"
    Debug.Print String(76, "-")

    For i = 0 To UBound(BrojDanaOdmora)
        ObracunajKrajOdmora2 DatumPocetka, BrojDanaOdmora(i), KrajOdmoraDaniVikenda
    Next
    
End Sub




Rezultati f-je

Code:

          

DATUM KRAJA ODMORA --- KrajOdmoraDaniVikenda = 2
----------------------------------------------------------------------------
DatumPocetka: 10/09/2018    BrojDanaOdmora:  1          iBrojac:  0   Dan: 10/09/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  2          iBrojac:  1   Dan: 11/09/2018             Tuesday       Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  3          iBrojac:  2   Dan: 12/09/2018             Wednesday     Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  4          iBrojac:  3   Dan: 13/09/2018             Thursday      Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  5          iBrojac:  4   Dan: 14/09/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  6          iBrojac:  7   Dan: 17/09/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  7          iBrojac:  8   Dan: 18/09/2018             Tuesday       Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  8          iBrojac:  9   Dan: 19/09/2018             Wednesday     Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  9          iBrojac:  10  Dan: 20/09/2018             Thursday      Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  10         iBrojac:  11  Dan: 21/09/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  11         iBrojac:  14  Dan: 24/09/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  12         iBrojac:  15  Dan: 25/09/2018             Tuesday       Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  13         iBrojac:  16  Dan: 26/09/2018             Wednesday     Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  14         iBrojac:  17  Dan: 27/09/2018             Thursday      Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  15         iBrojac:  18  Dan: 28/09/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  20         iBrojac:  25  Dan: 05/10/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  21         iBrojac:  28  Dan: 08/10/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  23         iBrojac:  30  Dan: 10/10/2018             Wednesday     Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  25         iBrojac:  32  Dan: 12/10/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  26         iBrojac:  35  Dan: 15/10/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  30         iBrojac:  39  Dan: 19/10/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  31         iBrojac:  42  Dan: 22/10/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  32         iBrojac:  43  Dan: 23/10/2018             Tuesday       Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  34         iBrojac:  45  Dan: 25/10/2018             Thursday      Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  35         iBrojac:  46  Dan: 26/10/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  36         iBrojac:  49  Dan: 29/10/2018             Monday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  60         iBrojac:  81  Dan: 30/11/2018             Friday        Tacan datum 2 
DatumPocetka: 10/09/2018    BrojDanaOdmora:  61         iBrojac:  84  Dan: 03/12/2018             Monday        Tacan datum 2 



p.s. Nadam se da gore nisam nesto izostavio... anyway fresh coffeeeee edition


 
Odgovor na temu

Miki2013
Sarajevo

Član broj: 313952
Poruke: 69



+2 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od25.09.2018. u 13:13 - pre 67 meseci
Da ne otvaram novu temu jer se sljedeci "problem" odnosi na isti program.

Pitanje: Kako ukloniti "namjerno" ubacena prazna polja u reportu?
Pitanje je nejasno pa cu priloziti sliku i gotov primjer da bude jasnije.

Napravio sam upit koji pravi tabelu - (izvor podataka za plan)
e sad u koloni napomena treba da budu poredane stavke jedna ispod druge po osnovama.
Koristio sam u upitu chr(13) i chr(10) za prebacanje uslova u nove redove i to radi ok, medjutim
"problem" se javlja kad je neki od uslova prazan.

Ja sam to uradio amaterski sa mojim skromnim znanjem ali ako ima neko srecnije rjesenje, svakako bi dobro doslo.

EDIT: Promjena svojstva polja Can Shrink = Yes u reportu ne dolazi u obzir jer kvari izgled tabele

[Ovu poruku je menjao Miki2013 dana 25.09.2018. u 14:25 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od25.09.2018. u 22:59 - pre 67 meseci
Ako sam dobro razumeo:

trenutno kako je i kako izgleda pre prepravke

Code:


- 30 radnih dana - ostvareni penzijski staž

- 2 radna dana - Lice koje ima dvoje ili više djece mlađih od 7 godina.

- 2 radna dana - Lice čije je mjesto rada udaljeno 80 km i više od mjesta stalnog boravka.



posle prepravke

Code:


- 30 radnih dana - ostvareni penzijski staž
- 2 radna dana - Lice koje ima dvoje ili više djece mlađih od 7 godina.
- 2 radna dana - Lice čije je mjesto rada udaljeno 80 km i više od mjesta stalnog boravka.



Dole evo jednog brizinskog resenja korigovanog SQL upita iz Queries dela ('test') kao i orginalnog koji je bio prisutan pre toga:

Pre:

Code:


SELECT [Prezime] & " (" & [ime_oca] & ") " & [ime] AS [Prezime, ime oca i ime], tblPodaci.GodStaza AS [Godine penzijskog staža], tblPodaci.UkupnoDana AS [Broj radnih dana g/o], [I_dio_dana] & Chr(13) & Chr(10) & [II_dio_dana] AS [Broj dana], [I_dio_od] & Chr(13) & Chr(10) & [II_dio_od] AS od, [I_dio_do] & Chr(13) & Chr(10) & [II_dio_do] AS do, [Osnov] & Chr(13) & Chr(10) & [Osnov1] & Chr(13) & Chr(10) & [Osnov2] & [Osnov3] & Chr(13) & Chr(10) & [Osnov4] & [Osnov5] & Chr(13) & Chr(10) & [Osnov6] AS Napomena INTO tblPodacizaPlan
FROM tblOsnovna INNER JOIN tblPodaci ON tblOsnovna.IndexID = tblPodaci.IndexID;




Primer koda upita posle korekcije koji daje gore navedeni rezultat #1:
Code:


SELECT [Prezime] & " (" & [ime_oca] & ") " & [ime] AS [Prezime, ime oca i ime], tblPodaci.GodStaza AS [Godine penzijskog staža], tblPodaci.UkupnoDana AS [Broj radnih dana g/o], [I_dio_dana] & Chr(13) & Chr(10) & [II_dio_dana] AS [Broj dana], [I_dio_od] & Chr(13) & Chr(10) & [II_dio_od] AS od, [I_dio_do] & Chr(13) & Chr(10) & [II_dio_do] AS do,
Replace(IIF(len(trim([Osnov]))>0,Replace(Osnov,Chr(13) & Chr(10),"") & Chr(13) & Chr(10),"") &
IIF(len(trim([Osnov1]))>0,Replace(Osnov1,Chr(13) & Chr(10),"") & Chr(13) & Chr(10),"") &
IIF(len(trim([Osnov2]))>0,Replace(Osnov2,Chr(13) & Chr(10),"") & Chr(13) & Chr(10),"") &
IIF(len(trim([Osnov3]))>0,Replace(Osnov3,Chr(13) & Chr(10),"") & Chr(13) & Chr(10),"") &
IIF(len(trim([Osnov4]))>0,Replace(Osnov4,Chr(13) & Chr(10),"") & Chr(13) & Chr(10),"") &
IIF(len(trim([Osnov5]))>0,Replace(Osnov5,Chr(13) & Chr(10),"") & Chr(13) & Chr(10),"") &
IIF(len(trim([Osnov6]))>0,Replace(Osnov6,Chr(13) & Chr(10),""),""),Chr(13) & Chr(10) & Chr(13) & Chr(10),"")
AS Napomena
FROM tblOsnovna INNER JOIN tblPodaci ON tblOsnovna.IndexID = tblPodaci.IndexID;



Ako sam nesto izmasio sorry...


 
Odgovor na temu

Miki2013
Sarajevo

Član broj: 313952
Poruke: 69



+2 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od26.09.2018. u 15:45 - pre 66 meseci
@bokinet... nemam riječi. Ti si genije i što je najvažnije, Veliki čovjek sa veliko V.

Hvala ti mnogo...
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od26.09.2018. u 21:27 - pre 66 meseci
Nema na cemu.

Nadam se samo da u zurbi nisam nesto izmasaio ;)

Inace, postoji isto i mogucnost da se recimo prilikom azuriranja vrednosti u bazi to podrzi i da se to isto tada precisti, kroz pozivanje f-je koja bi to radila.

Takodje isto moze da se napravi i bulk operacija (f-ja) koja bi recimo odradila sve to nad vec postojecom tabelom i poljima.

Evo espresso varijante f-je koja nesto slicno to radi kao u SQL upitu ali samo sto je kod za namene kroz aplikaciju, odnsno bulk azuriranje tabela u bazi:

Code:


Public Function DataFixCrLf(ByRef ThisContent As String) As String

    Dim v() As String
    Dim i As Integer
    Dim r As String
    
    r = ThisContent
    
    On Error GoTo ErrHandler
    
    If InStr(ThisContent, vbCrLf) > 0 Then
    
        r = ""
    
        v = Split(ThisContent, vbCrLf)
        
        For i = 0 To UBound(v)
        
            v(i) = Trim(Replace(v(i), vbCrLf, ""))
            If Len(v(i)) > 0 Then r = r & v(i) & vbCrLf
            
        Next
        
        If Right(r, 2) = vbCrLf Then r = Left(r, Len(r) - 2)
    
    End If

    DataFixCrLf = r

    r = ""
    Erase v

Exit Function
ErrHandler:

    ' Show message
    MsgBox "Doslo je do greske u radu." & vbCrLf & vbCrLf & "Error # " & Err.Number & " - " & Err.Description, vbCritical, "Error in DataFixCrLf"
End Function




Evo double espresso f-je koja to nesto kao isto radi samo nad tabelom/recordsetom gde se kao ulazne vrednosti unose naziv tabele i naziv polja koje se azurira i 'sredjuje'. Ova f-ja koristi gornju f-ju 'DataFixCrLf()' kao deo cele price.

Code:


Public Sub dbFixDataCrLf(ByVal TableName As String, ByVal FieldName As String)

    On Error GoTo ErrHandler

    Dim Rs As DAO.Recordset
    Dim r As String
    
    ' Get data recordset
    Set Rs = Access.CurrentDb.OpenRecordset(TableName)
    
    With Rs
    
        ' If we have records then
        If .RecordCount > 0 Then
    
            Do While Not .EOF
            
                r = DataFixCrLf("" & .Collect(FieldName))
                
                .Edit
                .Collect(FieldName) = r
                
                .Update
                
                Debug.Print r
                
                ' Move to next record
                .MoveNext
                
            Loop
        
        End If
        
        ' Close recordset
        .Close
        
    End With
    
    ' Free memory resource
    Set Rs = Nothing
    
Exit Sub
ErrHandler:
    ' Show message
    MsgBox "Doslo je do greske u radu." & vbCrLf & vbCrLf & "Error # " & Err.Number & " - " & Err.Description, vbCritical, "Error in dbFixDataCrlf"
End Sub



Sve ovo moze da se utegne i optimizuje...

code espresso ende :)

cus
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.cpe.net.cable.rogers.com.



+79 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od15.10.2018. u 19:27 - pre 66 meseci
Malo je kasno za ukljucivanje u diskusiju, ali ne zamerite starom coveku

Problemi sa datumima se veoma efikasno resavaju upotrebom Kalendar tabele. U zakacenom primeru je jedna varijanta takve tabele i primer kako se moze primeniti na problem koji se resava - kako eliminisati neradne dane iz datog vremenskog intervala.

Tabela se lako pravi u Excelu, uz primenu funkcija za manipulisanje datumima. Primetite kolone JeLiPraznik in NazivPraznika. One se mogu rucno popuniti - svaka godina ima manje od deset dana praznika, pa se u tom procesu podesi i pomeranje praznika na ponedeljak ili utorak, kada praznik padne ne vikend. Kada normalan radni dan pretvorite u praznik treba da uradite 3 stvari: 1)postavie JeLiPraznik na TRUE, 2) upisete Ime Praznika, i 3) postavite RadniDan = FALSE. Posle toga na prosto prebrojite neradne dane (RadniDan = FALSE) u datom intervalu. Za unos praznika i podesavanja ako padnu u neradni dan, Boki moze da moze se napisati bulk update program .

Tabela Kalendar moze potpuno da eliminise potrebu za koriscenjem datumskih funkcija. Moguse je odgovoriti lako na pitanja tipa: "Sastanak ce biti svakog drugom meseca, poslednji utorak u mesecu, pocevsi of marta". Meni posebno draga opcija je [AbsolutnaSedmica] Pocevsi od 1.1.2000 sedmice se broje u rastucem redosledu. Ovo dozvoljava da radite sedmicne (weekly) izvestaje. ISOweek drugacije tretira prvu i poslednju sedmicu u godini i to pravi ponekad probleme. AbsoluteWeek resava taj problem.


 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: popunjavanje datuma do na osnovu broja dana i datuma od15.10.2018. u 19:37 - pre 66 meseci
@Zidar Ja koliko se secam, to nije bilo potrebno.

Ima 2 resenja, jedan kroz ciklus (drugi ponudjeni) i drugi (prvi ponudjeni) je preko date f-ja.

Vas predlog moze da se odradi i da se napravi deo koji predvidja izuzetke kao sto su praznici, turnusi, slobodni dani nakon trecih smena i svasta nesto sto moze da bude kao uslov i sto se desava u praksi u uredjenim i (ne)uredjenim zemljama... ali to @Miki2013 nije trazio posto je i sam rekao da mu to nije bitno.

Ja trenutno nemam bas puno vremena time da se bavim tako da mogu nekom drugom prilikom da vidim da to odradim ako nekome bude trebalo i to.

Do tada sta je tu je.

Ziveli!

Svako dobro.

p.s. @Zidar -> Excel file nema u prilogu
 
Odgovor na temu

[es] :: Access :: popunjavanje datuma do na osnovu broja dana i datuma od

Strane: 1 2

[ Pregleda: 4550 | Odgovora: 29 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.