Bireysel Mesaj Gösterim Modu

Görüntülenme: 19291

Access veritabanında SQL sorgularda, dönen kayıtlara otomatik bir numara atanması işlemi için bir komut yoktur. Ve bu özelliğe çoğu kez ihtiyaç duyulur.

Mesela, aylar önce de bu işleve ihtiyaç duymuştum; ancak hayli araştırmama rağmen, tam istediğim şeyi bulamamıştım. Yine de farklı yollarla işimi görmüştüm.

Ve bugün yine böyle bir fonksiyona gereksinim duydum. Ve araştırmaya başladım...
Saatler sonra tam olmasa da, olumlu anlamda bazı sonuçlar elde edebilmiştim.

Örnekleyerek ilerleyeyim.
Aşağıdaki kullanımda, tblUser tablosundan FirstName ve LastName alanları alınıyor. (Tablomuzda 4 adet kayıt olduğunu düşünelim)

SELECT FirstName, LastName FROM tblUser;

Sonuç aşağıdaki gibi olacaktır.

FirstName   LastName
Mustafa Birgin
Mürsel Işık
Mehmet Can
Nisan Kumru

Şimdi, ayrı bir sütun olarak, kayıt sıra numarasını da sonuç tablosuna ekleyelim.

SELECT FirstName, LastName, (SELECT Count(LastName)+1 FROM tblUser AS Tablo1 WHERE Tablo1.ID < Tablo2.ID) AS RowNumber FROM tblUser AS Tablo2;

FirstName   LastName RowNumber 
Mustafa Birgin  1
Mürsel Işık  2
Mehmet Can  3
Nisan Kumru  4

İşi bir adım daha öteleyelim ve belli bir aralıktaki kayıtları döndürmek isteyelim. 
Mesela, yüzlerce kaydı bir GridView nesnesinde, sayfalama kullanırken görüntülerken; tüm kullanıcıları her defasında çekmek yerine, sadece istenenen sayfadaki kayıtları çekmek daha uygun olacaktır. 
Diyelim ki, tablomuzda 2210 kayıt olsun ve GridView kontrolünde her sayfada 100 kayıt listeleniyor olsun. Bu durumda 23 sayfa numaramız olacaktır.
Sözgelimi 8. sayfayı görüntülemek istiyorsak aşağıdaki kullanıma başvurabiliriz.

SELECT * FROM (SELECT (SELECT Count(LastName)+1 FROM tblUser AS Tablo1 WHERE Tablo1.ID < Tablo2.ID) As RowNumber, FirstName, LastName FROM tblUser AS Tablo2)
WHERE RowNumber>700 AND RowNumber<801 ORDER BY RowNumber

Bulduğum yukarıdaki kullanımda, dönen sonuçlara numara atanmıyor ama, kayıtların tablodaki sıra numaraları dönüyor.

Tabloda otomatik artan bir ID alanı oluşturulursa, zaten aynı işi görür, diye düşünülebilir. Ancak ilgili tabloda bazı kayıtlar silindiğinde, ID alanında aralarda bazı değerler atlanmış olur. Bu nedenle yukarıdaki yönteme başvurulabilir.

Yine de, dönen sonuçlara da numara verilipp o numaralara göre işlem yapılabilseydi çok daha güzel olurdu.

Yararlı olması dileğiyle...

Not: Buradaki denemeler Access 2003 bir veritabanı üzerinde yapılmıştır.

Yaralanılan Kaynak:
http://groups.google.com/group/comp.databases.ms-access/browse_frm/thread/db227be5c3a2d2bb/cdb73e9bfb888698

İngilizce kelime ezberleme oyunu: vav.mbirgin.com
Abonelik Bilgisi Abonelik
Kullanıcı Adı:
Parola:
Bilgi Hatırlatma Yeni Üyelik
İletişim | Kullanım Şartları | Reklam Bilgileri | Tüm Üyeler | Ne Nasıl Yapılır? | Arama | RSS | Twitter | Facebook | Youtube

Son Üyeler: Gakk, busbus, siyamiaytar, 1234123123123, Siyami,
Son Oturumlar: