tarihi manuel ve otomatik olarak arttırmak...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

tarihi manuel ve otomatik olarak arttırmak...

Mesaj gönderen Biltes »

Arkdaşlar merhaba;

Benim şu tarz bir sorunum var; Formda arama yaptım ama istediğim gibi bir örnek bulamadım...
Sorunum şu : tabloda iki tane alanım var biri donemkodu, diğeri donemadi

Örnek olarak :
donemkodu ----------- donemadi
-------------- ----------- -------------
200608 ----------- Ağustos
200609 ----------- Eylül
200610 ----------- Ekim

gibi devam ediyor. 200608 olan tarihi ay ve yıl sonunda yıla ve ay'a göre bir arttırmak istiyorum yani 200608 iken 200609 olacak yıl sonuna geldiği zaman ise 200612 iken 200701 , 200702 gibi devam ecek bu tarz bir olayı biz elle yada programın parametreler bölümünden mesela bir checkbox yardımı ile eğer aktif ise ay sonu geldiğinde son tarihe bakıp yıl ve ay'ı bir arttıracak gibi arkdaşlar. Yapmak istediğim olay bu şekilde. Umarım yeterli derecede açıklayıcı olarak anlatabilmişimdir. Bana göre çok ciddi bir sorun bu asrkdaşlar ama ben yapamadım...
Konu hakkında yardımcı olabilirseniz çok memnun olurum. Herkese şimiden çok teşekkür ediyorum.. Kolay gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
ikut

Re: tarihi manuel ve otomatik olarak arttırmak...

Mesaj gönderen ikut »

Biltes yazdı:Arkdaşlar merhaba;

Benim şu tarz bir sorunum var; Formda arama yaptım ama istediğim gibi bir örnek bulamadım...
Sorunum şu : tabloda iki tane alanım var biri donemkodu, diğeri donemadi

Örnek olarak :
donemkodu ----------- donemadi
-------------- ----------- -------------
200608 ----------- Ağustos
200609 ----------- Eylül
200610 ----------- Ekim

gibi devam ediyor. 200608 olan tarihi ay ve yıl sonunda yıla ve ay'a göre bir arttırmak istiyorum yani 200608 iken 200609 olacak yıl sonuna geldiği zaman ise 200612 iken 200701 , 200702 gibi devam ecek bu tarz bir olayı biz elle yada programın parametreler bölümünden mesela bir checkbox yardımı ile eğer aktif ise ay sonu geldiğinde son tarihe bakıp yıl ve ay'ı bir arttıracak gibi arkdaşlar. Yapmak istediğim olay bu şekilde. Umarım yeterli derecede açıklayıcı olarak anlatabilmişimdir. Bana göre çok ciddi bir sorun bu asrkdaşlar ama ben yapamadım...
Konu hakkında yardımcı olabilirseniz çok memnun olurum. Herkese şimiden çok teşekkür ediyorum.. Kolay gelsin...
Monthof dayof we yearof fonksiyonlarını inselermisin. konuyu tam anlamadım ama bunlar yardımcı olur. aslında doğrudan tarih kullansan bir dolu fonksiyon var ama sen böyle kullanmışsın.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

delphi olmadığı için teorik kod yazıyorum;

Kod: Tümünü seç

function donemarttir(donem: string) string;
var
yil,ay: integer;
begin
yil:=strtoint(copy(donem,1,4));
ay:=strtoint(copy(donem,5,2));
if ay<12 then ay:=ay+1 else 
     begin
     ay:=1;
     yil:=yil+1;
     end;
if ay<10 then donemarttir:=inttostr(yil)+'0'+inttostr(ay) else donemarttir:=inttostr(yil)+inttostr(ay);
end;
bu durumda

Kod: Tümünü seç

donemarttir(200606) ---> 200607 olarak döner
donemarttir(200612)----> 200701 olarak döner
umarım işinizi görür.
kolay gelsin
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Teşekkür ediyorum hocam yazdığınız örnek bana fikir verdi. Bu kodları baz alarak ufak tefek değişiklikler yaptım ve şu anda çalışıyor.
İlginize çok teşekkür ediyorum.
Kolay gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

hocam tam olarak çalışan kodu foruma atarsanız ilerde belki birine daha lazım olur.
saygılarımla
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Tabiki forma veririm. Sonuçta amaç bilgiyi paylaşmak değil mi?

Edit1'e 200608 yazdığını varsayarak kodu kullanıyorum. Siz burada tablonudaki son alanı da kullanabilirsiniz..

Kod: Tümünü seç

var
Clndr : TCalendar;
Sakla : TDate;
begin
memo1.Clear;
Sakla := Date;
ClndR:=TCalendar.Create(Self);
Clndr.Year:=StrToInt(Copy(Edit1.Text,1,4));
Clndr.Month:=StrToInt(Copy(Edit1.Text,5,2));
Clndr.NextMonth;
  Memo1.Lines.Add(Format('%d%0.2d',[Clndr.Year,Clndr.Month]));
Clndr.CalendarDate:=Sakla;
ClndR.Free;
Umarım bu şekilde bir çalışma yapmak isteyenlere yardımcı olabilmişimdir...

Kolay gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Cevapla