Anlatıma başlamadan önce anlatımda kullanacağımız terimleri ve anlamlarını vermekte fayda görüyorum.
Nz İşlevinin yazımına bakalım önce:
VBA: Nz(Variant, boşsadeğer)
Form, sorgu, rapor: = Nz(Variant; boşsadeğer)
Dikkat: VBA’da kullanılırken Variant ve boşsadeğer arasında “,” (Virgül) kullanılır. Form, sorgu ve raporda ise “;” (Noktalı Virgül) kullanılır.
Variant: Zorunludur. Veri türünden (Veri Türü: Alanın hangi veri türlerini içerebileceğini belirleyen özelliği. Veri türlerinin arasında, Boole, Tamsayı, Para Birimi, Tek, Çift, Tarih, Dize ve değişken (varsayılan) yer alır) Variant değişkeni. Yani özetle; Formda, raporda, sorguda bir Alanı, Vba kodlarında ise bir Alanı veya bir Değişkeni ifade eder.
Boşsadeğer: Bir variant bağımsız değişkeni Boş ise, döndürülecek değer sağlayan bir Variant'tır. Bu bağımsız değişken, sıfırdan veya sıfır uzunluklu dizeden başka bir değer döndürmenize olanak sağlar. Burada dikkat edilmesi gereken nokta; NZ işlevini bir sorguda deyim içinde, boşsadeğer bağımsız değişkeni olmadan kullanırsanız, sonuçlar, boş değerler içeren alanlarda sıfır uzunluklu bir dize olacaktır. Bu sebeple bir sorgu ifadesinde kullanıldığında, NZ işlevi her zaman boşsadeğer bağımsız değişkenini içermelidir. Yani sorguda toplama yaptırıyorsak şu şekilde olmalıdır:
Kod:
Nz'li Toplama: Nz([txtAlan1];0)+Nz([txtAlan2];0)
Kod:
=Nz([txtAlan1])+Nz([txtAlan2])
Örneğin, txtAlan1 Boş olduğunda txtAlan1+txtAlan2 ifadesi her zaman Boş değerini döndürür. Ancak, Nz(txtAlan1)+ Nz(txtAlan2) ifadesinde txtAlan1 Boş ve txtAlan2 değerinin 2 olduğunu varsayarsak ifade 2 döndürür. Yani sonuç 2 olur.
Nz işlevini çoğunlukla IIF yerine kullanabilirsiniz. Ancak öncelikle IIF işlevinin kullanımı hakkında biraz bilgi verelim:
IIf işlevi, bir koşula bağlı olarak, koşulun doğru veya yanlış olması durumunda doğru veya yanlış değerleri için değer döndürmeye yarayan bir işlevdir. NZ işlevine benzerliği dikkatinizi çekmiştir. Ancak IIF işlevinin kullanım alanı sadece bu konudaki NZ işlevine benzerliği ile sınırlı değildir. Bu konuda sadece NZ işlevi ile benzerliğinden bahsedelim. IIF işlevinin çalışma mantığı şu şekildedir:
Kod:
IIF(KOŞUL, DOĞRUYSADEĞER, YANLIŞSADEĞER)
Kod:
IIf([AlanAdi] = 100, “EŞİT”, “EŞİT DEĞİL”)
Not: IIF işlevi bu kadar kısa bir anlatımla anlatılabilecek bir konu değildir. Ayrıntılara girmeden konumuza devam etmek istiyorum. Daha sonra IIF işlevi ile ilgili ayrıntılı bir konuyu işleyeceğiz.
Şimdi, NZ işlevinin yerine IIF işlevinin kullanımı örneğine bakacak olursak, aşağıdaki kodda, istenen sonucu döndürmek için IIF işlevini içeren iki ifade gereklidir. IIF işlevini içeren ilk ifade olan “Hesap”, bir değişkenin (AlanAdi) değerini denetlemek ve Boş ise sıfıra dönüştürmek için kullanılır.
Kod:
Dim Hesap As Integer
Dim Sonuc As Integer
Hesap = IIf(IsNull([AlaninAdi]), 0, [AlaninAdi])
Sonuc = IIf(Hesap > 50, "Yüksek", "Düşük")
Kod:
Dim Hesap As Integer
Dim Sonuc As Integer
Sonuc = IIf(Nz([AlaninAdi]) > 50, "Yüksek", "Düşük")
Kod:
Dim Hesap As Integer
Dim Sonuc As Integer
Sonuc = IIf(IsNull([AlaninAdi]), _
"Alan Boş", [AlaninAdi])
Kod:
Sonuc = Nz([AlaninAdi], "Alan Boş")
Aşağıdaki örneklerde, bu işlevin Visual Basic for Applications (VBA) modülündeki kullanımı gösterilir. Aşağıdaki örnek, form üzerindeki bir denetimi değerlendirir ve denetimin değerine göre iki dizeden birini döndürür. Denetimin değeri Boş ise, bu yordam Boş değerini sıfır uzunluklu bir dizeye dönüştürmek için NZ fonksiyonunu kullanır.
Kod:
Public Sub CheckValue()
Dim frm As Form
Dim ctl As Control
Dim Sonuc As Variant
Set frm = Formlar!Musteriler
Set ctl = frm!NakilYeri
Sonuc = IIf(Nz(ctl.Value) = vbNullString, _
"Değer Yok", ctl.Value & ".")
MsgBox Sonuc, vbExclamation
End Sub
Anlatımda Faydalanılan Kaynaklar:
http://office.microsoft.com/tr-tr/access...0728911055
http://office.microsoft.com/tr-tr/access...3653491055
http://office.microsoft.com/tr-tr/access...61055.aspx
http://alibal.blogcu.com/access-ifadeler...31751.html
Bu konu anlatımı, www.accesstr.net için tdsharun tarafından yapılmış olup "Kaynak Göstermek Şartıyla" alıntı yapılabilir. Aksi takdirde (Ç)alıntı yapılmış olur. Takdir edersiniz ki bu kadar emekten sonra "çamur" yapma hakkım olur...
Saygılar...