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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dijital Dönüşümünüzü AI İle Hızlandırın

Dynamics 365 ve AI destekli çözümlerle iş süreçlerinizi optimize edin, verinizi anlamlı içgörülere dönüştürün ve büyümenizi sürdürülebilir hale getirin.

AI-Ready Enterprise Partner

Microsoft Dynamics 365 ve yapay zekâ çözümleriyle kurumsal sistemlerinizi güçlendirir, operasyonel karmaşıklığı azaltır ve geleceğe hazır bir mimari tasarlarız.

DMR Göztepe Merkez Ofis

Eğitim Mah. Hızırbey Cad. No:118/5 D:1 Kadıköy İstanbul

Marmara Üniversitesi Göztepe Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com

DMR Başıbüyük Ofis

Başıbüyük Mahallesi Süreyyapaşa Başıbüyük Yolu Sk. No: 4/7 Maltepe İstanbul

Marmara Üniversitesi Başıbüyük Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com