Merhabalar,
Bu yazıda canias erp de bir dialog üzerinde işlem yaparken başka bir dialog çağırıp ordaki işlemlerle birlikte veritabanına kayıt ettirme amaçlı tasarım/kodlama nasıl yapılır onu ele alacağız.
Dün ki örnekten devam ediyoruz. İsim ve soyisim için ayrı bir dialog açıyorum HAKTRAIL2 şeklinde.
İlk dialoğumuzun tasarımını bu şekilde değiştiriyoruz.
Dialog çağırma için CALL DIALOG komutunu kullanıyoruz.
btnkaydet butonumuzu yukarıdaki gibi kodluyoruz.Açıklamaları resim üzerinde mevcut.
İlk dialog açılmadan önce olmasını istediğimiz olayları burada tanımlıyoruz. tabloyu doldur,sütunları ayarla kaydet butonunu iptal et gibi.
İkinci dialog tasarımı da yukarıdaki gibi olacak.
btngeçiş butonunun arkasına yukarıdaki control ifadesini yazıyoruz.shutdown ile kapatıyoruz.
test ortamındaki ilk dilaoğun görüntüsü bu şekilde olmaktadır.
dialog 2 yi aç dediğimiz de 2. dialoğumuz gelmektedir. Geçiş yap dedikten sonra ana ekrana geri döneriz.
son olarak şehir ve doğum tarihini seçtikten sonra kaydet deyip işlemi sonlandırıyoruz.
İşlem bu kadar.
İyi çalışmalar…
KOD BLOKLARI ;
BEFORE KODLARI /* açılır açılmaz tablo dolsun */ SELECT ID,NAME,SURNAME,CITY,BIRTHDAY FROM HAKTRIALTB ORDER BY ID INTO HAKTRIALTBL; /* tablo genişlikleri ayarlansın. */ SETCOLWIDTH HAKTRIALTBL_ID TO 30; SETCOLWIDTH HAKTRIALTBL_NAME TO 75; SETCOLWIDTH HAKTRIALTBL_SURNAME TO 75; SETCOLWIDTH HAKTRIALTBL_CITY TO 75; SETCOLWIDTH HAKTRIALTBL_BIRTHDAY TO 115; /* İLK AÇILDIĞINDA KAYDET BUTONUNU DİSABLE EDİYORUZ */ SET BTNKAYDET TO DISABLE; --------------------------------------------------------------- GLOBAL: INTEGER IDcount, STRING txtname, STRING txtsurname,STRING cmbcity,STRING txtbirthday,STRING errorM; /* sanal tabloya veri attıktan sonra kaç veri varsa integer olarak geri döner. */ IDcount = HAKTRIALTBL_ROWCOUNT; IDcount=IDcount+1; /* sanal tabloya bir kayıt satırı daha açıp işlem yaptıracağız.*/ APPEND ROW TO HAKTRIALTBL; /* dialog ekranındaki componentlerin içindeki verileri oracledaki tabloların kolonlarına eşitliyoruz*/ MOVE IDcount TO HAKTRIALTBL_ID; MOVE TXTNAME TO HAKTRIALTBL_NAME; MOVE TXTSURNAME TO HAKTRIALTBL_SURNAME; SWITCH CMBCITY /* combobox ın value değeri bu şekilde alınıp db ye basılıyor */ CASE 0: MOVE 'ISTANBUL' TO HAKTRIALTBL_CITY; CASE 1: MOVE 'IZMIR' TO HAKTRIALTBL_CITY; CASE 2: MOVE 'ANKARA' TO HAKTRIALTBL_CITY; DEFAULT: MOVE 'TURKİYE' TO HAKTRIALTBL_CITY; ENDSWITCH; MOVE TXTBIRTHDAY TO HAKTRIALTBL_BIRTHDAY; /* yukarıdaki değişiklikleri db ye uygulatıyoruz,yani bir nevi entity deki context.Save() metodu gibi*/ BEGINTRAN; INSERT INTO HAKTRIALTBL; IF SYS_STATUS THEN MESSAGE BAS E2000 WITH 'KAYDEDİLEMEDİ.'; ROLLBACKTRAN; RETURN 0; ENDIF; errorM = IDcount + '. KAYIT BAŞARIYLA KAYDEDİLDİ.'; MESSAGE BAS E2000 WITH errorM; COMMITTRAN; TXTNAME=''; TXTSURNAME=''; /* cliked olayından sonra ekranı bir yeniletiyoruz */ SELECT ID,NAME,SURNAME,CITY,BIRTHDAY FROM HAKTRIALTB ORDER BY ID INTO HAKTRIALTBL; ----------------------------------------------------------- /* 2.DİALOG AÇILIR */ CALL DIALOG HAKTRAIL2 WITH LOCATION 200,200 SIZE 500,300; -------------------------------------------------------- /* BTNGEÇİŞ KODLARI , TEXTBOX LAR KONTROL EDİLİR, DİALOG KAPATILIR*/ IF TXTNAME = '' || TXTSURNAME = '' THEN MESSAGE BAS E2000 WITH 'İSİM YADA SOYİSİM BOŞ GEÇİLEMEZ..'; ELSE /* İKİNCİ DİALOG TAN İSTEDİĞİMİZ VERİLER GELİRSE */ SET BTNKAYDET TO ENABLE; ENDIF; SHUTDOWN; ------------------------------------------------------