Tarihhe göre hafta

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Tarihhe göre hafta

Mesaj gönderen haydarxxx »

var
Tarih : TDateTime;
Yil, Ay, Hafta, Deger : Word;
Begin
Tarih := StrToDate('01.05.2009');
DecodeDateMonthWeek(Tarih, Yil, Ay, Hafta, Deger);
label42.Caption := 'Yıl : '+InttoStr(Yil)+' Ay : '+IntToStr(Ay)+' Ayın Kaçıncı Haftası : '+IntToStr(Hafta)+' Haftanın Kaçıncı Günü : '+IntToStr(Deger);
end;

'01.05.2009' tarihi neden 5. hafta olarak gösteriyor ,'04.05.2009' 1.hafta olarak yada '29.06.2009' 1.hafta olarak gösteriyor. :cry:
Aylara düşen '01.05.2009' bu gibi tarihleri nasıl 1. hafta '29.06.2009' 5. hafta şeklinde gösterbiliriz.Ki buradaki tarihler değişken olacağınıda düşünerek( şubatta dahil).
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

Arkadaşlar lütfen bir cevap :(
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Tarihhe göre hafta

Mesaj gönderen aslangeri »

s.a.
muhtemelen pazartesinin haftanın birinci günü olarak aldığı için hafta başı olarak pazartesiyi alıyor.
ayın günü div 7 kaçıncı hafta olduğunu mod 7 de haftanın kaçıncı günü olduğunu verir. (tabi +1 eklemeyi unutmazsan ;)
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Tarihhe göre hafta

Mesaj gönderen mrmarman »

Merhaba.

DateUtil'in belki de bilimsel olan ancak projelerimde sizin de belirttiniz gibi aykırı geldiği uymayan durumlar için bir fonksiyon hazırlamıştım. Bunu paylaşayım... Siz kendinize göre hafta gününü kendinize göre özelleştirirsiniz. Sonuç kümesi örneğinize göre aşağıda tablolanmıştır.

Kod: Tümünü seç

Function HaftaNo(Tarih:TDate):Word;
Var
  DummyTarih  : TDate;
begin
  DummyTarih  := EncodeDate(YearOf(Tarih), MonthOf(Tarih), 01);
  Result      := 1;
  While Int(DummyTarih) <> Int(Tarih) do begin
    If (DayOfWeek(DummyTarih) = 1) and (DayOf(DummyTarih)>1)
      then Inc(Result); // her Pazar haftayı 1 arttır...
    DummyTarih := IncDay(DummyTarih);
  end;
end;

Kod: Tümünü seç

 01.05.2009 - WeeokOfTheMonth:5 - Fx:1
 02.05.2009 - WeeokOfTheMonth:5 - Fx:1
 03.05.2009 - WeeokOfTheMonth:5 - Fx:1
 04.05.2009 - WeeokOfTheMonth:1 - Fx:2
 05.05.2009 - WeeokOfTheMonth:1 - Fx:2
 06.05.2009 - WeeokOfTheMonth:1 - Fx:2
 07.05.2009 - WeeokOfTheMonth:1 - Fx:2
 08.05.2009 - WeeokOfTheMonth:1 - Fx:2
 09.05.2009 - WeeokOfTheMonth:1 - Fx:2
 10.05.2009 - WeeokOfTheMonth:1 - Fx:2
 11.05.2009 - WeeokOfTheMonth:2 - Fx:3
 12.05.2009 - WeeokOfTheMonth:2 - Fx:3
 13.05.2009 - WeeokOfTheMonth:2 - Fx:3
 14.05.2009 - WeeokOfTheMonth:2 - Fx:3
 15.05.2009 - WeeokOfTheMonth:2 - Fx:3
 16.05.2009 - WeeokOfTheMonth:2 - Fx:3
 17.05.2009 - WeeokOfTheMonth:2 - Fx:3
 18.05.2009 - WeeokOfTheMonth:3 - Fx:4
 19.05.2009 - WeeokOfTheMonth:3 - Fx:4
 20.05.2009 - WeeokOfTheMonth:3 - Fx:4
 21.05.2009 - WeeokOfTheMonth:3 - Fx:4
 22.05.2009 - WeeokOfTheMonth:3 - Fx:4
 23.05.2009 - WeeokOfTheMonth:3 - Fx:4
 24.05.2009 - WeeokOfTheMonth:3 - Fx:4
 25.05.2009 - WeeokOfTheMonth:4 - Fx:5
 26.05.2009 - WeeokOfTheMonth:4 - Fx:5
 27.05.2009 - WeeokOfTheMonth:4 - Fx:5
 28.05.2009 - WeeokOfTheMonth:4 - Fx:5
 29.05.2009 - WeeokOfTheMonth:4 - Fx:5
 30.05.2009 - WeeokOfTheMonth:4 - Fx:5
 31.05.2009 - WeeokOfTheMonth:4 - Fx:5

Kod: Tümünü seç

 01.06.2009 - WeeokOfTheMonth:1 - Fx:1
 02.06.2009 - WeeokOfTheMonth:1 - Fx:1
 03.06.2009 - WeeokOfTheMonth:1 - Fx:1
 04.06.2009 - WeeokOfTheMonth:1 - Fx:1
 05.06.2009 - WeeokOfTheMonth:1 - Fx:1
 06.06.2009 - WeeokOfTheMonth:1 - Fx:1
 07.06.2009 - WeeokOfTheMonth:1 - Fx:1
 08.06.2009 - WeeokOfTheMonth:2 - Fx:2
 09.06.2009 - WeeokOfTheMonth:2 - Fx:2
 10.06.2009 - WeeokOfTheMonth:2 - Fx:2
 11.06.2009 - WeeokOfTheMonth:2 - Fx:2
 12.06.2009 - WeeokOfTheMonth:2 - Fx:2
 13.06.2009 - WeeokOfTheMonth:2 - Fx:2
 14.06.2009 - WeeokOfTheMonth:2 - Fx:2
 15.06.2009 - WeeokOfTheMonth:3 - Fx:3
 16.06.2009 - WeeokOfTheMonth:3 - Fx:3
 17.06.2009 - WeeokOfTheMonth:3 - Fx:3
 18.06.2009 - WeeokOfTheMonth:3 - Fx:3
 19.06.2009 - WeeokOfTheMonth:3 - Fx:3
 20.06.2009 - WeeokOfTheMonth:3 - Fx:3
 21.06.2009 - WeeokOfTheMonth:3 - Fx:3
 22.06.2009 - WeeokOfTheMonth:4 - Fx:4
 23.06.2009 - WeeokOfTheMonth:4 - Fx:4
 24.06.2009 - WeeokOfTheMonth:4 - Fx:4
 25.06.2009 - WeeokOfTheMonth:4 - Fx:4
 26.06.2009 - WeeokOfTheMonth:4 - Fx:4
 27.06.2009 - WeeokOfTheMonth:4 - Fx:4
 28.06.2009 - WeeokOfTheMonth:4 - Fx:4
 29.06.2009 - WeeokOfTheMonth:1 - Fx:5
 30.06.2009 - WeeokOfTheMonth:1 - Fx:5
Resim
Resim ....Resim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

syn mrmarman hocam öncelikle teşekkür ediyorum
01.05.2009 - WeeokOfTheMonth:5 - Fx:1
02.05.2009 - WeeokOfTheMonth:5 - Fx:1
03.05.2009 - WeeokOfTheMonth:5 - Fx:1
04.05.2009 - WeeokOfTheMonth:1 - Fx:2
05.05.2009 - WeeokOfTheMonth:1 - Fx:2
06.05.2009 - WeeokOfTheMonth:1 - Fx:2
hocam bu görüntü tam benim istediğim gibi.Fakat verdiğiniz fonksiyonu nasıl kullanacağım biraz açıklama yapabilirimisiniz.Yapmak istedğim şu aslında MonthCalendar seçilmiş olan ayın 01 nolu tarihden başlayarak ayın sonuna kadar (28-29-30-31 çeken aylarada bakarak) bunu bir döngü ile ile her günün hafta sayı numarasını almak istiyorum.Ki bunu yapmışsınız zaten

ve yine bu döngü içinde çalışırken

a:Integer;
Begin
for a:=01 to 31 do// integer 01 olmaz ama örnek olsun diye yazdım
begin
01 nolu günden den başlayarak hafta sayısını hesaplayacak

if 1. hafta ise şunu yap
.......
if 2. hafta ise bubu yap
.....

.......

end;
next;

gibi bir işlem yaptırmaya çalışıyorum.Fakat bir türlü yapamadım hafta numaralarından dolayı. :(
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Tarihhe göre hafta

Mesaj gönderen mrmarman »

Forma 1 tane Memo bir de button koy, aşağıdaki procedure'u oluştur. Tarih yerine herhangi bir tarihi ata. Tarihin hangi günü olduğu önemli değil, önemli olan yıl ve ayı alabilecek bir tarih olması. :idea:

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Tarih : TDate;
  i     : Word;
begin
  Tarih := EncodeDate(2009, 5, 1);
  Memo1.Clear;
  for i := DayOf( StartOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) to DayOf( EndOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) do
  begin
    Tarih := EncodeDate( YearOf(Tarih), MonthOf(Tarih), i);
    Memo1.Lines.Add( Format('%s - HaftaNo : %d', [ DateToStr(Tarih), HaftaNo(Tarih) ]) );
    case HaftaNo(Tarih) of
    1: ;// Hafta no 1 olan zaman yapılacaklar..
    2: ;// Hafta no 2 olan zaman yapılacaklar..
    3: ;// Hafta no 3 olan zaman yapılacaklar..
    4: ;// Hafta no 4 olan zaman yapılacaklar..
    5: ;// Hafta no 5 olan zaman yapılacaklar..
    end;
  end;
end;
Ürün Kümesi Şöyle

Kod: Tümünü seç

01.05.2009 - HaftaNo : 1
02.05.2009 - HaftaNo : 1
03.05.2009 - HaftaNo : 1
04.05.2009 - HaftaNo : 2
05.05.2009 - HaftaNo : 2
06.05.2009 - HaftaNo : 2
07.05.2009 - HaftaNo : 2
08.05.2009 - HaftaNo : 2
09.05.2009 - HaftaNo : 2
10.05.2009 - HaftaNo : 2
11.05.2009 - HaftaNo : 3
12.05.2009 - HaftaNo : 3
13.05.2009 - HaftaNo : 3
14.05.2009 - HaftaNo : 3
15.05.2009 - HaftaNo : 3
16.05.2009 - HaftaNo : 3
17.05.2009 - HaftaNo : 3
18.05.2009 - HaftaNo : 4
19.05.2009 - HaftaNo : 4
20.05.2009 - HaftaNo : 4
21.05.2009 - HaftaNo : 4
22.05.2009 - HaftaNo : 4
23.05.2009 - HaftaNo : 4
24.05.2009 - HaftaNo : 4
25.05.2009 - HaftaNo : 5
26.05.2009 - HaftaNo : 5
27.05.2009 - HaftaNo : 5
28.05.2009 - HaftaNo : 5
29.05.2009 - HaftaNo : 5
30.05.2009 - HaftaNo : 5
31.05.2009 - HaftaNo : 5
Resim
Resim ....Resim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

Hocam tututuğun altın olsun ne diyeyim.çok sağol denedim süper.Kendi projeme aktarıp daha detaylı deneyeceğim.çooooook sağol :bravo:
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

Hocam yazdığınız fonksiyona bir de o tarihin gün adını nasıl ekleyebiliriz.DayOfTheWeek komutunu ben dendim ama nafile :roll:
01.05.2009 - HaftaNo : 1 Gün adı :Pazar
02.05.2009 - HaftaNo : 1 Gün adı :Pazartesi
03.05.2009 - HaftaNo : 1 Gün adı :Salı
04.05.2009 - HaftaNo : 2 Gün adı :Çarşamba
05.05.2009 - HaftaNo : 2 Gün adı :Perşembe
06.05.2009 - HaftaNo : 2 Gün adı :Cuma

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Tarih : TDate;
  i     : Word;
begin
  Tarih := EncodeDate(2009, 5, 1);
  Memo1.Clear;
  for i := DayOf( StartOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) to DayOf( EndOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) do
  begin
    Tarih := EncodeDate( YearOf(Tarih), MonthOf(Tarih), i);
    Memo1.Lines.Add( Format('%s - HaftaNo : %d', [ DateToStr(Tarih), HaftaNo(Tarih) ]) );
    case HaftaNo(Tarih) of
    1: ;// Hafta no 1 olan zaman yapılacaklar..
Haftası1 olup 1.pazartesi ise şunu yap ,salı ise bunu yap,çarşamba ise bunu yap............pazar a kadar
    2: ;// Hafta no 2 olan zaman yapılacaklar..
Haftası2 olup geriye kalan tarihe göre başlatıp ....pazarteisi ise şunu yap, .....salı ise bunu yap,.....çarşamba ise bunu yap............pazar a kadar
    3: ;// Hafta no 3 olan zaman yapılacaklar..
    4: ;// Hafta no 4 olan zaman yapılacaklar..
    5: ;// Hafta no 5 olan zaman yapılacaklar..
    end;
  end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Tarihhe göre hafta

Mesaj gönderen mrmarman »

DayOfWeek() fonksiyonu günü verir. Case içinde bir alt seviye Case bloğu daha koyacaksın. Eğer hangi rakamların hangi günleri ifade ettiğini merak ediyorsan aşağıdaki fonksiyonu hazırladım.

Kod: Tümünü seç

Function  HaftaninGunu(Tarih : TDate): String;
begin
  Case DayOfWeek( Tarih ) of
    2: Result := 'Pazartesi';
    3: Result := 'Salı';
    4: Result := 'Çarşamba';
    5: Result := 'Perşembe';
    6: Result := 'Cuma';
    7: Result := 'Cumartesi';
    1: Result := 'Pazar';
  end; // Case
end;
Resim
Resim ....Resim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

Hocam fonksiyonlarla hiç aram yok ne sihir yapabildim nede ülizyon :oops:
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Tarihhe göre hafta

Mesaj gönderen mrmarman »

Kod: Tümünü seç

Function HaftaNo(Tarih:TDate):Word;
Var
  DummyTarih  : TDate;
begin
  DummyTarih  := EncodeDate(YearOf(Tarih), MonthOf(Tarih), 01);
  Result      := 1;
  While Int(DummyTarih) <> Int(Tarih) do begin
    If (DayOfWeek(DummyTarih) = 1) and (DayOf(DummyTarih)>1)
      then Inc(Result); // her Pazar haftayı 1 arttır...
    DummyTarih := IncDay(DummyTarih);
  end;
end;

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

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Tarih : TDate;
  i     : Word;
begin
  Tarih := EncodeDate(2009, 5, 1);
  Memo1.Clear;
  for i := DayOf( StartOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) to DayOf( EndOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) do
  begin
    Tarih := EncodeDate( YearOf(Tarih), MonthOf(Tarih), i);
    Memo1.Lines.Add( Format('%s - HaftaNo : %d - %s', [ DateToStr(Tarih), HaftaNo(Tarih), HaftaninGunu( Tarih ) ]) );
    case HaftaNo(Tarih) of
    1: ;// Hafta no 1 olan zaman yapılacaklar..
    2: ;// Hafta no 2 olan zaman yapılacaklar..
    3: ;// Hafta no 3 olan zaman yapılacaklar..
    4: ;// Hafta no 4 olan zaman yapılacaklar..
    5: ;// Hafta no 5 olan zaman yapılacaklar..
    end;
  end;
end;

Kod: Tümünü seç

01.05.2009 - HaftaNo : 1 - Cuma
02.05.2009 - HaftaNo : 1 - Cumartesi
03.05.2009 - HaftaNo : 1 - Pazar
04.05.2009 - HaftaNo : 2 - Pazartesi
05.05.2009 - HaftaNo : 2 - Salı
06.05.2009 - HaftaNo : 2 - Çarşamba
07.05.2009 - HaftaNo : 2 - Perşembe
08.05.2009 - HaftaNo : 2 - Cuma
09.05.2009 - HaftaNo : 2 - Cumartesi
10.05.2009 - HaftaNo : 2 - Pazar
11.05.2009 - HaftaNo : 3 - Pazartesi
12.05.2009 - HaftaNo : 3 - Salı
13.05.2009 - HaftaNo : 3 - Çarşamba
14.05.2009 - HaftaNo : 3 - Perşembe
15.05.2009 - HaftaNo : 3 - Cuma
16.05.2009 - HaftaNo : 3 - Cumartesi
17.05.2009 - HaftaNo : 3 - Pazar
18.05.2009 - HaftaNo : 4 - Pazartesi
19.05.2009 - HaftaNo : 4 - Salı
20.05.2009 - HaftaNo : 4 - Çarşamba
21.05.2009 - HaftaNo : 4 - Perşembe
22.05.2009 - HaftaNo : 4 - Cuma
23.05.2009 - HaftaNo : 4 - Cumartesi
24.05.2009 - HaftaNo : 4 - Pazar
25.05.2009 - HaftaNo : 5 - Pazartesi
26.05.2009 - HaftaNo : 5 - Salı
27.05.2009 - HaftaNo : 5 - Çarşamba
28.05.2009 - HaftaNo : 5 - Perşembe
29.05.2009 - HaftaNo : 5 - Cuma
30.05.2009 - HaftaNo : 5 - Cumartesi
31.05.2009 - HaftaNo : 5 - Pazar
Resim
Resim ....Resim
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Tarihhe göre hafta

Mesaj gönderen Battosai »

haydarxxx yazdı:Hocam fonksiyonlarla hiç aram yok ne sihir yapabildim nede ülizyon :oops:
Burda pek yeni değilsiniz aslında verilen fonksiyonları nasıl kullanılacağını çözmek çok zor bir iş değil.... sanırsam biraz temel programlama bilgisi eksiğiniz var....program yapmaya niyetlendiyseniz fonksiyolarla aram yok deme lüksünüz yoktur...
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

sy mrmarman teşekür ediyorum.
Burda pek yeni değilsiniz aslında verilen fonksiyonları nasıl kullanılacağını çözmek çok zor bir iş değil.... sanırsam biraz temel programlama bilgisi eksiğiniz var....program yapmaya niyetlendiyseniz fonksiyolarla aram yok deme lüksünüz yoktur...
Battosai
Doğru diyorsunuz eleştirinize bir sözüm yok.Bana ne önerirsiniz kaynak olarak.Forumlarda soru/cevap bağlantılarına göre fonksiyon yazmak benim için mümkün değil.Nereden başlamlıyım.Yönlendirirseniz memnun olurum
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Tarihhe göre hafta

Mesaj gönderen haydarxxx »

mrmarman hocam case blokuna kod yazıyorum fakat bir türlü işletemiyorum :?

5 tane tablom ve bu tabloların her birinde alan adı olarak haftanın 7 gün adı var(pazartesi ,salı çarşamba....)
tablo1 (1.hafta )
Pazartesi-Salı-Çarşamba-Perşembe-Cuma-Cumartesi-Pazar
tablo2 (2.hafta )
Pazartesi-Salı-Çarşamba-Perşembe-Cuma-Cumartesi-Pazar
tablo3 (3.hafta )
Pazartesi-Salı-Çarşamba-Perşembe-Cuma-Cumartesi-Pazar
.....................................
................

Hocam verileri katarmak istediğim başka bir aktarmatablom var 1den......................31 e kadar alan adı olan

haftası 1 olan ve ilk günden başlayarak örneğin Cuma 1.hafta ve 1.gün cuma ise tablo1 den cuma verisini al aktarmatablomun 1. alanına,2.gün tablo1 den cumartesi verisini al aktarmatablom dan 2.alana .................1 hafta bitip

2. haftaya geçtiğinde ki ilk günü pazartesi (4.gün) bu sefer tablo2 den pazartesi verisini al aktarmatablom dan 4.alana yaz.............

Kod: Tümünü seç

Var
  Tarih : TDate;
  i     : Word;
begin
  Tarih := MonthCalendar1.date;
  Memo1.Clear;
  for i := DayOf( StartOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) to DayOf( EndOfAMonth( YearOf(Tarih), MonthOf(Tarih) )) do
  begin
    Tarih := EncodeDate( YearOf(Tarih), MonthOf(Tarih), i);
    Memo1.Lines.Add( Format('%s - HaftaNo : %d - %s', [ DateToStr(Tarih), HaftaNo(Tarih), HaftaninGunu( Tarih ) ]) );
    case HaftaNo(Tarih) of
    1: // Hafta no 1 olan zaman yapılacaklar..
if HaftaninGunu(Tarih)='Pazartesi' then //ilkgün pazartesi ise 1.tablodan veri alışı
IBDataSet7.edit;
IBDataSet7.FieldByName('1').AsString:=IBDataSet1.FieldByName('PZT').AsString;
IBDataSet7.FieldByName('2').AsString:=IBDataSet1.FieldByName('SAL').AsString;
IBDataSet7.FieldByName('3').AsString:=IBDataSet1.FieldByName('CRB').AsString;
IBDataSet7.FieldByName('4').AsString:=IBDataSet1.FieldByName('PRB').AsString;
IBDataSet7.FieldByName('5').AsString:=IBDataSet1.FieldByName('CUM').AsString;
IBDataSet7.FieldByName('6').AsString:=IBDataSet1.FieldByName('CMT').AsString;
IBDataSet7.FieldByName('7').AsString:=IBDataSet1.FieldByName('PAZ').AsString;
IBDataSet7.post  ;
end;
if HaftaninGunu(Tarih)='Salı' then  // ilkgün salı ise
begin
IBDataSet7.edit;
IBDataSet7.FieldByName('1').AsString:=IBDataSet1.FieldByName('SAL').AsString;
IBDataSet7.FieldByName('2').AsString:=IBDataSet1.FieldByName('CRB').AsString;
IBDataSet7.FieldByName('3').AsString:=IBDataSet1.FieldByName('PRB').AsString;
IBDataSet7.FieldByName('4').AsString:=IBDataSet1.FieldByName('CUM').AsString;
IBDataSet7.FieldByName('5').AsString:=IBDataSet1.FieldByName('CMT').AsString;
IBDataSet7.FieldByName('6').AsString:=IBDataSet1.FieldByName('PAZ').AsString;
IBDataSet7.post ;
end;
..............
.............

2: // Hafta no 2 olan zaman yapılacaklar..
if HaftaninGunu(Tarih)='Pazartesi' then //ilkgün pazartesi ise 2.tablodan veri alışı
IBDataSet7.edit;
IBDataSet7.FieldByName('8').AsString:=IBDataSet2.FieldByName('PZT').AsString;
IBDataSet7.FieldByName('9').AsString:=IBDataSet2.FieldByName('SAL').AsString;
IBDataSet7.FieldByName('10').AsString:=IBDataSet2.FieldByName('CRB').AsString;
IBDataSet7.FieldByName('11').AsString:=IBDataSet2.FieldByName('PRB').AsString;
IBDataSet7.FieldByName('12').AsString:=IBDataSet2.FieldByName('CUM').AsString;
IBDataSet7.FieldByName('13').AsString:=IBDataSet2.FieldByName('CMT').AsString;
IBDataSet7.FieldByName('14').AsString:=IBDataSet2.FieldByName('PAZ').AsString;
IBDataSet7.post  ;
end;
if HaftaninGunu(Tarih)='Salı' then  // ilkgün salı ise
begin
IBDataSet7.edit;
IBDataSet7.FieldByName('8').AsString:=IBDataSet2.FieldByName('SAL').AsString;
IBDataSet7.FieldByName('9').AsString:=IBDataSet2.FieldByName('CRB').AsString;
IBDataSet7.FieldByName('10').AsString:=IBDataSet2.FieldByName('PRB').AsString;
IBDataSet7.FieldByName('11').AsString:=IBDataSet2.FieldByName('CUM').AsString;
IBDataSet7.FieldByName('12').AsString:=IBDataSet2.FieldByName('CMT').AsString;
IBDataSet7.FieldByName('13').AsString:=IBDataSet2.FieldByName('PAZ').AsString;
IBDataSet7.post ;
end;
..............
.............
 End; end; end;
IBDataSet7 alanlar memodaki tarihle eşleşerek başka bir tablodan veri alacak.1. hafta olanları tablo1 den,2.hafta olanları tablo 2 den. alcak.......................
İşin içinden bir türlü çıkamadım hocam yaa :N(
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Tarihhe göre hafta

Mesaj gönderen mrmarman »

ilahi hocam...

Öyle bir kurgu hazırlamışsın ki :lol:

Saan gönderdiğim fonksiyonu hatırlatayım. DayOfWeek( Tarih ) ile olan case bloğunda ne yazıyor ?

Kod: Tümünü seç

    2: Result := 'Pazartesi';
    3: Result := 'Salı';
    4: Result := 'Çarşamba';
    5: Result := 'Perşembe';
    6: Result := 'Cuma';
    7: Result := 'Cumartesi';
    1: Result := 'Pazar';
Bu bağlamda daha anlaşılır bir kod yazmadıkça sen kabolursun, biz bişey anlamayız. En azından anlamak için zaman ayırmayız. Kodlarını düzenledikten sonra da tam olarak ne yapmak istediğini açıklarsan belki daha önce benzer proje geliştrimiş kimse vardır. Tecrübelerini paylaşır.

Senin için örnek düzenleme yaptım aşağıda bulacaksın.

Kod: Tümünü seç

    case HaftaNo(Tarih) of
    // HaftaNo(1) //
    1: // HaftaNo(1) olan zaman yapılacaklar..
    begin
      case DayOfWeek( Tarih ) of
        2: // Pazartesi
          begin //ilkgün pazartesi ise 1.tablodan veri alışı
            IBDataSet7.edit;
            IBDataSet7.FieldByName('1').AsString := IBDataSet1.FieldByName('PZT').AsString;
            IBDataSet7.FieldByName('2').AsString := IBDataSet1.FieldByName('SAL').AsString;
            IBDataSet7.FieldByName('3').AsString := IBDataSet1.FieldByName('CRB').AsString;
            IBDataSet7.FieldByName('4').AsString := IBDataSet1.FieldByName('PRB').AsString;
            IBDataSet7.FieldByName('5').AsString := IBDataSet1.FieldByName('CUM').AsString;
            IBDataSet7.FieldByName('6').AsString := IBDataSet1.FieldByName('CMT').AsString;
            IBDataSet7.FieldByName('7').AsString := IBDataSet1.FieldByName('PAZ').AsString;
            IBDataSet7.post  ;
          end; // 2-Pazartesi
      end;
        3: // Salı
          begin
            IBDataSet7.edit;
            IBDataSet7.FieldByName('1').AsString:=IBDataSet1.FieldByName('SAL').AsString;
            IBDataSet7.FieldByName('2').AsString:=IBDataSet1.FieldByName('CRB').AsString;
            IBDataSet7.FieldByName('3').AsString:=IBDataSet1.FieldByName('PRB').AsString;
            IBDataSet7.FieldByName('4').AsString:=IBDataSet1.FieldByName('CUM').AsString;
            IBDataSet7.FieldByName('5').AsString:=IBDataSet1.FieldByName('CMT').AsString;
            IBDataSet7.FieldByName('6').AsString:=IBDataSet1.FieldByName('PAZ').AsString;
            IBDataSet7.post ;
          end; // 3-Salı
      end; // case DayOfWeek( Tarih ) of
    end; // HaftaNo(1)

    // HaftaNo(2) //
    2:  // HaftaNo(2) olan zaman yapılacaklar..
    begin
      case DayOfWeek( Tarih ) of
        2: // Pazartesi
          begin //ilkgün pazartesi ise 2.tablodan veri alışı
            IBDataSet7.edit;
            IBDataSet7.FieldByName('8').AsString:=IBDataSet2.FieldByName('PZT').AsString;
            IBDataSet7.FieldByName('9').AsString:=IBDataSet2.FieldByName('SAL').AsString;
            IBDataSet7.FieldByName('10').AsString:=IBDataSet2.FieldByName('CRB').AsString;
            IBDataSet7.FieldByName('11').AsString:=IBDataSet2.FieldByName('PRB').AsString;
            IBDataSet7.FieldByName('12').AsString:=IBDataSet2.FieldByName('CUM').AsString;
            IBDataSet7.FieldByName('13').AsString:=IBDataSet2.FieldByName('CMT').AsString;
            IBDataSet7.FieldByName('14').AsString:=IBDataSet2.FieldByName('PAZ').AsString;
            IBDataSet7.post  ;
          end; // 2 - Pazartesi
      end;
        3: // Salı
          begin
            IBDataSet7.edit;
            IBDataSet7.FieldByName('8').AsString:=IBDataSet2.FieldByName('SAL').AsString;
            IBDataSet7.FieldByName('9').AsString:=IBDataSet2.FieldByName('CRB').AsString;
            IBDataSet7.FieldByName('10').AsString:=IBDataSet2.FieldByName('PRB').AsString;
            IBDataSet7.FieldByName('11').AsString:=IBDataSet2.FieldByName('CUM').AsString;
            IBDataSet7.FieldByName('12').AsString:=IBDataSet2.FieldByName('CMT').AsString;
            IBDataSet7.FieldByName('13').AsString:=IBDataSet2.FieldByName('PAZ').AsString;
            IBDataSet7.post ;
          end; // 3 - Salı
        end; // case DayOfWeek( Tarih ) of
      end; // HaftaNo(2)
    end; // case HaftaNo(Tarih) of
Resim
Resim ....Resim
Cevapla