AutoPlay Media Studio Lua table.sort() Kullanımı | Tablo Sıralama ve SQL ORDER BY

uydudoktoru

Tanınmış Üye
Yönetici
AMS'de LUA fonksiyonlarına devam, Şimdiki fonksiyonumuz table.sort

Bu fonksiyon ise sıralamayla ilgili. Örneğin numaraları sıralama, alfabetik sıraya koyma gibi gibi...

Kullanımı:

table.sort(tablo)

Kullanımı gayet basit bir fonksiyondur

Örneğin:

Kod:
tablo = {2,5,1,3,4}table.sort(tablo)table.concat(tablo,", ")
Çıktı:
Kod:
1, 2, 3, 4, 5
Umarım anlaşılmıştır.
 
Z-A şeklinde sıralamak istiyoruz. Bunu için bir örnek

Tabiki onun içinde şu kodu kullanabilirsiniz

Örnek:

Kod:
t = {"z","a","n","l","m"}table.sort(t,function(i,v) return i>v end)

Bu şekilde ters sıralar.
 
sql3den aldığım veriyi bir tablodaki içeriğe göre alfabetik sıraya sokmak istesem nasıl yapabilirim?

Bu durumda
table.sort() fonksiyonu ile uğraşmak yerine SQL komutları kolayca sıralama yapabilirsiniz. Komutunuzun sonunda ORDER BY`sıralamada esas alınan tablo ismi` ASC (A-Z) veya DESC (Z-A) yazmalı. Örneğin id numaralarına göre A-Z sıralama için:

HTML:
[COLOR=rgb(39, 42, 52)][SIZE=14px][FONT=monospace]SQLite3Cursor, err = SQLite3Connection:execute("SELECT * FROM `musteriler` ORDER BY `id` ASC");Musteriler = 

SQLite3Cursor:fetch({}, "a");while Musteriler doTreeList.AddRow("Plugin1",

 Musteriler.id.."|"..Musteriler.adivesoyadi.."|"..Musteriler.numarasi.."|"..Musteriler.adresi, nil, nil, nil);Musteriler 

= SQLite3Cursor:fetch({}, "a");end[/FONT][/SIZE][/COLOR]
 

AutoPlay Media Studio Lua'da Table Sıralama​

AutoPlay Media Studio içerisinde Lua kullanırken elimizde bulunan bir tabloyu sayısal veya alfabetik olarak sıralamak için table.sort() fonksiyonunu kullanabiliriz.

Bu fonksiyon özellikle liste, menü, dosya arşivi ve veritabanından alınan bilgilerin düzenlenmesinde kullanılabilir.

1. Sayıları küçükten büyüğe sıralama​

Öncelikle bir tablo oluşturalım:

tablo = {2, 5, 1, 3, 4}

Şimdi table.sort() ile sıralayalım:

table.sort(tablo)
Sonucu görmek için:

Dialog.Message("Sonuç", table.concat(tablo, ", "));
Çıktı:

1, 2, 3, 4, 5
table.sort() varsayılan olarak sayıları küçükten büyüğe sıralar.

2. Alfabetik sıralama​

Aynı fonksiyon metinleri de alfabetik olarak sıralayabilir:

tablo = {"Uydu", "Elektronik", "Anten", "Televizyon", "Kablo"}

table.sort(tablo)

Dialog.Message("Sonuç", table.concat(tablo, ", "));
Bu şekilde listedeki metinler alfabetik sıraya alınır.

3. Z-A şeklinde ters sıralama​

Tersten sıralamak için table.sort() fonksiyonuna bir karşılaştırma fonksiyonu verebiliriz:

tablo = {"z", "a", "n", "l", "m"}

table.sort(tablo, function(i, v)
return i > v
end)

Dialog.Message("Sonuç", table.concat(tablo, ", "));
Bu durumda sonuç:

z, n, m, l, a
şeklinde olacaktır.

4. SQLite verilerini sıralamak​

Eğer bilgiler SQLite veritabanından alınıyorsa, çoğu durumda Lua tarafında table.sort() kullanmak yerine SQL sorgusu içerisinde ORDER BY kullanmak daha pratiktir.

Örneğin musteriler tablosundaki kayıtları id alanına göre küçükten büyüğe sıralamak:

SQLite3Cursor, err = SQLite3Connection:execute(
"SELECT * FROM musteriler ORDER BY id ASC"
);
Büyükten küçüğe sıralamak için:

SQLite3Cursor, err = SQLite3Connection:execute(
"SELECT * FROM musteriler ORDER BY id DESC"
);
Burada:

  • ASC → Küçükten büyüğe / A-Z
  • DESC → Büyükten küçüğe / Z-A
anlamına gelir.

Örneğin müşteri adına göre alfabetik sıralama:

SQLite3Cursor, err = SQLite3Connection:execute(
"SELECT * FROM musteriler ORDER BY adivesoyadi ASC"
);

5. Hangisini kullanmalıyız?​

Elimizde normal bir Lua tablosu varsa:

table.sort(tablo)
kullanabiliriz.

Veriler doğrudan SQLite veritabanından geliyorsa:

ORDER BY
kullanmak daha doğrudan bir çözümdür.

Özetle table.sort() Lua tablolarını sıralamak, ORDER BY ise SQL sorgusunun sonucunu sıralamak için kullanılabilir.

Bu örnekler güncel AutoPlay Media Studio 9.x projelerinde Lua kodlarını öğrenmek ve özellikle AIO, teknik arşiv ve veritabanı uygulamalarında listeleme işlemleri yapmak için kullanılabilir.
 
Geri
Yukarı