Dmin Ve Dmax Fonksiyonları
#1
access-sql-15 
Merhaba..

Access veritabanına oluşturduğumuz  bir kayıt kümesindeki En Düşük ve En Yüksek değerleri almak için DMin ve DMax fonksiyonlarını kullanabiliriz..
Bu fonksiyonları sorguda ve VBA editöründe kullanabileceğimiz gibi fom üzerindeki bir denetimde de kullanabiliriz..

Yapısı şu şekilde..:


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


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



İlk kısım yani ifade/alan, değer alacağımız 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 DMin - DMax ile En Düşük - En Yüksek değerleri 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 tüm kayıtlar üzerinden sonuç verir.. Bu kısmı biraz açalım..

Kriteri uygulayacağımız alan, ikinci kısımda işlediğimiz alan ya da sorguda var olan 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 tablosundaki  AlımTarihi alanında bulunan değerlerler içerisindeki değerlerden en yüksek olanını bulmak..

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

Visual Basic
  1. =DMax("AlımTarihi ";"Urunler")



Kriter kısmını yazmadığımız için Urunler tablosunda, tüm kayıtlarda bulunan AlımTarihi alanındaki değerler içerisinden son alım tarihimizi 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 Adı Elma olan kayıtlardan alım yaptığımız En Az adedi öğrenelim..  (Tersi için DMax.. Wink )


Visual Basic
  1. =DMin("Adet";"Urunler";"Adi= 'elma' ")



Ö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 fonksiyonda belirtmiş olduk..  

Ö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 Adet alanındaki değerlerin içerinden en fazla olanını şöyle alıyoruz..

Visual Basic
  1. =DMax("Adet";"Urunler";"UrunId= 2")



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

Visual Basic
  1. =DMax("Adet";"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;

Visual Basic
  1. =DMin("Adet";"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..:

Visual Basic
  1. =DMin("Adet";"Urunler";"Adi= '" & [metin2] & "' ")





Kriter sayısı 2 den fazla ya da tarih veri türü olabilir.. Bu konuda kısıtlamanı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..



Visual Basic
  1. 'Kritersiz kullanım
  2. Me.Metin1 = DMax("Adet", "Urunler")
  3.  
  4. 'Metin türünde bir kriter uyguladık..
  5. Me.Metin1 = DMin("Adet ", "Urunler", "Adi= 'elma' ")
  6.  
  7. 'Metin türünde bir kriteri formdaki denetimden verelim..
  8. Me.Metin1 = DMax("Adet", "Urunler", "Adi= '" & [metin2] & "' ")
  9.  
  10. 'Sayısal türdeki bir kriteri formdaki denetimden verelim..
  11. Me.Metin1 = DMin("Adet ", "Urunler", "UrunId=" & [metin2])







  Alıntı
Bu mesajı beğenenler:
#2
Sayın Taruz;

İyi akşamlar.. Eksik bilgilerimizin olduğu ya da yanlış kullandığımız bu fonksiyonla ilgili açıklamalarınız büyük bir boşluğu dolduracak..

Paylaşımınız için teşekkürler.. İyi hafta sonları...

Selam ve sevgiler.



  Alıntı
Bu mesajı beğenenler:
#3
Değerli bilgileri güzel bir şekilde iletmişsiniz. Sağolun.
Eek VT:Veri Tabanı, AVT: Access VT, MS:Microsoft, Kapaç: Kapa ve aç (rebot ve açkapa saçmalığına çözümüm)
Twitcy Yazan okuyan sağolsun, çözene saygılar. Kolaylaştırınız, zorlaştırmayınız.
? Cinnet geçirmemek için Access 2010'u SP2 ile kullanalım.
? Sürekli sebepsiz hatalar oluyor da AVT uçuyorsa siz de Ofis kurulmunu uçurun çözülüyor. Sorun kurulum dosyanızda! Farklısını bulun!
? VT dağıtıma çıkana kadar bölmek zaman kaybıdır!
{ Veri Tabanı Mantığı } {Access 2010 çökmelerine çözüm } { 60 Günlük Ofis 2010 Pro Türkçe } { Kayıtları Yan Yana Göstermek }
{ Forma Rapora Resim Fotoğraf Eklemek En kolay En Sağlam En Zengin Teknik }



  Alıntı
Bu mesajı beğenenler:
#4
Verdiğiniz değerli bigi ve güzel anlatım için teşekkürler...



  Alıntı
Bu mesajı beğenenler:
#5
Sayın hocam;

Paylaşımlarınıza çok teşekkürler.



  Alıntı
Bu mesajı beğenenler:
#6
Hocam eline sağlık beni o kadar büyük bir dertten kurtardın ki Allah senden razı olsun...



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
access-sql-7 Dfirst Ve Dlast Fonksiyonları Taruz 7 9.593 27-11-2017, 22:10
Son Mesaj: koyuk

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi