Merhaba, Personel Yönetim Sistemini geliştirmeye kaldığımız yerden devam ediyoruz. Bu yazımda Update yani veri güncelleme olayına bakacağız.
Case: Verilerimizi listeledikten sonra bir veriyi seçip CHANGE ile detaya gidip istediğimiz alanı güncelleyip kaydedeceğiz.
MODI=1;
MSG='Değiştirilecek Veri Seçmediniz';
IF PERSONELBILGISI_SELECTED == 1 THEN
CALL DIALOG EDUPERSON02;
ELSE
MESSAGE EDU I302 WITH MSG;
ENDIF;
Detay Dialog’unda SAVE butonuna şu kodları yazıyoruz.
BEGINTRAN;
SWITCH MODI
CASE MODI=1:
UPDATE PERSONELBILGISI
WHERE PERSONELN0 = PERSONELBILGISI_PERSONELNO
AND PHONENUMBER = PERSONELBILGISI_PHONENUMBER
AND MAIL = PERSONELBILGISI_MAIL;
ENDSWITCH;
IF SYS_STATUS == 1 THEN
ROLLBACKTRAN;
ELSE
COMMITTRAN;
ENDIF;
Burada 3 tane konumuz var üzerinde durmamız gereken.
BEGINTRAN – ROLLBACKTRAN – COMMITTRAN
Bu yapı veri işlemleri yaparken çok önemli bir konumdadır.
Bir Update, Insert, Delete işlemi yapılırken kullanılan bu yapı herhangi bir yanlışlık olması durumunda bu yanlışlığın veri tabanına yansımasına izin vermez.
Bir sorgu işlemi başlamadan önce
BEGINTRAN;
ile başlanır. Daha sonra Update, Delete, Insert komutları yazılır.
UPDATE PERSONELBILGISI
WHERE PERSONELN0 = PERSONELBILGISI_PERSONELNO
AND PHONENUMBER = PERSONELBILGISI_PHONENUMBER
AND MAIL = PERSONELBILGISI_MAIL;
SYS_STATUS System Flag
IAS’da öğrenmemiz gereken bir System Action’ı SYS_STATUS’dür.
Bir sorgu işlemi eğer başarılı olursa SYS_STATUS değeri 0 döner.
Sorguda bir hata olursa SYS_STATUS değeri 1 döner.
IF ile SYS_STATUS durumunu kontrol edeceğiz.
Değer 1 dönerse ROLLBACKTRAN yaptırarak tüm işlemler veri tabanına işlenmeden geri alacağız.
Değer 0 dönerse COMMITRAN yaparak tüm değişikliğin ana veri tabanı üzerine işlenmesini sağlarız.
UPDATE ederken dikkat etmemiz gereken duruma gelirsek.
Yazmamız gereken sorgu kodu normal SQL kodlarından daha sade ve yalındır.
Sadece UPDATE denir, daha sonra ana tablomuzu listelediğimiz Grid ismi yazılır ve hangi şarta göre güncellenecekse WHERE ile şart yazılıp işlem tamamlanır.
EditBox’ların isimleri Grid kolonları ile eşlendiği için direk hepsini otomatik olarak değişiklikleri yapıp sisteme kaydedecektir.
Öncelikle ilk değişiklikler Grid üzerine yansır. COMMITRAN işlemine ulaşılabilirse de Grid üzerindeki veriler ana tablomuz üzerine Update edilmiş olur.
Görelim ekranlarımızı.
Seçtiğimiz kişinin Departman bilgisini Satış Pazarlama olarak güncelleyeceğiz.
Gördüğümüz gibi başarılı bir şekilde güncelleme işlemi gerçekleşti.
Programımızı biraz daha kullanıcı dostu hale getirelim.
Eğer başarılı bir işlem olmaz ise Güncelleme Gerçekleşmedi mesajını verelim.
Tablomuzda KEY alanlarımız vardı. O alanların EditBox’larının Enable değerini false yapalım. Çünkü o değerleri değiştirmemesi gerek kullanıcının.
IF MODI == 2 THEN
SET SAVE TO DISABLE;
SET GROUPBOX2 TO DISABLE;
ELSE
SET SAVE TO ENABLE;
SET GROUPBOX2 TO ENABLE;
ENDIF;
IF MODI == 0
&& COPYR == 0 THEN
PERSONELBILGISI_PERSONELNO='';
PERSONELBILGISI_PERSONELNAME='';
PERSONELBILGISI_PERSONELLASTNAME='';
PERSONELBILGISI_BIRTHDATE=SYS_CURRENTDATE;
PERSONELBILGISI_PHONENUMBER='';
PERSONELBILGISI_DEPARTMENT='';
PERSONELBILGISI_MAIL='';
PERSONELBILGISI_STARTDATE=SYS_CURRENTDATE;
PERSONELBILGISI_ADRESS='';
ENDIF;
IF MODI == 1 THEN
SET PERSONELBILGISI_PERSONELNO TO DISABLE;
SET PERSONELBILGISI_PHONENUMBER TO DISABLE;
SET PERSONELBILGISI_MAIL TO DISABLE;
ELSE
SET PERSONELBILGISI_PERSONELNO TO ENABLE;
SET PERSONELBILGISI_PHONENUMBER TO ENABLE;
SET PERSONELBILGISI_MAIL TO ENABLE;
ENDIF;
SAVE
BEGINTRAN;
IF MODI == 1 THEN
UPDATE PERSONELBILGISI
WHERE PERSONELNO = PERSONELBILGISI_PERSONELNO
AND PHONENUMBER = PERSONELBILGISI_PHONENUMBER
AND MAIL = PERSONELBILGISI_MAIL;
ENDIF;
IF SYS_STATUS == 1 THEN
ROLLBACKTRAN;
RETURN;
ENDIF;
COMMITTRAN;
MSG='Güncelleme İşlemi Gerçekleşti';
MESSAGE EDU I302 WITH MSG;
SHUTDOWN;
Sonuçlarımızı Görelim
Böylelikle başarılı bir şekilde UPDATE işleminide gerçekleştirmiş olduk.
Bir sonraki yazımda görüşmek üzere.