|
Aşağıda açıklamalarıyla anlatmaya çalıştığım bu
uygulamayı "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
BURADAKİ adresten 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:
|
VBA
Kodu |
|
Private
Sub
yas_Exit(Cancel
As
Integer)
yil
=
DateDiff("yyyy",
[yas],
[bugun])
ay
=
DateDiff("m",
[yas],
[bugun])
hafta
=
DateDiff("ww",
[yas],
[bugun])
gun
=
DateDiff("d",
[yas],
[bugun])
saat
=
DateDiff("h",
[yas],
[bugun])
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:
|
VBA
Kodu |
|
Private
Sub
Komut20_Click()
Me.yas
=
""
Me.yil
=
""
Me.ay
=
""
Me.hafta
=
""
Me.gun
=
""
Me.saat
=
""
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.
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...
|