Dfirst Ve Dlast Fonksiyonları
#1
access-sql-7 
Merhaba..

Access veritabanında oluşturduğumuz  bir kayıt kümesi içerisinden İlk ve Son değerleri almak için DFirst ve DLast fonksiyonlarını kullanabiliriz..
Kayıt kümesi  sorgu ise, bu sorguda vereceğimiz artan veya azalan sıralama bu fonksiyonların döndüreceği değerde etkili olacaktır..

Bu fonksiyonları sorguda ve VBA editöründe kullanabileceğimiz gibi fom üzerindeki bir denetimde de kullanabiliriz..

Yapıları şu şekilde..:


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


DLast("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 DFirst - DLast ile İlk - Son 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  UrunAdı alanında bulunan değerlerler içerisinden sonuncusunun ismini bulmak..

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

Visual Basic
  1. =DLast("UrunAdı ";"Urunler")



Kriter kısmını yazmadığımız için Urunler tablosunda, tüm kayıtlarda bulunan UrunAdı alanındaki değerler içerisinden son ürünün adını 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 ilk tarihi öğrenelim..  (Tersi için DLast.. Wink )


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

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 = DLast("UrunAdi", "Urunler")
  3.  
  4. 'Metin türünde bir kriter uyguladık..
  5. Me.Metin1 = DFirst("AlimTarihi ", "Urunler", "Adi= 'elma' ")
  6.  
  7. 'Metin türünde bir kriteri formdaki denetimden verelim..
  8. Me.Metin1 = DLast("AlimTarihi", "Urunler", "Adi= '" & [metin2] & "' ")
  9.  
  10. 'Sayısal türdeki bir kriteri formdaki denetimden verelim..
  11. Me.Metin1 = DFirst("AlimTarihi ", "Urunler", "UrunId=" & [metin2])







  Alıntı
Bu mesajı beğenenler:
#2
Bu güzel paylaşımınız için teşekkürler..



  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
Anlatım çok özenli ve düzenli ellerinize sağlık. "Keşke örnek dosyada olsaydı" demeden edemiyor insan.



  Alıntı
Bu mesajı beğenenler:
#6
Dlast fonksyonuyla sonuncu barkod numarasini almak istiyorum.Kayitlarim ne kadar artarsa artsin hep ayni kaydi getiriyor.

Visual Basic
  1. varBarkod = DLast("Barkod", "tblAnbar")



Anbar tablosunda Barkod sutunundaki son Barkod kaydini almak istiyorum.son kayit 14789 olmasina ragmen her calistiginda 14599 rakamini aliyor.
Komut dugmesinin tiklama olayina yaziyorum yukaridaki kod satrini.
Sorunu bulamiyorum.
Yardiminiz icin simdiden tesekkurler.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
access-sql-15 Dmin Ve Dmax Fonksiyonları Taruz 20 12.701 06-09-2019, 12:40
Son Mesaj: ÜmitSamlı

Foruma Git:


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