Troia’da 27. eğitim yazımızda UPDATE işlemine bakacağız.

Senaryomuz şöyle olacak. 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;

Detayda 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 2 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 sistem Action’ı SYS_STATUS dür.

Bir sorgu işlemi eğer başarılı olursa SYS_STATUS değeri 0 döner.

Eğer sorguda bir hata olursa SYS_STATUS değeri 1 döner.

IF ile bu durumu kontrol edeceğiz. Eğer değer 1 dönerse ROLLBACKTRAN yaptırarak tüm işlemler veri tabanına işlenmeden geri alır.

Eğ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 sadece 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.

Editboxların isimleri Grid kolonları ile eşlendiği için direk hepsini otomatik olarak değişiklik dahil sisteme kaydedecektir.

Öncelikle ilk değişiklikler Grid üzerine yansır. COMMITRAN işlemine ulaşılabilirsede 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 Editboxlarının enable değerini false yapalım. Çünkü o değerleri değiştirmemesi gerek kullanıcının.

EDUPERSON2.AFTER

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.


muratbilginer