AXAPTA İÇİNDE SQL KULLANIMI
Merhaba
Gerekli olan basit sql ifadelerini bir makalede gördüm ve paylaşmayı faydalı buldum.
AXAPTA İÇİNDE SQL KULLANIMI
Axapta içerisinde, sql ifadeleri klasik sql ifadelerine benzesede farklılar göstermektedir. Kendine özel bir yazım sitili mevcuttur.
SELECT İfadeleri
Select ifadesi ile tablo / tablolar üzerindeki kayıdı okuyabiliriz. Yazım kuralları:
Select ifadesi: select TabloAdı
Parametreler: [ [ Arama Opsiyonları ] [ Listelenecek Sahalar from ] ] TabloAdının AtandığıDeğişken [İndeks ifadesi] [ Opsiyonlar ] [ Where ifadesi ] [ Join ifadesi ]
Arama Opsiyonları: reverse | firstfast | firstonly | forupdate | nofetch
Listelenecek Sahalar: Listelenecek saha olarak bir ifade kullanmazsanız, * gibi tabloya ait tüm kayıtları getirir. Eğer bir bilgi girerseniz istediğiniz sahaları , ile ayırarak yan yana getirebilirsiniz. Tüm kayıtları almak istediğinizi belirtmek için * ifadesini de kullanabilirsiniz.
Fonksiyonel ifadeler: sum | avg | minof | maxof | count , bu ifadeler yardımı ile belirttiğimiz sahalar için ilgili işlemi gerçekleştirebiliriz. Ancak bu ifadeleri Sql server üzerinde olduğu gibi komplike kullanamıyoruz. Örneğin iki sahanın çarpımının toplamını almak gibi…
Opsiyonlar: ( order by | group by ) SahaAdı { , SahaAdı } , birden fazla saha üzerinde sıralama ve gruplama gerçekleştirebiliriz.
İndeks ifadesi: index Idx | index hint idx , tablo üzerinde tanımlı indeks varsa, o indekse göre getirmesini sağlayabiliriz.
Sıralama: asc | desc , A-Z veya Z-A sıralamasını yapabiliriz.
Where ifadesi: where ifade Bir veya birden fazla kriter verebiliriz.
Join ifadesi: [exists | notexists | outer ] join Parametreler , Birçok tablo üzerinde bağlantı kurarak işlem yapabiliriz.
Select ifadesinden dönen değerler sadece tablo ismine atanmış olan değişken adı aracılığı ile alınır. Eğer sum, count gibi hesaplama yaptırdıysanız, ilgili tablo değişkeninin hangi sahası alınmış ise onun aracılığı ile erişilir.
Verdiğiniz kriter sayısı birden fazla ise bu kriterleri && ile birleştiririz. Sql ifadesi içindeki eşit, eşit değil gibi karşılaştırmalar ise Axapta diline göre verilmektedir. Örneğin eşitlik kriteri == ile, eşit değil ise != ile verilmektedir. Bu anlamda da sql server ile farklılık göstermektedir.
firstonly ifadesi ile tablo üzerinde sadece tek kayıdı almak istersek bunu belirtebiliriz.
Örnek sorgu:
SalesTable _SalesTable;
;
Select _SalesTable; veya Select * from _SalesTable;
Select SalesId, CustAccount from _SalesTable;
While Select
Yukarıdaki sorguda sadece tek kayıt geriye döner. Eğer ilgili kriter ve durumlara uygun tablo / tablolar içindeki tüm kayıtları almak istiyorsak while select ifadesi ile sorguyu çalıştırmamız gerekmektedir.
CustTable _ Cust;
;
while select Cust order by NameRef
where Cust.AccountNo > “1000” && Cust.AccountNo <=”5000”
{
print Cust.NameRef,” ”, Cust.TelephoneNo;
}
Join ifadesi ile de birden fazla tablo arasında ilişki sağlayabiliriz. Örneğin:
SalesTable _SalesTable;
SalesLine _SalesLine;
;
While Select _SalesTable
Join _SalesLine
Where _SalesTable.SalesId == _SalesLine.SalesId {
}
Order by [asc|desc] ifadesi ile kayıtlar üzerinde sıralama işlemi gerçekleştirebiliriz. Ancak aynı sorgu üzerinde hem order by hem de group by ifadesi kullanamayız. Group By ile gruplama yaptığınız zaman, otomatik olarak order by görevini de görmektedir.
INSERT İfadeleri
INSERT ifadesi ile, tablo / tablolar içine kayıt ekleyebiliriz. Insert ifadesi ile kayıt eklediğimiz zaman, RecId gibi sistem tarafından sağlanan sahalar otomatik olarak güncellenir. Örnek uygulama:
CustTable _CustTable;
;
_CustTable.AccountNum = “10000“;
_CustTable.Name = “Deneme”;
_CustTable.insert();
Değişken olarak tanımladığımız tablonun ilgili sahalarına gerekli atamaları bu şekilde yaptıkdan sonra, tüm tablolarda bulunan insert() metodunu çağırarak kayıt ekleme işini aktif hale getirebiliriz.
UPDATE İfadesi
UPDATE ifadesi ile, tablo / tablolar üzerinde bilgi güncelleme yapabiliriz. Update işlemini gerçekleştirmek için, hangi tablo üzerinde güncelleme yapacaksak o tabloyu bir değişken olarak tanımladıkdan sonra update modunda açmamız gerekmektedir. Bu işlemi ise select ifadesinden yararlanarak gerçekleştirebilir.
CustTable _ CustTable;
;
ttsbegin;
select forupdate _CustTable
where CustTable.Name “test”;
CustTable.Name = “deneme”;
CustTable.update();
ttscommit;
select ifadesi ile ilgili tabloyu forupdate ifadesini kullanarak güncelleme modundan açtıkdan sonra tablonun istediğimiz sahalarına gerekli atamalarını yapıp, tablonun update() metodunu çağırmamız gerekmektedir.
Ancak select ifadesini kullandığımız için bu sorgu sadece bulunan ilk kayıt için çalışacaktır. Eğer bulunan tüm kayıtlar için çalışmasını istiyorsak,
CustTable _ CustTable;
;
ttsbegin;
while select forupdate _CustTable
where CustTable.Name “test” {
CustTable.Name = “deneme”;
CustTable.update();
}
ttscommit;
ifadesini çalıştırmamız gerekmektedir.
DELETE İfadesi
DELETE ifadesi ile, tablo / tablolar üzerinde kayıt silme işlemini yapabiliriz. Delete işlemini gerçekleştirmek için, hangi tablo üzerinde silme yapacaksak o tabloyu bir değişken olarak tanımladıkdan sonra update modunda açmamız gerekmektedir. Bu işlemi ise select ifadesinden yararlanarak gerçekleştirebilir. Kullanım olarak UPDATE’e benzer, tek farkı tablonun delete() metodunu çağırmamızdır.
CustTable _ CustTable;
;
ttsbegin;
while select forupdate _CustTable
where CustTable.Name “test” {
CustTable.delete();
}
ttscommit;
Yeliz Korkmaz arkadaşımıza teşekkürler.
Tamamı için tıklayın.