Tek tuşla otomatik dönem tanımlama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tek tuşla otomatik dönem tanımlama
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...
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...
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Cevap için tşk ederim;
Herkese çok teşekkür ederim...
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...
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.
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...
Tarih ve saatle ilgili işinize yarayacak bütün fonksiyonlar:
http://www.delphiturkiye.com/index.php? ... tetime.htm
http://www.delphiturkiye.com/index.php? ... tetime.htm
http://www.delphibasics.co.uk/Article.asp?Name=Dates
bu adresi bi incele
tarihle ilgili herşey var burda
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
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Merhaba,
Başlangıç tarihi kolay bitiş tarihini de parçaladığınız bilgiyi aşağıdaki gibi kullanarak alabilirsiniz.
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.
veri tabanınızdan başlangıç veya bitiş tarihinin en büyüğünü listeletip parçalara ayıracaksınız. Aya 1 ekleyeceksiniz.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...
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))) ;
Başka bir yerde takıldıysanız bir daha sorun. Benim aktarabileceğim bu kadar mantık olarak.
Kolay gelsin.
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;
Aceleden oldu umarım işinize yarar. Kolay gelsin.
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;