Nz Fonksiyonu (İşlevi) Kullanımı Anlatımı
Tarih
25/01/2009 21:36
Konu Sahibi
tdsharun
Yorumlar
17
Okunma
12191
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



tdsharun
>>> O Şimdi Sivil<<<
Kullanici Avatari
Aktif Üye
778
06/11/2008
225
Kütahya
Ofis 2003
31/12/2011,02:16
NZ işlevi

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)


Bir ifadede aritmetik işleç (+, -, * ve /) kullandığınızda, ifadedeki denetimlerden birinin değeri boşsa, bütün ifadenin sonucu boş olur. Buna “Boş Değer Yayma” denir. İfadede kullandığınız denetimlerden birindeki herhangi bir kaydın boş değer içerme olasılığı varsa, NZ işleviyle boş değeri sıfıra dönüştürerek boş değer yayma özelliğinden kaçınabilirsiniz.

Kod:
=Nz([txtAlan1])+Nz([txtAlan2])


Nz işlevi, Boş değer içerme olasılığı bulunan ifadeler için kullanışlıdır. Boş değer içerse bile bir ifadeyi Boş olmayan bir değeri hesaplamaya zorlamak için “sıfır, sıfır uzunluklu bir dize veya belirtilmiş başka bir değeri” döndürmek üzere NZ işlevini kullanın.

Ö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)


Örnek üzerinde açıklamak gerekirse;

Kod:
IIf([AlanAdi] = 100, “EŞİT”, “EŞİT DEĞİL”)


Yukarıdaki açıklamaya göre kodu anlatalım: Eğer, AlanAdi alanı 100’e eşitse EŞİT, değilse EŞİT DEĞİL değerini döndür. Bu örnekte, AlanAdi alanının 100’e eşit olması veya olmaması durumunda ifadenin ne göstermesi gerektiğini tanımladık.

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")


Sonraki örnekte, NZ işlevi ilk ifadeyle aynı işlevselliği sağlar ve istenen sonuç iki yerine bir adımda elde edilir.

Kod:
Dim Hesap As Integer
Dim Sonuc As Integer

Sonuc = IIf(Nz([AlaninAdi]) > 50, "Yüksek", "Düşük")


İsteğe bağlı boşsadeğer bağımsız değişkeni için değer sağlarsanız, variant Boş olduğunda o değer döndürülür. İsteğe bağlı bu bağımsız değişkeni ekleyerek, IIF işlevini içeren bir ifade kullanmaktan kaçınabilirsiniz. Örneğin, aşağıdaki ifade [AlaninAdi] değeri Boş ise, dize döndürmek için IIF işlevini kullanır.

Kod:
Dim Hesap As Integer
Dim Sonuc As Integer

Sonuc = IIf(IsNull([AlaninAdi]), _
    "Alan Boş", [AlaninAdi])


Sonraki örnekte, NZ işlevine sağlanan isteğe bağlı bağımsız değişken, [AlaninAdi] Boş ise, döndürülecek dizeyi sağlar.

Kod:
Sonuc = Nz([AlaninAdi], "Alan Boş")


Örnek
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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


Yukarıda anlatılan konu ile ilgili örnek dosya ekte sunulmuştur. Örnek çalışmada anlatımda geçen her ayrıntıyla ilgili örnek verilmiştir. Örnekte NZ fonksiyonunun SQL’da, formda, raporda ve VBA’da kullanımı ayrıntılı bir şekilde anlatılmıştır. Yine aynı şekilde IIF fonksiyonunun NZ fonksiyonu yerine kullanımı da Vba kodlarında gösterilmiştir.

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ı, http://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... Img-grin

Saygılar...



Ek Dosyalar
.rar   NzIsleviKullanimi.rar (Dosya Boyutu: 35,36 KB / İndirme Sayısı: 709)
Cevapla


hakanuss
Aktif Üye
Kullanici Avatari
Aktif Üye
H....
113
31/10/2008
0
Ankara
Ofis 2003
26/10/2016,07:51
Faydalı anlatım için teşekkür ederim bir kodda görmüştüm merak ediyordum bu fonksiyonu
Cevapla


Puletin
Uzman
Kullanici Avatari
Uzman
1.716
01/11/2008
416
Ülke Dışı
Ofis 2003
29/10/2016,20:35
Teşekkürler TdsHarun Hocam..
Kaplumbağa ya dikkat et...
Sadece başını çıkartıp risk aldığında ilerleyebiliyor...
Cevapla


TUNCAY
Üye
Kullanici Avatari
Üye
21
4
04/11/2008
0
İstanbul
Ofis 2003
22/09/2011,13:21
Çok teşekkür ederim hocam.Bu kadar sade bu kadar güzel anlatım elinize sağlık..10806
Cevapla


syrup
Aktif Üye
Kullanici Avatari
Aktif Üye
196
1
30/10/2008
34
Çanakkale
Ofis 2003
08/10/2011,16:43
harun mükemmel bir iş çıkartmışsın. tebrik ve teşekkürlerimi kabul et kardeşim.
resimresim
Cevapla


tdsharun
>>> O Şimdi Sivil<<<
Kullanici Avatari
Aktif Üye
778
06/11/2008
225
Kütahya
Ofis 2003
31/12/2011,02:16
Teşekkür ederim hocam... İltifat ediyorsunuz...

Bu daha başlangıç hocam. Bütün işlevleri teker teker anlatacam Allah nasip ederse...

Sadece örneklendirme safhası biraz uzun sürüyor. Malum, hata yapmamak lazım.

İltifatınız için tekrar teşekkürler...
Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
Exclamation Access Sql Server Bağlantısı Ve Ağda Kullanımı. Mecnun24 1 1.450 07/06/2015, 20:24 ozanakkaya
  DLookup İşlevi tdsharun 39 25.128 01/12/2014, 10:57 mengene2
  DSum ve Sum İşlevi tdsharun 17 12.986 11/09/2011, 14:37 alitaha
  Grafik Kullanımı accessman 6 2.515 11/08/2010, 09:39 derer
  procedure kullanımı accessman 3 1.956 03/02/2010, 22:54 ercansahin


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya