Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
haftalık çalışma takvimi belirleme
#1
Merhaba,
Projemde personeller mevcut. Bu personeller hafta da 2 gün çalıyor. Fakat bu 2 gün personele göre değişiyor. Bazısı pazartesi-çarsamba bazısı perşembe -cuma olabiliyor.
Bu personellere çalışma zamanları ataması oluşturmam gerekiyor.
Misal: Personel Ahmet. çalışacağı saat=60 . bir günde çalışacağı saat=1.   Çalışmaya başlayacağı tarih=01.01.2018
personel adı      tarih  
Ahmet              01.01.2018

Bu şekilde çalışacağı 60 saati günlere dağıtmam gerekiyor. Hafta 1 gün çalışsa sorun "IncWeek" ile tarihleri artırır sorunu çözerdim ama 2 gün olunca işin içinden çıkamadım.

Kusuruma bakmayın oruçlu bir şekilde bu saatte yazınca sorunumu tam anlatamamış olabilirim.
Cevapla
#2
Böyle problemler için ilkeler belirleyerek başlamak lazım.

(1) İş günleri (a) Pazartesi ve (a) Çarşamba (b) Perşembe ve (b) Cuma olduğuna göre her bir personele (a) veya (b) tipi çalışma ataması yapılacaktır diyelim. Sadeleştirelim.

(2) ayın (a) günlerini ve (b) günlerini birer küme oluşturacak şekilde iki farklı liste kutusuna alalım.

(3) Sonra personeli sıra ile dolaşıp, bu kümelerden kendisine ait olanı verelim ve kümeden düşelim.

oldu size personel göre iş dağılımı...
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
(30-05-2018, Saat: 19:48)mrmarman Adlı Kullanıcıdan Alıntı: Böyle problemler için ilkeler belirleyerek başlamak lazım.

(1) İş günleri (a) Pazartesi ve (a) Çarşamba (b) Perşembe ve (b) Cuma olduğuna göre her bir personele (a) veya (b) tipi çalışma ataması yapılacaktır diyelim. Sadeleştirelim.

(2) ayın (a) günlerini ve (b) günlerini birer küme oluşturacak şekilde iki farklı liste kutusuna alalım.

(3) Sonra personeli sıra ile dolaşıp, bu kümelerden kendisine ait olanı verelim ve kümeden düşelim.

oldu size personel göre iş dağılımı...

Merhaba @mrmarman hocam. Öncelikle ilginize teşekkür ederim.  Peki misal haftanın çarşamba günü hangi tarihe geliyor bunu bulmak mümkün müdür?  şuan 04.01.2018 tarihinde olalım bu tarihin olduğu haftanın çarşamba günün tarihi nedir gibi.
Cevapla
#4
Merhaba üstadım, tabii ki mümkün.

SysUtils unitindeki DayOfWeek( tarihiniz ) şeklinde kullandığınızda ( tarihiniz TDate veya TDateTime  olduğunu hatırlatayım string değil )  1 ile 7 arasında (dahil) Integer tipinde bir sayı dönecektir.

1 = Pazar
2 = Pazartesi
3 = Salı
4 = Çarşamba
5 = Perşemde
6 = Cuma
7 = Cumartesi

anlamına gelir.
Başarılar.

Function HaftaninGunu( dtTarih: TDateTime ): String;
begin
 Case DayOfWeek( dtTarih ) of
 1 : Result := 'Pazar';
 2 : Result := 'Pazartesi';
 3 : Result := 'Salı';
 4 : Result := 'Çarşamba';
 5 : Result := 'Perşemde';
 6 : Result := 'Cuma';
 7 : Result := 'Cumartesi';
 End;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 ShowMessage( HaftaninGunu( DateTimePicker1.DateTime ) );
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
(31-05-2018, Saat: 11:54)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba üstadım, tabii ki mümkün.

SysUtils unitindeki DayOfWeek( tarihiniz ) şeklinde kullandığınızda ( tarihiniz TDate veya TDateTime  olduğunu hatırlatayım string değil )  1 ile 7 arasında (dahil) Integer tipinde bir sayı dönecektir.

1 = Pazar
2 = Pazartesi
3 = Salı
4 = Çarşamba
5 = Perşemde
6 = Cuma
7 = Cumartesi

anlamına gelir.
Başarılar.

Function HaftaninGunu( dtTarih: TDateTime ): String;
begin
 Case DayOfWeek( dtTarih ) of
 1 : Result := 'Pazar';
 2 : Result := 'Pazartesi';
 3 : Result := 'Salı';
 4 : Result := 'Çarşamba';
 5 : Result := 'Perşemde';
 6 : Result := 'Cuma';
 7 : Result := 'Cumartesi';
 End;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 ShowMessage( HaftaninGunu( DateTimePicker1.DateTime ) );
end;

Tekrar teşekkürler. Zahmet verdim kusura bakmayın. Amacımı tam anlatamadım sanırım. ilgili günü tarih olarak elde etmek istemiştim. 01.01.2018 pazartesi ise  o hafta içerinde çarşamba günü hangi tarihi denk geliyor şeklinde. 03.01.2018 gibi.

Verdiğiniz örneği biraz değiştirerek sanırım istediğimi alabilirim.
Cevapla
#6
Şöyle yapın. Ayın ilk günü (örneğin 1 Mayıs  SALI olduğunu biliyoruz ama bunun önemi yok) Pazartesi (2) Çarşamba (4) Perşembe (5) Cuma (6) olana kadar IncDay yapın.

aTarih : 01.05.2018 olsun
Uses DateUtils;

procedure TForm1.BitBtn2Click(Sender: TObject);
Var
 aTarih : TDate;
begin
 aTarih := StrToDate('01.05.2018');
 While NOT (DayOfWeek( aTarih ) IN [ 2, 4, 5, 6 ]) do
 begin
  aTarih := DateUtils.IncDay(aTarih);
 end;
 ShowMessageFmt('%s : %d', [ DateToStr(aTarih), DayOfWeek(aTarih) ] );
end;

şeklinde ilk uygun tarihe odaklanabilirsiniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
Teşekkür ederim. Ellerinize sağlık.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  cxGrid>FindPanel Arama Yapılacak Kolonları Belirleme hi_selamlar 15 9.792 30-03-2026, Saat: 12:33
Son Yorum: barutali
  Unix Timestamp çalışma mantığı hakkında mxpain 1 546 14-10-2024, Saat: 10:42
Son Yorum: frmman
  4 İşlem - PDF Çalışma Sayfası Hazırlama Frrst 0 870 25-08-2023, Saat: 09:58
Son Yorum: Frrst
  Delphi de Bugün Dün yarın Haftalık Aylık Kayıtları Sorgulama erdemtaner 7 3.450 26-10-2022, Saat: 14:01
Son Yorum: erdemtaner
  XML Json dosyaları ile Çalışma masteryoda 10 11.144 10-08-2022, Saat: 23:21
Son Yorum: varyemez



Konuyu Okuyanlar: 1 Ziyaretçi