7.4  การเขียนสคริปท์ที่ดึงข้อมูล, เพิ่มเรคคอร์ด, ลบเรคคอร์ด และปรับปรุงข้อมูล

 

การเขียนสคริปท์ของ User Event

 1. แน่ใจว่าท่านไม่ได้เลือกวัตถุบนวินโดว์
2. คลิกปุ่ม Script บน PainterBar หรือ เลือกจาก Script จาก popup เมนูของ Window ออบเจ็คท์
3. คลิก Select Event List Box เลือก ue_retrieve
4. พิมพ์
 
IF Dw_master.retreive() <> -1 then
Dw_master.setfocus()
Dw_master.setrowfocusindicator(Hand!)
End if

5. คลิก Select Event List Box เลือก ue_insert
6. พิมพ์
 

dw_detail.reset()
dw_detail.insertrow(0)
dw_detail.setfocus()

7. คลิก Select Event List Box เลือก ue_update
8. พิมพ์
 

if dw_detail.update() = 1 then
commit using sqlca;
messagebox("Save","Save succeeded")
else
rollback using sqlca
end if

9. คลิก Select Event List Box เลือก ue_delete
10. พิมพ์
 

dw_detail.deleterow()

11. ทำการคอมไพล์สคริปท์ เลือกเมนู Design > Complie จากเมนู
 

การเขียนสคริปท์ดึงข้อมูลให้แก่ master datawindow

 
ขณะนี้ท่านกำลังจะเขียนสคริปท์ที่เรียกใช้เหตุการณ์ User Event ที่ชื่อว่า ue_retrieve ในการเรียกใช้เหตุการณ์ ue_retrieve นี้จะเรียกใช้จากเหตุการณ์ Open ซึ่งจะทำงานเมื่อวินโดว์ออบเจ็คท์เปิดทำงาน ท่านต้องแน่ใจก่อนว่าท่านไม่ได้เลือกออบเจ็คท์ใดๆ บนวินโดว์ออบเจ็คท์ ก่อนเปิด สคริปท์ของวินโดว์

1. คลิก Select Event listbox เลือก Open Event  พิมพ์
 

dw_master.settransobject ( sqlca )
dw_detail.settransobject ( sqlca )
this.EVENT ue_retrieve()

       สองบรรทัดแรกเป็นการกำหนด SQLCA ทรานเซ็คชั่นออบเจ็คท์เพื่อติดต่อกับฐานข้อมูล ส่วนบรรทัดที่สามเป็นการเรียกใช้เหตุการณ์ ue_retrieve

2. กดปุ่ม Return  หรือ เลือก File > Return จากเมนู
โปรแกรม PowerBuilder จะคอมไพล์ สคริปท์ และกลับมายัง Window Painter

การเขียนสคริปท์ดึงข้อมูลให้แก่ detail datawindow

 
ท่านจะได้เขียนสคริปท์ที่เหตุการณ์ RowFocusChanged Event ของ dw_master เพื่อทำการดึงข้อมูลใน dw_detail DataWindow
  •  เมื่อเปิดวินโดว์เป็นครั้งแรก แอพพลิเคชันจะติดต่อกับตาราง Employee และดึงข้อมูลขึ้นมาทั้งหมด โดยที่จะแสดงอยู่ที่ดาต้าวินโดว์ส่วนที่อยู่ข้างบนสุดของวินโดว์และรายละเอียดของตาราง Employee จะแสดงอยู่ที่ดาต้าวินโดว์ด้านล่าง
  • เมื่อผู้ใช้งานเคลื่อนย้ายตำแหน่งของเรคคอร์ดบน dw_master จะทำให้ dw_detail เปลี่ยนแปลงตามไปด้วย
   ท่านจะได้เขียนสคริปท์ที่เหตุการณ์ RowFocusChanged  ของ dw_master และเขียนสคริปท์ดึงข้อมูลตาม employee id ให้แก่ dw_detail

 1. เลือก dw_master DataWindow คอนโทรล
เลือกสคริปท์จาก Popup เมนูของ dw_master
เลือกเหตุการณ์ RowFocusChanged จาก Select Event Listbox พิมพ์
 

long ll_itemnum
ll_itemnum = this.object.data [currentrow,1]
IF dw_detail.Retreive (ll_itemnum) = -1 THEN
MessageBox("Retreive","Retreive error-detail")
END IF

2. กดปุ่ม Return      หรือ เลือก File > Return จากเมนู
โปรแกรม PowerBuilder จะทำการคอมไพล์สคริปท์ให้ทันที นำเมนูมาสัมพันธ์กับวินโดว์

 การนำเมนูมาสัมพันธ์กับวินโดว์

        เมื่อสร้างวินโดว์เรียบร้อยแล้วต้องมีเมนู ซึ่งจะได้แนะนำการนำเมนู m_fileopen มาสัมพันธ์กับวินโดว์ที่สร้าง
1. แน่ใจว่าท่านไม่ได้เลือกออบเจ็คท์ใด ๆ บนวินโดว์

2. เลือก Properties จาก Popup เมนูของวินโดว์

3. พิมพ์ m_fileopen   ในช่องเมนู Name

4. กดปุ่ม OK
โปรแกรม PowerBuilder จะนำเมนูไปสัมพันธ์กับวินโดว์ซึ่งเมื่อทำงานเมนูบาร์ที่แสดงอยู่จะเปลี่ยนไปใช้ m_fileopen เมื่อหน้าจอนี้ถูกเปิดขึ้น
จัดเก็บวินโดว์
 

การจัดเก็บวินโดว์

 1. เลือก File > Save จากเมนู ไดอะล็อกบ็อกซ์ Save Window จะปรากฏขึ้น

2. เลือกไฟล์ workshop.pbl ในช่อง Application Libraries
พิมพ์ w_master_detail
พิมพ์หมายเหตุและกดปุ่ม OK
เมื่อกดปุ่ม OK โปรแกรม PowerBuilder จะกลับมาทำงานที่ Window Painter และแสดงไตเติลว่า w_master_detail

3. ปิด w_master_detail


Previous 
Next 
TOC