Professional Documents
Culture Documents
Hà Nội, 06-2011
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
MỤC LỤC
MỤC LỤC..............................................................................................................................................2
1 PHIÊN BẢN VÀ MÃ HIỆU TÀI LIỆU..................................................................................4
1.1 MÃ HIỆU..................................................................................................................................................4
2 GIỚI THIỆU.............................................................................................................................6
2.1 MỤC ĐÍCH CHUẨN HOÁ.....................................................................................................................6
2.2 ƯU ĐIỂM..................................................................................................................................................6
4.1.1 Windows....................................................................................................................................................................15
4.1.2 Canvas....................................................................................................................................................................... 15
4.1.3 Prompt....................................................................................................................................................................... 15
4.1.4 Frame......................................................................................................................................................................... 16
4.1.7 Item............................................................................................................................................................................ 17
cmnd-chuan-lap-trinh-oracle-form Trang 2 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
6 GHI CHÚ.................................................................................................................................25
7 KINH NGHIỆM......................................................................................................................26
7.1 LUÔN LUÔN BẪY LỖI........................................................................................................................26
7.4 SUBTYPE...............................................................................................................................................27
7.5 CONSTANT...........................................................................................................................................27
7.6 ĐƠN GIẢN HOÁ BIỂU THỨC LOGIC PHỨC TẠP BẰNG BIẾN HOẶC HÀM BOOLEAN...27
7.8 MỘT SỐ CHÚ Ý KHI THIẾT KẾ / LẬP TRÌNH TRÊN ORACLE FORM BUILDER...............28
7.8.8 Truy cập Item của Form A từ Form B được gọi từ Form A.......................................................................................32
cmnd-chuan-lap-trinh-oracle-form Trang 3 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 4 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
1.1 MÃ HIỆU
Bộ phận/người lập
Ngày lập
Người duyệt
Ngày duyệt
Ngày hiệu lực
cmnd-chuan-lap-trinh-oracle-form Trang 5 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
2 GIỚI THIỆU
2.2 ƯU ĐIỂM
Bất kỳ người lập trình nào xem mã nguồn của mình hoặc của người khác đều có thể
hiểu được đoạn mã đó sẽ thực hiện công việc gì.
Người mới tham gia dự án, hoặc người maintain dự án sẽ nhanh chóng tiếp thu được
mã nguồn của người thực hiện trước đó.
Lập trình viên sẽ làm nảy sinh ít lỗi hơn và dễ kiểm soát hơn, tránh được các lỗi lặp
đi lặp lại.
Tránh được rủi do cho dự án khi một thành viên không thể tham gia tiếp phần việc
của mình.
Tạo bước chuẩn bị mọi thứ cần thiết để thực hiện một cách chuyên nghiệp cho
những người bắt đầu làm quen với công cụ Oracle.
Chuẩn hoá giúp cho dự án thực hiện một cách trôi chảy hơn.
cmnd-chuan-lap-trinh-oracle-form Trang 6 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
Các chuẩn có thể coi như là nguyên nhân gây khó chịu bởi nó là cách code mới hoặc
cách code gây buồn chán đối những ngưòi thường xuyên viết trên nhiều ngôn ngữ
khác nhau, và không muốn tuân theo chuẩn.
cmnd-chuan-lap-trinh-oracle-form Trang 7 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 8 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 9 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 10 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 11 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 12 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 13 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 14 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
4.1.1 Windows
Name: WND_MAIN
Maximize Allowed: No
Minimize Allowed: No
Width: 10.24
Height: 6
Title: TÊN CHỨC NĂNG – user truy cập <tên user truy cập>, đưa vào thư viện
4.1.2 Canvas
Name: theo quy định đặt tên trên
Width: 10.24
Height: 6
Background color: GRAY12
Foreground color: DARKBLUE
Lable của Tab Pages canvas: Viết hoa chữ cái đầu tiên còn lại viết thường
4.1.3 Prompt
Background color: GRAY12
Foreground color: DARKBLUE
Font Name: Arial
Font Size: 10
Font Weight: Medium
Font Style: Plain
Font Spacing: Normal
Prompt Attachment Edge:
Start: Nếu hiển thị 1 record
Top: Nếu hiển thị nhiều record
Prompt Alignment: Center
Prompt Alignment Offset: 0.05
cmnd-chuan-lap-trinh-oracle-form Trang 15 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
Chú ý: Trong trường hợp các Prompt chồng lấn lên nhau trong Layout Spread
table thì có thể tùy biến để hiển thị rõ Prompt
4.1.4 Frame
Join Type: Bevel
Bevel: Inset
Frame Title Alignment: Left
Frame Title Offset: 0.15
Frame Title Spacing: 0.02
Frame Title Foreground Color: darkblue
Frame Title Font Name: Arial (Chữ in – caps lock)
Frame Title Font Size: 8
Frame Title Font Weight: Bold
Frame Title Font Style: Plain
Frame Title Font Spacing: Normal
Fill Patern: None
cmnd-chuan-lap-trinh-oracle-form Trang 16 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
4.1.7 Item
cmnd-chuan-lap-trinh-oracle-form Trang 17 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
Chú ý:
Đối với Push button xử lý:
o Width: Trên cùng màn hình các Push Button nên có cùng Width
o Label: Cần có ký tự để thực hiện phím Shortcut. Ký tự làm shortcut là : 1. , 2. ,
… và ở vị trí đầu tiên của Label, kế tiếp là dấu chấm (.) , tiếp theo nội dung
label
o Mouse Navigate: Yes
o Keyboard Navigable: Yes
Đối với Push button LOV:
o Mouse Navigate: No
o Keyboard Navigable: No
o Iconic: Yes
o Icon Filename: AFLIST
3 ALERT_IND
6 HELP_TEXT
cmnd-chuan-lap-trinh-oracle-form Trang 18 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 19 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
Các button List Of Values (LOV) không cho phép điều hướng đến, cụ thể thuộc tính
Keyboard Navigate là No và Mouse Navigate là No
Các button xử lý phải cho phép điều hướng đến, cụ thể thuộc tính Keyboard
Navigate là Yes và Mouse Navigate là Yes
Các item được điều hướng đến trong 1 block chỉ được phép nằm trên 1 màn hình (để
tránh di chuyển bằng phím tab đang từ màn hình này lại nhảy sang màn hình khác)
Các Block Base phải cho phép query trên các Item Unbound
Cần lưu lại được thông tin cập nhật bản ghi yêu cầu:
o Đối với các block base cho phép insert, update dữ liệu thì cần thêm vào trigger
pre-insert, pre-update đoạn code sau:
- Pre-insert
:TEN_BLOCK.Created_By := :Global.User_Name;
:TEN_BLOCK.Create_Date := Sysdate;
- Pre-update
:TEN_BLOCK.Modified_By := :Global.User_Name;
:TEN_BLOCK.Modify_Date := Sysdate;
o Kiểu dữ liệu của 2 item Ngay_Tao và Ngay_Sua_Cuoi là Datetime
Phải xử lý trigger pre-query và post-query của block base như sau:
o Ví dụ có block base EMPLOYEES, cách xử lý pre-query và post-query:
- Thêm 1 biến vào Package Spec f_pkg_ local như sau:
cmnd-chuan-lap-trinh-oracle-form Trang 20 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
c_Def_Where := f_Pkg_Local.c_Emp_Def_Where;
End If;
-- Truy van Unbound Item
-- UB Gro_Group_Number
c_Sub_Where := Null;
c_String := Name_In('EMPLOYEES.GRO_GROUP_NUMBER');
If (c_String Is Not Null) Then
If Substr(c_String, 1, 1) In ('<', '>', '=') Then
c_Sub_Where := l_Fun_Add_And(c_Sub_Where) ||
'(GROUP_NUMBER ' || c_String || ')';
Elsif Substr(c_String, 1, 1) = '#' Then
c_Sub_Where := l_Fun_Add_And(c_Sub_Where) ||
'(GROUP_NUMBER ' || Substr(c_String, 2) || ')';
Elsif Instr(c_String, '%') <> 0 Then
c_Sub_Where := l_Fun_Add_And(c_Sub_Where) ||
'(GROUP_NUMBER LIKE ''' || Replace(c_String, '''', '''''') ||
''')';
Else
c_Sub_Where := l_Fun_Add_And(c_Sub_Where) ||
'(GROUP_NUMBER =''' || Replace(c_String, '''', '''''') || ''')';
End If;
End If;
If (c_Sub_Where Is Not Null) Then
c_Def_Where := l_Fun_Add_And(c_Def_Where) || '(GRO_ID
IN (SELECT Gro_Id FROM GROUPS WHERE ' || c_Sub_Where || '))';
End If;
-- Cac Item UB khac
--
Set_Block_Property(v_Block_Id, Default_Where, c_Def_Where);
Exception
When Value_Error Then
l_Pkg_Mess.Pro_Push('Lỗi: ' || Sqlerrm, 'E');
End;
Code Post-query:
-- Truy van du lieu cho cac truong Unbound
-- Resets block Where clause
Begin
Set_Record_Property(:System.Trigger_Record, 'EMPLOYEES',
Status, Query_Status);
If (f_Pkg_Local.c_Emp_Def_Where <> 'first_time') Then
Set_Block_Property('EMPLOYEES', Default_Where,
f_Pkg_Local.c_Emp_Def_Where);
f_Pkg_Local.c_Emp_Def_Where := 'first_time';
End If;
End;
cmnd-chuan-lap-trinh-oracle-form Trang 21 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 22 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
Hình 4 DML
cmnd-chuan-lap-trinh-oracle-form Trang 23 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
6 GHI CHÚ
Chú thích mã lệnh là việc rất quan trọng đối với từng thành viên trong nhóm nhưng
tiếc rằng ý thức về việc ghi comments này lại thường bị lãng quên. Về mặt quan
trong của comment tài liệu này không muốn nhắc lại nữa.
Khi bắt đầu một PROCEDURE, một FUNCTION, TRIGGER, khối lệnh … bắt
buộc yêu cầu người lập trình cần comments ngay sau phần tên của module trước các
lệnh khai báo và trước từ khoá BEGIN
ví dụ:
FUNCTION fun_name(...)
RETURN NUMBER IS
/*-------------------------------------------------------------
---Mục đích:
---Tham số: (nếu có)
---Người tạo:
---Ngày tạo:
---Người sửa đổi cuồi cùng:
---Ngày sửa đổi cuối cùng:
-------------------------------------------------------------*/
...
BEGIN
....
END;
Mỗi đoạn lệnh cần comment giải thích rõ nghĩa của đoạn lệnh.
cmnd-chuan-lap-trinh-oracle-form Trang 24 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
7 KINH NGHIỆM
Phần này ghi lại các kinh nghiệm thu được trong quá trình lập trình và maintain
chương trình, hỗ trợ người sử dụng.
cmnd-chuan-lap-trinh-oracle-form Trang 25 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
7.4 SUBTYPE
Sử dụng SUBTYPE để chuẩn hóa kiểu dữ liệu thường xuyên sử dụng
7.5 CONSTANT
Sử dụng CONSTANT lưu trữ những giá trị không thay đổi
Nếu giá trị của biến không bị thay đổi, thì khai báo nó như một hằng số
CONSTANT.
7.6 ĐƠN GIẢN HOÁ BIỂU THỨC LOGIC PHỨC TẠP BẰNG BIẾN
HOẶC HÀM BOOLEAN
Giá trị của một biểu thức logic là một trong ba giá trị: TRUE, FALSE, hoặc NULL.
Ta nên sử dụng biến hoặc hàm logic thay thế những biểu thức logic trong trường
hợp biểu thức đó phức tạp; Mục đích là code trông dễ đọc, dễ hiểu.
Ví dụ:
IF total_sal BETWEEN 10000 AND 50000 AND
emp_status(emp_rec.empno) = 'N' AND
(months_between(emp_rec.hiredate, SYSDATE) > 10) THEN
give_raise(emp_rec.empno);
END IF;
DECLARE
eligible_for_raise BOOLEAN := total_sal BETWEEN 10000 AND 50000
AND
emp_status(emp_rec.empno) = 'N'
AND
(months_between(emp_rec.hiredate,
SYSDATE) > 10);
BEGIN
IF eligible_for_raise THEN
give_raise(emp_rec.empno);
END IF;
END;
cmnd-chuan-lap-trinh-oracle-form Trang 26 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 27 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
màn hình nên có 1 block control riêng và các button xử lý trong màn hình đó sẽ
được đặt trên block control đó, tránh lỗi điều hướng
Cần xác định DATA TYPE, MAXIMUM LENGTH, DATABASE ITEM,
COLUMN NAME, INSERT/UPDATE/DELETE.
Không nên sử dụng biến :GLOBAL làm initial value trong thuộc tính của một item,
như thế rất khó kiểm soát. Thay vào đó ta có thể thiết lập initial value thông qua
trigger WHEN-NEW-RECORD-INSTANCE
Ví dụ:
o Các item có DOMAIN cần hiển thị dưới dạng check box (domain YESNO) hay
poplist (domain khác) cần xác định DOMAIN của item đó trong
CG_REF_CODES
cmnd-chuan-lap-trinh-oracle-form Trang 28 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
cmnd-chuan-lap-trinh-oracle-form Trang 29 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
o Trigger này ít được quan tâm trong khâu lập trình. Cần tìm ra cơ chế tự động để
thích nghi với những thay đổi database.
cmnd-chuan-lap-trinh-oracle-form Trang 30 / 31
Tài liệu chuẩn lập trình Oracle form
Công ty Khoa học Công nghệ Phần mềm - CSE
CMND-SD030
7.8.8 Truy cập Item của Form A từ Form B được gọi từ Form A
Dùng Open_Form
o Tạo một thư viện dùng chung cho cả form A và B
o Từ form A gọi Form B theo hình thức chia sẻ thư viện dùng chung (cả 2 cùng
tác động được tới cùng thư viện để sử dụng chung kết quả của nhau).
o Ví dụ:
- Open_Form(‘Form_B’, Activate, No_Session,
SHARE_LIBRARY_DATA);
- Trên Form A tạo trigger When-Form-Navigation để xử lý khi thoát form B
Dùng Call_Form
o Khi dùng Call_Form thì form gọi sẽ dừng lại tại vị trị gọi, rồi đợi đến khi form
được gọi thoát sẽ tiếp tục xử lý các lệnh tiếp theo sau vị trí gọi form. do đó
sẽ có nhiều cách xử lý ở đây để lấy giá trị trả về từ form được gọi: Có thể dùng
biến Global hoặc có thể sử dụng thư viện dùng chung như cách trên.
Lưu ý khi dùng call_form thì form gọi phải được save (tức là trạng thái khác
changed
cmnd-chuan-lap-trinh-oracle-form Trang 31 / 31