YAŞMATİK ("DateDiff" Fonksiyonu Anlatımı Amaçlı)
#1
[Resim: yasvk8.jpg]

Merhaba;

Aşağıdaki örneği "DateDiff" fonksiyonuna ve formu boşaltarak temizlemeye basit bir örnek olması amacıyla hazırladım.

Bilindiği gibi "DateDiff", tarih aralığını veren bir fonksiyondur ve iki tarih arasındaki farkı gün, ay, yıl, saat, saniye, hafta v.s. cinslerinden gösterebiliriz. Bu fonksiyonu sorgularda, denetimlerimizin "denetim kaynağında" veya VBA kodlarında kullanabiliriz. Ancak kullanım yerine göre aralarında ufak tefek farklılıklar oluyor. Örneğin formumuzda bir alanın denetim kaynağına yazacağımız zaman

=DateDiff("tarihcinsi";[tarih1];[tarih2])

olarak yazabilirken VBA kodlarında

tanımlayacağımızalan = DateDiff("tarihcinsi",[tarih1],[tarih2])

olarak yazmak gerekebiliyor.

Bununla ilgili ayrıntılı bilgiye http://office.microsoft.com/tr-tr/access...11055.aspx adresinden ulaşabilirsiniz.

Yaptığım basit örneğin hazırlanma aşamalarını kısaca anlatırsam sanırım daha doyurucu olur:

Önce tasarım görünümünde boş bir form açtım ve buraya iki tane metin kutusu yerleştirdim. İlk metin kutusuna "yas", ikincisine "bugun" adını verdim. Her iki metin kutusunun giriş maskesi özelliğini de "Kısa Tarih" yaptıktan sonra "bugun" adlı metin kutusunun "Varsayılan Değer" özelliğine =Date() yazdım. Amacım "yas" metin kutusuna doğum tarihimizi girdiğimiz zaman, "bugun" adlı metin kutusundaki (varsayılan değeri bugünün tarihi olan) tarihten "yas" adındaki metin kutusuna girdiğimiz tarihi çıkartarak bize aradaki farkı vermesiydi. Sonucu da birazdan oluşturacağım ilişkisiz metin kutularında yıl, ay, hafta, gün ve saat cinsinde gösterecektim. Bu yüzden -ve uygulamanın biraz daha profesyonel bir görünüm alması için- "bugun" adlı metin kutusunun (form üzerinde görünmemesi için) Biçim sekmesindeki Görünür özelliğini "Hayır" olarak ayarladım. Daha sonra alt alta 5 tane ilişkisiz metin kutusu yerleştirip bunlara sırasıyla "yil", "ay", "hafta", "gun", "saat" adlarını verdim. "yas" adındaki metin kutusuna doğum tarihimizi girdiğimiz zaman (daha önce gizlediğimiz) "bugun" adlı metin kutusundaki tarihten bu tarihi çıkartarak oluşturduğum ilişkisiz metin kutularında benim belirleyeceğim tarih cinsinden farkları göstermesi için her metin kutusunun adı için bir DateDiff fonksiyonu tanımlayarak, bu fonksiyonların tamamını "yas" adlı metin kutusunun "Çıkıldığında" olay yordamına yazdım. (Bu alana doğum tarihini yazdıktan sonra, alandan çıkar çıkmaz, "yil, ay, hafta, gun, saat" metin kutularında sonuç hemen görüntülenecekti).

Sonuçta "yas" adlı metin kutusunun "Çıkıldığında" olay yordamında şu kodlar oluştu:

Visual Basic
  1. Private Sub yas_Exit(Cancel As Integer)
  2. yil = DateDiff("yyyy", [yas], [bugun])
  3. ay = DateDiff("m", [yas], [bugun])
  4. hafta = DateDiff("ww", [yas], [bugun])
  5. gun = DateDiff("d", [yas], [bugun])
  6. saat = DateDiff("h", [yas], [bugun])
  7. End Sub



Yukarıda görüldüğü gibi yılı "yyyy", ayı "m" v.s. olarak tanımladık. Yani kısaca iki tarih arasındaki farkı yil, ay, hafta, gun ve saat cinsinden almak için bu yola başvurduk.

Daha sonra form üzerinde doğum tarihimizi girip hesaplamamız yapıldıktan sonra tekrar formun temizlenerek yeni bir doğum tarihi girilebilmesi amacıyla alanların boşaltılması için bir buton oluşturdum ve butonun "Tıklatıldığında" olay yordamına aşağıdaki kodları yazdım:

Visual Basic
  1. Private Sub Komut20_Click()
  2. Me.yas = ""
  3. Me.yil = ""
  4. Me.ay = ""
  5. Me.hafta = ""
  6. Me.gun = ""
  7. Me.saat = ""
  8. End Sub



Bunun anlamı şuydu: "Ben -oluşturduğum ve "Komut20" adındaki- butona tıkladığım zaman bana yas, yil, ay, hafta, gun, saat alanlarını boş olarak göster."

Formun, alanların ve bazı denetimlerin biçimleriyle oynayıp, gözüme hoş görünen bir biçime soktuktan sonra yil, ay, hafta, gun, saat alanları üzerinde işlem yapmayacağımdan (zaten kodlarla otomatik olarak yapıldığından) ve "yas" alanına doğum tarihini girip "Enter" tuşuyla çıktıktan sonra imlecin bu alanlara gitmemesi amacıyla bu alanların Veri sekmesinden Etkin özelliğini "Hayır", Kilitli özelliğini "Evet" yaptım.

Son olarak Araçlar>Başlangıç yoluyla açılan pencerede bütün onay kutularının işaretini kaldırıp -uygulama açıldığında doğrudan "yasmatik" adını verdiğim formun açılması için "Form/Sayfa Görüntüle" alanına "yasmatik" formunu girdim. Böylelikle uygulamayı açtığımız zaman doğrudan formumuz ekrana gelecek ve diğer veritabanı penceresi, kısayollar, menüler gibi özellikler gözükmeyecek. (Ben yine de kolaylık ve tercih edilebilirlik açısından hem doğrudan formla açılan hem de tüm izinleri açık olan iki uygulamayı da aşağıya ekledim).

NOT: Gerçi çok bilinen bir şey ama doğrudan form görünümüyle açılan uygulamaları tasarım görünümünde açmak ve inceleyebilmek için Shift tuşunu basılı tutarak açabiliriz.

Saygılarımla...


Eklenti Dosyaları
.rar   Yasmatik.rar (Boyut: 11,73 KB / İndirilme: 1.083)
.rar   Yasmatik_tasarim.rar (Boyut: 11,69 KB / İndirilme: 1.062)



  Alıntı
Bu mesajı beğenenler:
#2
Sayın Gitarisyen;

Anlatımlı ve örnekli açıklamalarınıza çok teşekkürler.

Bu tür paylaşımlarınızın devamı dilerim.

Bir aralar "daha yeniyim,acemiyim ...vs."şeklindeki sözlerinizi hatırlıyorum da.
Artık access üstatlarımız arasında haklı yerinizi aldınız.

Selam ve saygılar.



  Alıntı
Bu mesajı beğenenler:
#3
Sayın gitarisyen;

Gününüz aydın, neşeniz ile sağlığınız yerinde, kazancınız bol ve her şey gönlünüzce olsun, öğretmenim...

Bana siteye açtığım bir konu başlığına verdiğiniz yanıtta " 'hoca' sıfatına layık olmadığınızı " belirttiniz. Ben bu sözcüğü "sevgili öğretmen'im" anlamında kullandım ve sizin gönlümdeki yerinizi belirtmek istedim.

Biz, sizi ve yöneticilerimiz sayın beab2005 ile sayın Taruz'u eğitici, yol gösterici, içi sevgi dolu, saygılı ve alçak gönüllü kişilikleriniz ile seviyoruz. Sizler "bizlerin yolumuzu aydınlatan" birer ışıksınız.

Bu siteye getirdiğiniz renk,Türkçe'mizi güzel kullanmadaki özeniniz bizleri, size ve sitemize her geçen daha çok bağlıyor...

Bu paylaşımınız için teşekkürler.

En içten selam, sevgi ve saygılar.



  Alıntı
Bu mesajı beğenenler:
#4
Ben de yaptım oldu. Sayın gitarisyen, konuyu benim anlayabileceğim bir şekilde anlatmışsınız. Çok teşekkür ederim.



  Alıntı
Bu mesajı beğenenler:
#5
Çok güzel hoş bir uygulama ama sadece yaş bulma konusunda hatalı sanırım Smile



  Alıntı
Bu mesajı beğenenler:
#6
Sayın gitarisyen,
Bilgisayar kurslarına meraklı bir öğretmen olarak çalışmlarınızdan çok faydalandım.Teşekkür ediyorum.Biz de hazırladıkça böyle çalışmaları yayınlamalıyız.Bilgi paylaşıldıkça güzeldir.Selamlar.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  BASİT SU FATURASI ÖRNEĞİ - (Sorgu, hesaplamalar ve IIf fonksiyonu anlatımı amaçlı) gitarisyen 33 57.605 25-04-2017, 17:40
Son Mesaj: cihan_dd
  YAŞMATİK ("DateDiff" Fonksiyonu Anlatımı Amaçlı) ahmet114 1 2.379 02-12-2016, 22:26
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi