Giriş Tarihine Göre Eğitim Planlama

1 2 3 4 5 6 7 8 9 10 11
21/01/2020, 08:24

accessman

evet ama döngüden bahsettim yani her 24 günde bir tekrar eden bir tablo
ilgili günü 03.01.2020 çıkarıp farkı mod 24 göre bulduğumuzda tablodan hangi vardiyanın 08:16 olduğunu buluyoruz
mesela 03.02.2020 için bulunan MOD24(03.02.2020 - 03.01.20207) = 7  değerine göre çalışan vardiyalar "4d-4a-4b" yani sabahçı olan "4d" oluyor
0.gün --> 4c-4d-4a
...........
5.gün --> 4c-4d-4a
6.gün --> 4d-4a-4b
...........
11.gün --> 4d-4a-4b
12.gün --> 4a-4b-4c
...........
17.gün --> 4a-4b-4c
18.gün --> 4b-4c-4d
...........
23.gün --> 4b-4c-4d
0.gün --> 4c-4d-4a
bu tabloya göre MOD24(11.12.2020 - 03.01.20207) = 7 olduğu için 
11.12.2020 de çalışan sabahçı vardiya yine "4d" oluyor
21/01/2020, 08:43

accessman

function arraybul(ilktarih as date, sontarih as date) as Arraylist
dim vardiya as string
dim liste as Arraylist

for ilktarih to sontarih
    vardiya = tablodanal(mod((tarih - 03.01.2020),24))
    liste.add  tarih&vardiya
next
arraybul = liste
end function


function tablodanal(mod as integer) as String
   dim result as string
   if(mod > -1 and mod < 6) then 
        result = "4c"
   elseif(mod >5 and mod < 12) then 
        result = "4d"
   elseif(mod >5 and mod < 12) then 
        result = "4a"
   elseif(mod >5 and mod < 12) then 
        result = "4b"
   endif
21/01/2020, 08:52

berduş

Ben anladiklarimi soyleyeyim
1 - personel tablosu : kisi - vardiya - işe giriş tarihi
2 - vardiya tablosu : tarih - vardiya - saat aralığı ( 8-16 gibi)
3 - eğitim tablosu : tarih - kisi
Tabloları varsa bu 3 tabloyu tek sorguda birleştirip kriterlerle sadece gerekli kişiler alabilirsiniz
personelden : şubat ayında ise başlayanları seçip vardiya tablosuyla birleştirirseniz hangi gun kim çalışıyor bulabilirsiniz ve eğitim tablosunda yer almayanlari kriter olarak belirlerseniz sadece eğitim almamış kişiler kalır , gerisi sadece do while döngüsü ve günü 1 artırma fonksiyonu

Günlerin pazar yada salı olması önemli mi
Zaten her gün çalışan 3 vardiya var
21/01/2020, 09:06

accessman

evet eğitim için çünkü eğitimi verecek kişi sadece hafta içi çalışıyor
kotamda yer kaldıysa iki tablo ekleyeyim
sn.berduş
liste tablosunda id, vardiya,işegiriştarihi var
vardiya tablosunda modlara göre saat aralığına göre hangi vardiya sabahçı olacak tablosu var ben fonksiyona değer olarak 
(03.02.2020,  28.02.2020) göndereceğim oda bana 
hafta içi günlere göre liste verecek mesela
03.02.2020
  ahmet
  hasan
  ali
04.02.2020
  mesut
  zeynep
  fadime
21/01/2020, 09:55

accessman

problemin birinci kısmı ilgili tarihlerde sabahçı olacak personeli bulmak
lakin ikinci kısmı var ki işi biraz daha zorlaştırıyor
biz şubat ayı içinde gelecek 400 kişiyi bulduk diyelim
elimizde 20 gün kutusu var
400 kişi kartı var
bu kartları mümkün olduğu kadar kutulara eşit böleceğiz
ali kartını 03.02.2020 kutusuna koyabilmek için şartlarımız
    -   şubatta girmiş olmalı(şubatın 1 inde girmiş olabilir 28 inde de girmiş olabilir farketmiyor)
    -   03.02.2020 de sabahçı vardiya olan "4c" de olmalı
    -   kutu çok dolu olmamalı

ali kartı 20 kutudan beşine konulabiliyor diyelim ki elimizde son bir kart kaldı bunu 
konulabilecek beş kutudan en az dolu olanına koyarız değil mi
bunu accesse anlatmamız lazım ki kutular arasında mümkün olduğu kadar eşit bir dağılım olsun
21/01/2020, 10:34

berduş

eğitim tablosu da yok muydu?
1 2 3 4 5 6 7 8 9 10 11