Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Access Dersanesi (http://www.excel.web.tr/forumdisplay.php?f=171)
-   -   DLookUp Fonksiyonu (http://www.excel.web.tr/showthread.php?t=92683)

Taruz 18-12-2010 18:25

DLookUp Fonksiyonu
 
Merhaba..

Sıklıkta kullandığımız fonksiyonların başında gelen bir fonksiyon DLookup fonksiyonu.. Özelliği, bir kayıt kümesine bağlı bir alanda bulunan değeri bize kısa yoldan vermesi.. Kısa yoldan diyorum çünkü DLookup bir yerde kısa yazılmış sorgu deyimidir..

Yapısı şu şekilde..:


DLookUp("ifade/alan", "etkialanı/kayıt kümesi", "kriterler")


İlk kısım yani ifade/alan, değeri çekeceğimiz alanı ifade eder.. Bu kısmı boş bırakamayız.. Bu kısım tablodaki bir alan olabileceği gibi sorguda bulunan bir alan da olabilir.. Sorguda hesaplanarak elde edilmiş (Kalan:[Alınan]-[Verilen] gibi..) veya mevcut alanların dışında oluşturulmuş ifadeleri de kullanabiliriz..

etkialanı/kayıt kümesi, ilk bölümdeki ifade ya da alanın bulunduğu tablo veya sorguyu ifade eder.. İsmini bu kısma yazacağız.. Bu kısmı boş geçemeyiz.. Şunu da unutmadan not düşelim, bu kayıt kaynağı eğer sorgu ise harici parametre istemeyen bir sorgu olmalı.. Parametre kaynağı kapalı sorgularda hata döndürür.. Örneklersek; ölçütünü form1 deki bir metin kutusundan alan bir sorgudan DLookup ile bir değer almak istiyorsak form1 açık olmalı..

kriterler bölümü zorunlu değil. Bu kısmı oluşturmadan yazacağımız deyimler kayıt kümesindeki ilk alanda bulunan değeri verir.. DLookup fonksiyonu genelde kritersiz kullanılmaz zaten.. Bu nedenle bu kısmı biraz açalım..

Kriteri uygulayacağımız alan, ikinci kısımda işlediğimiz alan ya da sorguda varolan bir alan olmalı..

Bu kısımda birden fazla alan ve bununla ilişkili kriter kullanabiliriz.. Örnekleyelim..:

Amacımız bir formda bulunan metin1 isimli metin kutusuna Ürünler tablosunda bulunanan Türüalanındaki bir değeri getirmek..

Önce fonksiyonumuzun ilk iki kısmını oluşturalım..

Kod:


=DLookUp("Tur";"Urunler")

Kriter kısmını yazmadığımız için Urunler tablosundaki ilk kayıtta bulunan Tur değerini aldık..

Bu kısımda şunu da açıklamak lazım.. Bu fonksiyonu form içindeki bir nesnede kullandığımızda başına ( = ) eşittir koymamız gerekir.. Ayrıca kısımları ayıran ( , ) virgül yerine ( ; ) noktalı virgül kullanmalıyız.. (Fonksiyon sorgu içinde kullanılıyorsa da noktalı virgül olmalı)

Şimdi fonksiyona kriter vererek Elma nın türünü öğrenelim..


Kod:

=DLookUp("Tur";"Urunler";"Adi= 'elma' ")


Burada ölçüte aynı tablodaki Adi alanını koyduk ve bize adı elma olan ürünün türünü vermesini istedik..

Ölçütte dikkat etmemiz gerek bir önemli nokta da ölçütte kullandığımız tırnaklardır.. Ölçütü sadece elma olarak yazmış olsaydık fonksiyon bunu bir denetim olarak kabul edecek ([elma]) ve türünü çözemeyecekti.. Biz elma kriterinin başına ve sonuna ( ' ) tek tırnak koyarak ölçütün bir denetim olmadığını ve metin veri türünde olduğunu fonksiyona izah ettik..

Ölçüte vereceğimiz sayısal değerlerde (bu ölçüt bir denetimden gelmiyorsa tabii) tırnak kullanmamıza gerek yok.. Örnekleyelim hemen..:

Ürün numarası 2 olan Ürünümüzün Adını şöyle alıyoruz..



Kod:

=DLookUp("Adi";"Urunler";"UrunId= 2")

Burda da sayısal değeri tırnak koyarak çağıralım..


Kod:

=DLookUp("Adi";"Urunler";"UrunId= " & 2)

Görüldüğü gibi sayısal değerlerde ( " ) çift tırnak kullanıyoruz..

Ölçütümüzü form üzerindeki bir metin kutusuna (ismine metin2 diyelim) yazıp fonksiyona buradan da verebiliriz.. Şöyle ki;


Kod:

=DLookUp("Adi";"Urunler";"UrunId=" & [metin2])

Ölçütle tırnağın birleşimin şekline dikkat!

Ölçütümüz metin türünde, yani ilk verdiğimiz elma örneğimizdeki gibi olsaydı tırnakları bu şekilde kullanmamız gerekirdi..:


Kod:

=DLookUp("Tur";"Urunler";"Adi= '" & [metin2] & "' ")


Şimdi kriter kısmını biraz daha geliştirelim..

UrunAlıs tablosunda bulunan, UrunId numarası 2 olan ürünün 20.10.2009 tarihinde kaç kilo alınmış olduğunu bulalım..


Kod:

=DLookUp("Alinan";"UrunAlim";"UrunId= 2 and AlimTarih= #10-20-2009#")


Ölçütleri şimdi de metin kutularından çağıralım;



Kod:

=DLookUp("Alinan";"UrunAlim";"UrunId=" & [metin2] & " and AlimTarih=#" & Format([metin3];"mm-dd-yyyy") & "#")


Burada dikkat ettiyseniz tarih alanının biçimini değiştirdik.. Sebebi DLookUp fonksiyonun tarih biçimini ay, gün ve yılı olarak istemesi.. Tabii bu durumu denetimlerin ya da alanların biçimini değiştirerek de düzeltebiliriz..

Tarih ölçütüyle bilinmesi gereken diğer ayrıntı da diğer tüm fonksiyonlarda olduğu gibi tarihi belirtecek ( # ) diyez işareti ile kullanılması gerektiğidir..

Kriter sayısı 2 den fazla olabilir.. Bu konuda kıstlamanız yok..

Şimdi tüm bu kullanım şekillerini VBA için de hazırlayıp, burada nasıl kullanılacağını göstererek bir yerde özet çıkartmış olalım ve de konumuzu tamamlayalım..




Kod:

'Kritersiz kullanım
Me.Metin1 = DLookup("Tur", "Urunler")
 
'Metin türünde bir kriter uyguladık..
Me.Metin1 = DLookup("Tur", "Urunler", "Adi= 'elma' ")
 
'Metin türünde bir kriteri formdaki denetimden verelim..
Me.Metin1 = DLookup("Tur", "Urunler", "Adi= '" & [metin2] & "' ")
 
'Sayısal türdeki bir kriteri formdaki denetimden verelim..
Me.Metin1 = DLookup("Adi", "Urunler", "UrunId=" & [metin2])
 
'Sayısal ve Tarih türünde iki ayrı kriteri aynı anda kullanalım..
Me.Metin1 = DLookup("Alinan", "UrunAlim", "UrunId= 2 and AlimTarih= #10-20-2009#")
 
'Sayısal ve Tarih türündeki iki kriteri formdaki denetimlerden verelim..
Me.Metin1 = DLookup("Alinan", "UrunAlim", _"UrunId=" & [metin2] _& " and AlimTarih=#" & Format([metin3], "mm-dd-yyyy") & "#")


Milady Meriç 25-01-2012 00:01

Yeni okuma fırsatım oldu.

Gerçek çok sade ve açıklayıcı bir konu.

Teşekkürler.


Saat 18:29

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.