progressokulu.com Advanced Business Language Slide 10
-
Upload
kaan-verdioglu -
Category
Technology
-
view
238 -
download
2
description
Transcript of progressokulu.com Advanced Business Language Slide 10
Bölüm 10 : Modüler Prosedürler Geliştirmek
Bu dersi tamamladığımız zaman şunları yapabileceksiniz;
• AppBuilder bileşenlerini açıklamak• AppBuilder’dan veritabanına bağlanmak• AppBuilder’dan prosedür açmak ve çalıştırmak• Yapısal prosedürler yaratmak• Modüler kodlamayı açıklamak• Dış prosedürler çağırmak• İç prosedürler oluşturmak ve çağırmak• Kullanıcı tanımlı fonksiyonlar yaratmak ve çağırmak• Kalıcı prosedürler yaratmak ve çağırmak• Bir uygulamayı derlemek
AppBuilder Araçları
Desktop
AppBuilder
Nesne paleti
AppBuilder simgesi
Bir Veritabanına Bağlanmak
AppBuilder’daki Dosyalarla Çalışmak
Yeni
Aç Kaydet Çalıştır
Dur
Dosya İsimlendirme Üslubu
DEFINE INPUT PARAMETER pcDeptCode AS CHARACTER NO-UNDO.DEFINE OUTPUT PARAMETER pcDepartment AS CHARACTER NO-UNDO.FIND Department NO-LOCK WHERE Department.DeptCode = pcDeptCode NO-ERROR.IF AVAILABLE(Department) THEN ASSIGN pcDepartment = Department.DeptName.
eEmpLib.p prosedüründeki iş mantığı
City.w grafiksel prosedürü içindeki GUI penceresi
Müşteri bilgisi
Müşteri No:İsim:Şehir:
Sipariş No:Teslim Tarihi:
Çıkışİptal
Dosya Raporlar Bul Yardım
Yapısal Prosedür Bölümleri
Definitions/*************************************/
Main Block/*************************************/
Internal Procedures/*************************************/
Functions/*************************************/
Yapısal Prosedurler Yaratmak
1. Procedures’i seç
2. Diğer seçimleri kaldır
3. Structured Procedures’i seç
Yapısal Prosedurler
Tree view
Section editor
AppBuilder’da Kod Önizlemesi
Section Editor’ü Kullanmak
1. Bir prosedür seç 2. Prosedürü düzenle
AppBuilder’da Bir Dosya Açmak
Bu dosya veritabanına erişiyor mu?
FIND Customer WHERE ...
Progress Advisor
Ne yapmak istersiniz?
Pencereler ve Diyalog Kutuları
Pencere
Diyalog kutusu
Kullanıcı hareketi gerekli
Opsiyonel menü
Minimize, Maksimize, Kapat
Kapat
Bir GUI Penceresi İçin Varsayılan Kod
Boş pencere
Boş pencere için Main
Block kodu
Uygulama 1 : AppBuilder’ı Keşfetmek
Modüler Kodlama
A Prosedürü
Main Block:Procedure: CalcVacationProcedure: GetEmpNameFunction: CalcAge
B prosedürü
Main Block:Procedure: GetCustBalanceProcedure: GetCustLimitProcedure: GetCustName
Application
İç Prosedur’leri Çalıştırmak
/***** Internal Procedures *******/RUN valDept (INPUT fiDeptCode, OUTPUT fiDeptName).<sonraki deyimler>
PROCEDURE valDept: <prosedür deyimleri>END PROCEDURE.
wDepartment.w
Bir Blok İçinde Varsayılan Hata Yönetimi
Çağıran prosedür
Çağrılan prosedür......RUN... ...... /****** Definitions ******/
INPUT parametre tanımlaması OUTPUT parametre tanımlaması
Input değeriOutput değeri
Parametre İsimlendirme Üslubu
Parametre tipi Önerilen önek Örnek
Character pc pcDeptCode
Date pdt pdtBirthDate
Integer pi piReturnCount
Decimal pd pdPrice
Logical pl plOK
ROWID pr prCustRow
Birden Çok Parametre Göndermek
Çağıran prosedür Çağrılan prosedür
/**** Procedure: valDept ****/INPUT parameter pcDeptCode
OUTPUT parameter pcDeptName
RUN valDept (INPUT fiDeptCode, OUTPUT fiDeptName)
Departman kodu (input)
Dönen departman adı (output)
Nasıl Çalışır?1. Departman kodu girilir
2. Butona basılır
3. Butonun olay prosedürü valDept prosedürünü çağırır
4. valDept prosedürü tarafından üretilen Departman Adı bilgisi görüntülenir
DO: ASSIGN fiDeptCode. RUN valDept (INPUT fiDeptCode, OUTPUT fiDeptName). DISPLAY fiDeptName WITH FRAME {&FRAME-NAME}.END.
Bir İç Prosedur’deki Yerel Tanımlamalar
Olay Kodu Eklemek
Buton arkasındaki olay kodu
Prosedur’lerin Aranma Sırası
1. İç prosedür mü?
Hayır?
2. PROPATH klasörlerini incele
RUN getCustRec.
Dış Prosedur Çağırmak
Çağırılan prosedür: valRep.p
Çağıran prosedür
. . .
. . .RUN valRep.p.<sonraki deyim>.. . . DO:
. . . . . . . . .END.
Modülerlik ve Yeniden Kullanılabilirlik
PROCEDURE getCustomerBalance: RUN getCustRec. . . .PROCEDURE getCustLimit: RUN getCustRec. . . .PROCEDURE getCustName: RUN getCustRec.
PROCEDURE getCustRec: (Prosedür deyimleri).END PROCEDURE.
Fonksiyonların Yeniden Kullanımı
Hacim ve yüzey alanlarıyükseklik ve açıya ihtiyaç duyar
Bu Fonksiyonu Ne Zaman Kullanırız?
Function YearsOld Function YearsEmployed
Yeni Bir Fonksiyon Tanımlamak
Fonksiyon adı
Dönüş tipi
Yeni Bir Fonksiyon Yaratmak
Parametreleri buraya girin
Dönüş değerini de buraya
Fonksiyon Çağırmak
1. Kaydı seçin
2. Browse’daki kaydın değeri şu anda değişti
3. Fonksiyonu çağırın
Uygulama 2 : Parametreler ve Fonksiyonlar
Belleğe Yerleşen Kütüphane Modülü
/* eEmpLibrary.p */Procedure calcVacation:......Procedure setVacation:......
Kalıcı Prosedur’ler Yaratmak
DEFINE VARIABLE hEmpLib AS HANDLE NO-UNDO.
RUN eEmpLibrary.p PERSISTENT SET hEmplib.
eEmpLibrary.p
Bir İç Prosedur’ü Çağırmak
hEmpLib
RUN calcVacation IN hEmpLib (INPUT Employee.EmpNum, INPUT fiStart, INPUT fiEnd, OUTPUT logOK).
calcVacation
Bir Kalıcı Prosedur’ü Bellekten Silmek
DELETE PROCEDURE hEmpLib
eEmpLibrary.p
Uygulama 3 : Kalıcı Prosedur’ler
Uygulamayı Derlemek
Uygulama 4: Uygulamayı Derlemek