"order by" vermezsek access neden kafasına göre sıralar? - Sayfa 2 - R10.net
  • 12-10-2010, 19:50:32
    #10
    Sayfalar tablonda primary key bir sütun var mı?

    Varsa indexi ona göre alır sıralamayı ona göre basar.

    Yada identity(otomatik sayı) lı bir sütun varsa otomatik sıralamayı öyle alır varsayılan.

    Order by ile mecburen belirtmek zorunda kalırsın. Access in sorunu değil bu.
    https://pcmaker.net​​​​
  • 13-10-2010, 10:03:41
    #11
    pcmaker hocam, primary key ve otomatik sayı, en baştaki id sütunu. kaç kere kontrol ettim, denedim. yeni bi satır ekleyince kendiliğinden sayısını bir artırıyor. satırların tamamını silip de yeni satır ekleyince o saymaya kaldığı yerden devam ediyor. ve anahtar işareti de var başında. access'in sorunu (2003) order by diye belirtmediğim zaman o sütunu da dikkate almıyor olması. resmen kendi kafasına göre veri girişi yapıyor. aşağıdaki mesajlarımı incelerseniz,

    "id" sütunu primary key ve otomatik sayı olarak belirlenmiş bir tabloda, "order by" hiç belirlenmemişken, daha önceden boş olan sira sütunları aynı şu şekilde listelendi:

    id | sira
    ...
    77 | 25
    78 | 8
    79 | 10
    80 | 33
    ...

    ve böyle de devam ediyor herhangi bir mantıksal düzeni bulunmaksızın. yaptığım ise şundan başka birşey değil: (order by silinmiş hali)

    strSQL = "SELECT * FROM Sayfalar"

    sayi = 1
    Do UNTIL objRS.Eof
    objRS("sira") = sayi
    sayi = cint(sayi+1)
    objRS.Update
    objRS.MoveNext : Loop

    yani access'in sorunu burada. en azından benim kullandığım versiyon öyle.

    tüm bunları, aynı sorunla karşılaşan bir arkadaş olursa bilgilensin diye yazdım, yanlış anlamayın.

    ilginize çok teşekkür ederim.
    http://www.kitapdefter.com
  • 13-10-2010, 23:57:32
    #12
    dostum işte indexi otomatik primary key tablosuna göre alıyor.

    MSSQL ve diğer veritabanı sistemlerinde de öyledir. eğer orderby vermezsen istediğin sütuna varsayılan olarak primarykey in sütununa göre orderby çeker.

    mesela metin olan(varchar) bir sütuna primary key koyarsan index otomatik olarak a dan z ye göre sıralar.

    primary key ini şöyle yapabilirsin: sıralanmasını istediğin sütuna verip dene.

    ama primary keyde iki tane aynı değer olamaz bir primarykey olan sütunda.

    Bu arada sira sütunun umarım "metin" değil "sayı" dır.
    https://pcmaker.net​​​​
  • 14-10-2010, 10:03:26
    #13
    hocam ben anlıyorum sizi. yalnız kendimi anlatamadım sanırım. bu posttaki 3. mesajımda da yazdığım üzere;

    Alıntı
    sira satırları boş olduğu için birincil anahtar olan "id"yi dikkate alacağını düşünüyorum. "order by sira asc" yazmasam da zaten yine kafasına göre veriyor değerleri, birincil anahtarı dikkate almıyor. bazen desc olarak veriyor 100,99,98... diye düzenli. tekrar çalıştırdığımda 35,36,24,3.. diye veriyor.
    ilgili sütunu "sayı" olarak göstermiş durumdayım. primary key ise zaten otomatik sayı olarak belirlenmiş durumda. tüm bunlara rağmen order by sira dersem (tamamı boş o satırların) yine de kafasına göre yapıyor. kafasına göre derken, hakkaten kafasına göre, herhangi bir mantığı yok yani. 25,32,8,14,3... falan diye sıralamış dediğim gibi. diğer satırları silip sadece id ve sira'yı bıraktığımda da böyle yaptı, kodumsa çok basitti. sayi = 1, loop başla, sayi=sayi+1, next şeklide (3. mesajda mevcut)

    hani bazı durumlarda if sayi > "1" dediğimizde, 1'deki tırnaklardan ötürü 1 dışındaki tüm 1'li rakamları görmezden gelir ya (10,11,... 100,101...). öyle bi durum da yok.

    neyse. sonuç olarak order by sira,id dediğimde çözüldü. başınıza herşeye rağmen yine de böyle bir durum gelirse aklınızda olsun.
    http://www.kitapdefter.com
  • 14-10-2010, 10:09:18
    #14
    sayısal değerlerde tırnak kullanılmaz, if sayi > 1 then diye yazılır.
    sql içinde de sayi='1' değil sayi=1 yazılır.