Skip to main content

AccessTr.neT


DLookup İşlevi

tdsharun
tdsharun
39
47659

DLookup İşlevi

#1
Belirtilen kayıt kümesinden etkialanı (etki alanı: Tablo, sorgu veya Sql deyimi tarafından tanımlanan bir kayıt kümesi) belirli bir alanın değerini almak için kullanılır.

DLookup işlevini kullanarak başka bir tablo veya sorgudan değer arayabilir ve görüntüleyebilirsiniz. Dlookup işlevinde üç değişken kullanılır:

• Değerini aramak istediğiniz alan adı
• Alanın bulunduğu tablo veya sorgu
• Kayıt aramak için kullanılacak ölçüt (Kriter)

Sözdizimi

Kod:
DLookup(ifade, etkialanı, [ölçütler])
NOT: Sözdizimi VBA'ya göre verilmiştir. Form ve raporlarda kullanılırken aradaki işaret virgül yerine noktalı virgüldür.

DLookup işlevi sözdizimindeki bağımsız değişkenler ile ilgili ayrıntılı açıklama için DSum İşlevini anlatırken yapmış olduğum açıklamaları okumanızı tavsiye ederim.

Şimdi farklı durumlarda Dlookup işlevinin nasıl kullanıldığına bakalım:

String ifadeler için (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter='n'")
Numara Alanları için (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter=n")
Tarih alanları için (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter=#date#")
Form kontrolleri ile işlem (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter = " & forms!FormAdı!Formdaki Kontrolün Adı)
Formdaki String değerler için (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter = '" & forms!FormAdı!Formdaki Kontrolün Adı & "'")
Örnek: "[KategoriNo] = ' " & Formlar![Ürünler]![KategoriNo] & " ' "

Formdaki Tarih Alanı için (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter=#" & forms!FormAdı!Formdaki Kontrolün Adı3 & "#")
Formda Çoklu Kriter (Üçüncü satır tarih alanları için) (VBA'da)
Kod:
DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter1 = " & forms!FormAdı!Formdaki Kontrolün Adı1 & " AND Kriter2 = '" & forms!FormAdı!Formdaki Kontrolün Adı2 & "'" & " AND Kriter3 = #" & forms!FormAdı!Formdaki Kontrolün Adı3 & "#" )
Formda iç içe Dlookup (VBA'da)
Kod:
DLookup("IlAdi", "tblIller", "ID='" & DLookup("IL", "BURO") & "'")
Açıklamalar

DLookup işlevi ölçütlerde belirtilen bilgileri temel alan tek bir alan değerini döndürür. Ölçütlerin isteğe bağlı bir bağımsız değişken olmasına karşın, ölçütler için bir değer belirtmezseniz, Dlookup işlevi etki alanında rasgele bir değer döndürür.

Hiçbir kayıt ölçütleri karşılamazsa veya etki alanı bir kayıt içermiyorsa, Dlookup işlevi Boş değer döndürür.

Birden çok alan ölçütleri karşılıyorsa, Dlookup işlevi ilk örneği döndürür.

Ölçüt kullanılmadan kullanılacak olursa belirtilen alandaki ilk kaydı döndürür.

DLookup işlevinin döndürdüğü alan değerinin benzersiz olmasını sağlayan ölçütler belirtmeniz gerekir. Dlookup işlevinin benzersiz bir değer döndürmesini sağlamak için, aşağıdaki örnekteki [Çalışan Kimliği] gibi bir birincil anahtar (birincil anahtar: Değeri veya değerleri, tablodaki her kaydı benzersiz olarak tanımlayan bir veya birden çok alan (sütun). Birincil anahtar, Null (Boş) değerlere izin veremez ve her zaman benzersiz bir dizini olmalıdır. Birincil anahtar, tabloyu diğer tablolardaki yabancı anahtarlarla ilişkilendirmek için kullanılır.) değerini ölçütlerinizde kullanmak daha doğru bir yaklaşım olacaktır.

Kod:
Dim Deger As Variant
Deger = DLookup("[Soyadı]", "Çalışanlar", "[Çalışan Kimliği] = 1")

DLookup işlevini ister bir makro veya modülde, isterse bir sorgu ifadesinde ya da hesaplanmış denetimde kullanın, doğru hesaplanacağından emin olmak için ölçütler bağımsız değişkenini dikkatle oluşturmanız gerekir.

Form veya raporunuzun kayıt kaynağında olmayan bir alanın değerini görüntülemek için Dlookup işlevini kullanabilirsiniz. Örneğin, Sipariş Ayrıntıları tablosunu temel alan bir formunuz olsun. Bu form SiparişKimliği, ÜrünKimliği, BirimFiyat, Miktar ve İndirim alanlarını görüntüler. Ancak, ÜrünAdı alanı başka bir tablo olan Ürünler tablosundadır. ÜrünAdı'nı aynı formda görüntülemek için Dlookup işlevini bir hesaplanmış denetimde kullanabilirsiniz.

Görüntülemeniz gereken alan form veya raporunuzun temel aldığı kayıt kaynağı değilse, Dlookup işlevini ayrıca form veya rapor üzerindeki bir hesaplanmış denetimdeki ifadede de kullanabilirsiniz. Örneğin, biraz önce yukarıda da bahsettiğimiz gibi, ÜrünKimliği alanını görüntüleyen ÜrünKimliği adlı bir metin kutusu olan Sipariş Ayrıntıları tablosunu temel almış bir Sipariş Ayrıntıları formunuz olsun. Metin kutusundaki değeri temel alarak Ürünler tablosundan ÜrünAdı aramak için, başka bir metin kutusu oluşturabilir ve Denetim Kaynağı özelliğini aşağıdaki ifadeye ayarlayabilirsiniz:

Kod:
DLookup("[ÜrünAdı]", "Ürünler", "[ÜrünNo] =" & Forms![Sipariş Ayrıntıları]!ÜrünNo)

VBA’da Dlookup Kullanımı

Aşağıdaki örnek, ölçütleri karşılayan kaydın ŞirketAdı alanındaki ad bilgilerini döndürür. Etki alanı Gönderenler tablosudur. Ölçütler bağımsız değişkeni sonuç kayıt kümesini GönderenKimliği 1'e eşit olanlarla sınırlandırır.

Kod:
Dim Deger As Variant
Deger = DLookup("[ŞirketAdı]",  "Nakliyeciler", "[NakliyeciKimliği] = 1")

Gönderenler tablosundan bir sonraki örnek, Dlookup işlevine ölçüt sağlamak için GönderenKimliği form denetimini kullanır. Denetime yapılan başvurunun dizeleri gösteren tırnak işaretleri içine alınmadığına dikkat edin. Bu, Dlookup işlevi her çağrıldığında, Microsoft Office Access uygulamasının denetimden geçerli değeri almasını sağlar.

Kod:
Dim Deger As Variant
Deger = DLookup("[ŞirketAdı]", "Nakliyeciler", "[NakliyeciKimliği] = " & Formlar!Nakliyeciler!NakliyeciKimliği)

Başka bir örnek: Tedarikçiler tablosundaki TedarikçiKimliği ile Ürünler formundaki Tedarikçikimliği denetimini eşitler ve bu kimlik numarasına ait KişiAdı’nı görüntüler.

Kod:
Dim Deger As Variant
Deger = DLookup("[KişiAdı]","[Tedarikçiler]","[TedarikçiKimliği]=" & Formlar!Ürünler!TedarikçiKimliği)

Sonraki örnek, değeri almak için Aranan değişkenini kullanır.

Kod:
Dim Aranan As Integer
Dim Deger As Variant

Aranan = 1
Deger = DLookup("[ŞirketAdı]", "Nakliyeciler", "[NakliyeciKimliği] = " & Aranan)

Bir de Dlookup ile mükerrer kayıt kontrolü yapalım:

Kod:
If MetinKutusuAdi = DLookup("[AlanAdi]", "[TabloAdi]", "[AlanAdi]= Forms![FormAdi]!MetinKutusuAdi") Then
MsgBox "Bu Kayıt Zaten Var", vbOKOnly, "UYARI..."
Undo
MetinKutusuAdi.SetFocus
Else
End If

DLookup kullanmadan Açılan Kutudaki seçime göre formdaki metin kutularına bilgi aktarmak da mümkündür. Bunun için Sayın mehmetdemiral hocamın yapmış olduğu anlatımı ve örneği incelemenizi tavsiye ederim.

Anlatıma göre bir örnek hazırladım. Örneği tasarım görünümünde açıp inceleyecek olursanız anlatılanları daha iyi kavrarsınız. Ayrıca örnekte Vba kullanımını ayrıntılı bir şekilde anlatmaya çalıştım.

Bu anlatım, Accesstr.Net Ailesi için tdsharun tarafından hazırlanmış olup "Kaynak Göstermeden" KULLANILAMAZ...

Kaynakça:
1) www.accesstr.net
2) http://office.microsoft.com
3) Sayın Mehmet Demiral Hocam... Img-grin
.rar DLookUp_tdsharun.rar (Dosya Boyutu: 13,4 KB | İndirme Sayısı: 198)
NZ Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
DSum ve Sum Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
DLookup Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
Cevapla
#2
hocam teşekürler, çok faydalı bir makale.
Cevapla
#3
süper ellerine sağlıkkk
Cevapla
#4
Emeğine sağlık Harun çok güzel bir çalışma olmuş... Tebrik ederim.
İnadına, ille de Accesstr.net...
Cevapla
#5
bu faydalı bilgiler için çok teşekkürler
Cevapla
#6
Bilgiler için sağolun hocam
shopen66, 30-03-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task