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.


Murat Bilginer
21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.