Dynamics Ax 2012 Table Inheritance 2
Merhaba
Bu yazımda tablo kalıtımın da verilerin nasıl oluştuğundan ve Insert() , Delete() ve Update() işlemlerinden bahsedeceğim. Bir metotla türettiğimiz 3 tabloya da kayıt ekleyelim.
static void FD_InsertTableInheritance(Args _args) { FDCarTable carTable; FDTruckTable truckTable; FDMotorcycleTable mtcTable; ; carTable.clear(); carTable.carType = "Taxi"; carTable.numberOfDoors = 2; carTable.Plaque = "34 TK 4422"; carTable.Brand = "Ford"; carTable.Model = "Focus"; carTable.insert(); truckTable.clear(); truckTable.truckType = "Trayler"; truckTable.numberOfAxles = 5; truckTable.Plaque = "34 sdr 54"; truckTable.Brand = "Merecedes"; truckTable.Model = "Truckes"; truckTable.insert(); mtcTable.clear(); mtcTable.motorcycleType = "Mobilet"; mtcTable.hasSidecar = false ; mtcTable.Plaque = "34 df 22"; mtcTable.Brand = "Hundai"; mtcTable.Model = "i345"; mtcTable.insert(); }
FD TruckTable
FDMotorcycleTable
FDVehicleTable
Gördüğünüz gibi biz alt tablolara kayıt ekledik temel tabloda da otomatik veri oluştu. Oluşan verinin hangi tablodan geldiğini InstanceRelationType alanından görebiliyoruz. Ayrıca isteğe göre eklenebilen DisplayRelationType alanından da görebiliyoruz. Türetilmiş tablo ile temel tablonun RecId’leri aynı oluştu. Tablo tarayıcısından türetilmiş tabloyu açtığınızda temel tablodaki alanları da görebiliyorsunuz. Zaten yukarıda yazdığımız metotta da temel tablonun alanlarını kullandık.
Update işleminde de aynı mantık geçerli , istediğiniz tablo değişkeni üzerinden güncelleme yapabilirsiniz. Basit bir örnek yapalım.
static void FD_UpdateTableInheritance(Args _args) { FDCarTable carTable; FDVehicleTable vehicleTable; ; ttsBegin; while select forupdate carTable { carTable.LicanceCode = "LisansFromCar"; carTable.numberOfDoors = 4; carTable.update(); // Hem temel tablo hemde türetilmiş tablo için güncelleme yapılabilir. } while select forUpdate vehicleTable where vehicleTable.InstanceRelationType == tableNum(FDCarTable) { vehicleTable.LicanceCode = "LisansFromVehicle"; vehicleTable.update(); // Sadece temel tablo için güncelleme yapılabilir. } ttsCommit; }
Delete işlemi de update işlemiyle aynı. Dikkat edilmesi gereken nokta temel tablodan bir satır silindiğinde türetilmiş tablodan da o satırın silineceğidir. Tablonun diğer metotlarında da sınıflarda bildiğimiz kalıtım mantığının aynısı çalışıyor.
Selamlar.