Skip links

Ax tablolarındaki kontrol(validation) metodları


Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118
Ax tablolarındaki kontrol(validation) metodları

Merhaba
Ax tablolarında veri kontrolunu sağlayan metodlardan bahsedeceğim. Herhangi bir tablonun metodları üzerinden sağ tıklayıp yöntemi gecersiz kıl derseniz ezebileceğiniz (Override) metodların listesini görürsünüz. Bu metodlar içinde kontrol için kullanılanları da görebilirsiniz.
Bu konuyu anlatabilmek için bir proje yaptım.  Öncelikle iki alanı olan bir tablo ve onun formunu yaptım. Bir job birde sınıf yazdım burada da kod ile insert update ve delete işlemlerini yaptım. Bunlardan maksadım hangi işlemde hangi kontrol metodu çalışıyor bunu size gösterebilmekti.

Kontrol için kullanıla metodları tek tek ezip içlerine şu kodları yazdım.

aosValidateDelete : Tablodan bir satır silinmek istediğinde çalışır. Kod ile yapılan delete() ve doDelete() işlemlerinde de çalışır. Kontrol metodlarının hepsi boolean değer döndürür. Eğer bu değer false olursa işlemi gerçekleştirmez.   Benim örneklerde kullandığım checkFailed() metodu hem hata mesajını gösterir hemde geri dönüş olarak false döndürdüğü için işlemi gerçekleştirmez.
[sourcecode language=”csharp”]
public boolean aosValidateDelete()
{
boolean ret;
ret = super();
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu”);
info(“aosValidateDelete”);
return ret;
}
[/sourcecode]
aosValidateInsert :Tabloya bir satır eklenmek istendiğinde çalışır. Kod ile yapılan insert() ve doinsert() işlemlerinde de çalışır.
[sourcecode language=”csharp”]
public boolean aosValidateInsert()
{
boolean ret;
ret = super();
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu”);
info(“aosValidateInsert”);
return ret;
}
[/sourcecode]
aosValidateRead : Tablodan bir satır okunmak istendiğinde çalışır. Çok kullanılmaz.
[sourcecode language=”csharp”]
public boolean aosValidateRead()
{
boolean ret;
ret = super();
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu”);
info(“aosValidateRead”);
return ret;
}
[/sourcecode]
aosValidateUpdate :Tablodan bir satır güncellenmek istendiğinde çalışır. Kod ile yapılan update() ve doUpdate() işlemlerinde de çalışır.
[sourcecode language=”csharp”]
public boolean aosValidateUpdate()
{
boolean ret;
ret = super();
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu”);
info(“aosValidateUpdate”);
return ret;
}
[/sourcecode]
validateField : Formda bir alan  değiştrildiğinde çalışır. Metoda alanın ID si geldiği için switch ile hangi alnın güncellendiği tespit edilip kontrol yapılır. Yine false değer döndürülürse alanın değiştrilmesine izin vermez.
[sourcecode language=”csharp”]
public boolean validateField(fieldId _fieldIdToCheck)
{
boolean ret;
ret = super(_fieldIdToCheck);
switch (_fieldIdToCheck)
{
case fieldnum(FDValidationTable , field):
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu field”);
break;
case fieldnum(FDValidationTable , field1):
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu field1”);
break;
}
info(“validateField”);
return ret;
}
[/sourcecode]
validateWrite : Tabloya bir satır eklenmek istendiğinde çalışır. Kod ile yapılan insert() ve doinsert() işlemlerinde de çalışmaz. Çalışabilmesi için  kod ile validateWrite() metodunun çalıştırılması gerekir.
[sourcecode language=”csharp”]
public boolean validateWrite()
{
boolean ret;
ret = super();
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu”);
info(“validateWrite”);
return ret;
}
[/sourcecode]
validateDelete : Tablodan bir satır silinmek istendiğinde çalışır. Kod ile yapılan delete() ve doDelete() işlemlerinde de çalışmaz.
[sourcecode language=”csharp”]
public boolean validateDelete()
{
boolean ret;
ret = super();
// Doğrulama kodunu buraya yazıyoruz.
ret = checkfailed(“Bir hata oluştu”);
info(“validateDelete”);
return ret;
}
[/sourcecode]
Bunları denemek için bir form yapıp hangi durumda hangi uyarıyı aldığınıza bakabilirsiniz. Ayrıca kod ile insert. update, delete, doinsert, doupdate ve dodelete işlemleri yapıp yine hangi durumda hangi kontrolun çalıştığına bakabilirsiniz.
Özetlemek gerekirse Tablo seviyesinde yapacağımız kontrolleri bu metodlarla yapıyoruz. Form seviyesinde de kontrol metodları mevcut. Duruma göre onlarıda kullanmak isteyebilirsiniz. Tablo için genellikle kullandığımız metodlar güncellem ve yeni kayıt için validateWrite(). Silme içim validateDelete(). Alanlarda yapılan değişikliklerin kontrolu için validateFeild().
aos ile başlayan kontroller genelde kullanılmaz ax standart kodalarında da pek göremezsiniz.
Son bir ekleme bu metodlar kontrol içindir. Bu metodlarda kontrol dışında bir işlem yapılmamalıdır. Özellikle veri ataması güncellemesi gibi işlemler için başka metodlar mevcut onlar kullanılmalıdır. İlerde o metodlardan da bahsederiz.
Selamlar.

Join the Discussion