Yazdır

Ms Access Dersleri : DLookUp, DCount, DSum Gibi Komutlarda Tarih Kriteri Problemi

on .

Microsoft Access ile herhangi bir zamanda alakasız problem yaşamanız gayet normaldir. Sürekli kullanılan DLookUp, DCount, DSum, DMax vb. ( etki alanı komutları ) komutlarda en çok problem yaşanılan şey kriter belirleme olsa gerek. Kriterleri ilk öğrendiğiniz tarih kriteri sizi çileden çıkartabilir ama problem etmeyin sonuçta karşınızdaki program Ms Access!

Etki alanı komutlarında kriterler aslında çok zor değildir ve SQL Komutlarındaki SELECT ifadesini karşılamaktadır. Sıkıntı ise Microsoft Access etki alanı komutlarında kriter olarak tarih işin içine girince başlamaktadır. Eğer tarih kriterini girerken gg.aa.yyyy gibi Türkiye kullanımına göre yapacak olursanız hata alabilirsiniz. Genelde önerilen şey denetim masasından bölge ve dil ayarlarının değiştirilmesidir ancak benim gibi sisteme altı üstü bir program için müdahele etmeyi sevmeyenlerdenseniz buyrun okumaya devam edin.

Konu sonunda ek dosyada da göreceğiniz gibi bir adet tablomuz ve formumuz var. Tablomuzun adı zumrut_tablo Formumuzun adı ise zumrut_form. Tablomuzda üç alan var : "zumrut_id ( Otomatik Sayı ) , tarih ( Tarih/Saat ) , dolar ( Para Birimi )".

Microsoft Access Tablodaki Alanlar

Tablomuza rastgele beş kayıt ekliyoruz.

Microsoft Access Tablodaki Örnek Veriler

Peşinden formumuzu oluşturuyoruz ve üç adet kontrol ekliyoruz : "metin kutusu ( txt_tarih ) , buton ( btn_kur_ogren ) , liste kutusu ( list_kurlar )".

Microsoft Access Form Göruntüsü

Form tasarım modunda iken butonumuzun üzerine çift tıklayarak Özellikler penceresini açıyoruz.

Microsoft Access Buton Özellikler

Olay sekmesi altındaki Tıklatıldığında satırında üç nokta Microsoft Access Kod Olusturucusu Butonu olan butona tıklayıp Oluşturucu Seç penceresini açıp Kod Oluşturucusu ile yeni kod oluşturuyoruz.

Microsoft Access Olusturucu Seç

Kod Oluşturucusu seçilip Tamam butonuna tıklanınca karşımıza Access VBA penceresi çıkacaktır.

Microsoft Access Vba Buton Tiklanma Olayi

Kodumuz yukarıdaki resimdeki gibidir. Alttaki kod ile yukarıdaki aynıdır.

Microsoft Access 2010 Örnek Program
1
2
3
4
5
6
Private Sub btn_kur_ogren_Click()
 
 
 
 
End Sub

Kodlarımız varsayılan olarak bu şekilde gelir. zumrut_tablo isimli tablomuzdan istediğimiz kaydı alabilmek için DLookup komutunu kullanacağız. DLookup ile alınan değeri sonuc isimli bir değişkene atayacağız. Bunun için sonuc isimli değişkenimizin tanımlamasını yapalım. Hemen peşinden DLookup komutu ile txt_tarih metin kutusunun içine yazdığımız tarihin dolar değerini alalım.

MS Access 2010 DLookup Komutu Tarih Kriteri
1
2
3
4
5
6
7
8
Private Sub btn_kur_ogren_Click()
Dim sonuc As Currency
 
sonuc = DLookup("dolar", "zumrut_tablo", "tarih=#" & txt_tarih & "#")
 
MsgBox "Seçilen tarihin değeri : " & sonuc
 
End Sub

Microsoft Access Dlookup Tarih Kriteri

Yukarıdaki kod yapısını yazdıktan sonra programımızı test edelim. Metin kutusunun içine 05.09.2010 tarihini yazdıktan sonra Kur Öğren butonuna tıklayınca herşey normal gözükmesine rağmen aşağıdaki hatayı alıyoruz.

Microsoft Access Dlookup Tarih Kriteri Hatasi

VBA penceresinde Debug işlemi sonucunda txt_tarih metin kutusundan gelen değerin normal olduğunu göreceksiniz.

Microsoft Access Dlookup Tarih Kriteri Hatasi Debug

Tarih değeri içinde yer alan nokta ( . ) ayıracının problem olması durumu söz konusu olduğundan ayıraç olarak bölü ( / ) işaretini kullanalım.

Microsoft Access Replace Komutu Değiştirme

Kod olarakta aşağıdaki gibidir:

Microsoft Access 2010 Replace Komutu ile Değiştirme
1
2
3
4
5
6
7
8
9
10
11
Private Sub btn_kur_ogren_Click()
Dim sonuc As Currency
Dim degistir As String
 
degistir = Replace(txt_tarih, ".", "/", 1, 2)
 
sonuc = DLookup("dolar", "zumrut_tablo", "tarih=#" & degistir & "#")
 
MsgBox "Seçilen tarihin değeri : " & sonuc
 
End Sub

Yukarıda bahsettiğimiz gibi 05.09.2010 tarihini girdiğimizde aşağıdaki hatayı alıyoruz. Halbuki biz örnek verileri girerken 05.09.2010 diye girmiştik ve kur değeri olarakta 1,77 TL yazmıştık.

Microsoft Access Replace Komutu Değiştirme Hatası

Aldığımız bu hatayı gidermek için tarihimizde yer alan nokta ( . ) karakteri yerine bölü ( / ) karakteri kullanmamızda yetmedi. Peki hata nereden kaynaklanıyor? Tarih kalıbımızı gün/ay/yıl yerine yıl/ay/gün olarak değiştirelim. Bu işlem için Replace komutu yerine Left ve Mid komutlarını kullanmalıyız. Kodumuz aşağıdaki gibi şekillenecek:

Microsoft Access 2010 Örnek Dersleri : Left ve Mid Kullanımı
1
2
3
4
5
6
7
8
9
10
11
Private Sub btn_kur_ogren_Click()
Dim sonuc As Currency
Dim degistir As String
 
degistir = Mid(txt_tarih, 7, 4) & "/" & Mid(txt_tarih, 4, 2) & "/" & Left(txt_tarih, 2)
 
sonuc = DLookup("dolar", "zumrut_tablo", "tarih=#" & degistir & "#")
 
MsgBox "Seçilen tarihin değeri : " & sonuc
 
End Sub


Sadece 5. satırda yer alan degistir değişkeninin yanında yer alan Replace komutu değişti. Mid(txt_tarih, 7, 4) ile txt_tarih metin kutusundaki yıl rakamlarını alıyoruz. Yine Mid(txt_tarih, 4, 2) ile ay kısmını alıyoruz. Bu iki değerin arasında bölü ( / ) işaretini & "/" & ile ekliyoruz. Left(txt_tarih, 2) komutu ise gün kısmını alacak. 

txt_tarih metin kutusuna 04.09.2010 yazdıktan sonra Kur Öğren butonuna tıklayınca aşağıdaki sonuç ile karşılaşırız.

Microsoft Access Örnek Programın Sonucu

Artık programımız doğru bir şekilde bize tarihi veriyor. Konunun sonunda yer alan linkten Microsoft Access 2010 ile hazırlanmış örnek programı indirebilirsiniz.


Yorumlar   

 
0 #2 alephes 30-11-2011 09:42
Ayrıntılı anlatım için çok teşekkürler.
Alıntı
 
 
0 #1 schworse 04-12-2010 22:02
Hoca;

Çok süper kilit nokta paylaşımın için teşekkürler.
Alıntı
 

Yorum ekle


Güvenlik kodu
Yenile

Tags: çok, access, şey, gerek, problem, tarih, komutlarda, kriteri, dcount, dlookup, belirleme, olsa, kriter, yaşanılan

Share:Del.icio.us!Digg!Facebook!Google!Live!Reddit!

Benzer Konular