31-07-2010, 20:16
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..:
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..
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.. )
Ö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..
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
- =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.. )
Visual Basic
- =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
- 'Kritersiz kullanım
- Me.Metin1 = DLast("UrunAdi", "Urunler")
-
- 'Metin türünde bir kriter uyguladık..
- Me.Metin1 = DFirst("AlimTarihi ", "Urunler", "Adi= 'elma' ")
-
- 'Metin türünde bir kriteri formdaki denetimden verelim..
- Me.Metin1 = DLast("AlimTarihi", "Urunler", "Adi= '" & [metin2] & "' ")
-
- 'Sayısal türdeki bir kriteri formdaki denetimden verelim..
- Me.Metin1 = DFirst("AlimTarihi ", "Urunler", "UrunId=" & [metin2])
Bulunamayan yerleri bulmak için önce kaybolmak gerekir.
SORU SORMA KILAVUZU
Giriş | Sormadan Önce | İlgili Forumu dikkatlice seçin | Anlamlı ve duruma uygun konu başlıkları kullanın | Anlamsız soru cümleleri kurmayın | Açık, dilbilgisi kurallarına uygun ve sözdizimlerine dikkate ederek yazın | Sorunuz sizin için çok acil olsa bile, çok acil diye yazmayın | Sorununuz hakkında tam ve aydınlatıcı iletiler yazın | Amacınızı belirtin | Problemin belirtilerini tanımlayın, kendi tahminlerinizi değil | Sorunuz hakkında açık olun | Nezaket asla yaralamaz ve bazen oldukça yararlıdır | Boyut her şey değildir! | Kabalıkla ilgilenmek | Cevabı E-Posta ile istemeyin | İnsanlardan özel mesajla cevap vermelerini istemeyin | Eğer cevabı anlamadıysanız | Şayet bir cevap alamazsanız | Sorununuz çözüldükten sonra küçük bir not ile bildirin | Sorulmaması gereken türde sorular | İyi ve kötü sorular
Sorulara nasıl doğru düzgün cevap verilir
Kaptan Hector Barbossa
SORU SORMA KILAVUZU
Giriş | Sormadan Önce | İlgili Forumu dikkatlice seçin | Anlamlı ve duruma uygun konu başlıkları kullanın | Anlamsız soru cümleleri kurmayın | Açık, dilbilgisi kurallarına uygun ve sözdizimlerine dikkate ederek yazın | Sorunuz sizin için çok acil olsa bile, çok acil diye yazmayın | Sorununuz hakkında tam ve aydınlatıcı iletiler yazın | Amacınızı belirtin | Problemin belirtilerini tanımlayın, kendi tahminlerinizi değil | Sorunuz hakkında açık olun | Nezaket asla yaralamaz ve bazen oldukça yararlıdır | Boyut her şey değildir! | Kabalıkla ilgilenmek | Cevabı E-Posta ile istemeyin | İnsanlardan özel mesajla cevap vermelerini istemeyin | Eğer cevabı anlamadıysanız | Şayet bir cevap alamazsanız | Sorununuz çözüldükten sonra küçük bir not ile bildirin | Sorulmaması gereken türde sorular | İyi ve kötü sorular
Sorulara nasıl doğru düzgün cevap verilir