Tek tuşla otomatik dönem tanımlama

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

Tek tuşla otomatik dönem tanımlama

Mesaj gönderen Biltes »

Arkadaşlar merhaba;
Bir tane formum var dönem tanımlama diye bu formda
çalışacağım dönemi belirliyorum. Eğer dönem yoksa yeni tanımlayarak tabloya ekliyorum ama manuel olarak. Alanlarım:

Başlangıç Tarihi :
Bitiş Tarihi :
Dönem Adı :
Aktif :

Bunu örnek olarak göstermek gerekirse

Başlangıç Tarihi : 01.11.2005
Bitiş Tarihi : 30.11.2005
Dönem Adı : KASIM-2005
Aktif : EVET

Bu KASIM-2005 dönemi için geçerli butona tıkladığım zaman en son dönemin üzerine yeni dönemi açması yani

Başlangıç Tarihi : 01.12.2005
Bitiş Tarihi : 31.12.2005
Dönem Adı : ARALIK-2005
Aktif : EVET

olarak tabloya yeni kayıt eklemesi gerekiyor ve kasım ayını "PASİF" duruma getirmesi gerekiyor. Ama böyle bir olayı nasıl yapacağımı bir türlü başaramadım. Yani bir sonraki ayın kaç gün geçtiğini felan bunları ayarlamak gerekiyor ama nasıl?

Bana bu konuda yardımcı olabilirseniz çok memnun olurum. Çalışmalarınızda Başarılar Dlerim...
Saygılarımla...
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...
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Selamlar.
Delphi'nin fonksiyonları içinde DaysInMonth (adı tam olarak bu şekilde olmayabilir..) verilen tarihteki ayın kaç gün olduğunu geri döndüren bir fonksiyon var.Bu sizin için bir çıkış olacaktır.
Kolay gele..
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Cevap için tşk ederim;

Delphi'nin fonksiyonları içinde DaysInMonth (adı tam olarak bu şekilde olmayabilir..) verilen tarihteki ayın kaç gün olduğunu geri döndüren bir fonksiyon var.
Ama şöyle bir olay var kasım ayında iken ekle dediğimizde aralık ayına ait istenilen bilgilerin hepsini birden doğru bir şekilde nasıl ekletebilirim. Yani bir ay sonranın hangi ay olduğunu ve bunun başlangıç ve bitiş günlerinin belirlenmesi gibi olaylar hakkında kafamda mantıklı bir cevap bulamadığım için sizlerden yardım istiyorum arkadaşlar...
Herkese çok teşekkür ederim...
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ı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Tarih ve saatle ilgili işinize yarayacak bütün fonksiyonlar:

http://www.delphiturkiye.com/index.php? ... tetime.htm
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

http://www.delphibasics.co.uk/Article.asp?Name=Dates

bu adresi bi incele
tarihle ilgili herşey var burda
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Biltes yazdı:Yani bir ay sonranın hangi ay olduğunu ve bunun başlangıç ve bitiş günlerinin belirlenmesi gibi olaylar hakkında kafamda mantıklı bir cevap bulamadığım için sizlerden yardım istiyorum arkadaşlar...
veri tabanınızdan başlangıç veya bitiş tarihinin en büyüğünü listeletip parçalara ayıracaksınız. Aya 1 ekleyeceksiniz.
Başlangıç tarihi kolay bitiş tarihini de parçaladığınız bilgiyi aşağıdaki gibi kullanarak alabilirsiniz.

Kod: Tümünü seç

 showmessage(inttostr(daysinamonth(2005,2))) ;
yukarıdaki kod 28 döndürür. Girilen yılın ve ayın gün sayısını verir.

Başka bir yerde takıldıysanız bir daha sorun. Benim aktarabileceğim bu kadar mantık olarak.



Kolay gelsin.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Edindiğim bilgileri değerlendirip bir çalışma yapayım. Eğer takıldığım bir yer olursa yine forma yazıcam. İlgilenen herkes için çok tşk ederim..
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...
menderes

Mesaj gönderen menderes »

Kolay gelsin! İşinize yarar diye düşündüm belki, acizane olarak,
Veritabanındaki table de bir sayısal alan tanımlayabilirsiniz. İsterseniz Boolean da olabilir. Aktif dönem için 1 pasif dönem için 0 olarak sql komut ile. Yani aktif dönemi belirleyecekseniz sql komutu ile tabledeki seçili dönem 1 diğer dönemleri 0 yaparsınız.
Mesela çalışılacak dönemi dbgrid içerisinde listelettirip. oradan seçili olanı aktif yapması için bir buton yerleştirebilirsiniz.Aşağıda sayısal alan değil de string alan olarak tanımlanmış bir örnek;

Kod: Tümünü seç

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
//Önce tüm dönemleri pasif yaptık 
DataModul1.ADOQuery1.Close;
DataModul1.ADOQuery1.SQL.Clear;
DataModul1.ADOQuery1.SQL.Add('update DONEM set AKTIF="Pasif"');
DataModul1.ADOQuery1.Prepared:=True;
DataModul1.ADOQuery1.ExecSQL;
//sonra istenilen dönemi aktif yapıyoruz.
DataModul1.ADOQuery1.Close;
DataModul1.ADOQuery1.SQL.Clear;
DataModul1.ADOQuery1.SQL.Add('update DONEM set AKTIF="Aktif" where ID= ' + IntToStr(DBGrid1.DataSource.DataSet.FieldByName('ID').AsInteger); 
DataModul1.ADOQuery1.Prepared:=True;
DataModul1.ADOQuery1.ExecSQL;
 //burada dbgridin bağlı olduğu dataseti aç kapa veya refresh yapmayı unutmayın yenilenen kaydın görünmesi için.
end;
Aceleden oldu umarım işinize yarar. Kolay gelsin.
Cevapla