วันจันทร์ที่ 24 มิถุนายน พ.ศ. 2556

SubFile แบบง่าย

SubFile แบบง่าย

Subfile-Refer

SubFile เป็นการแสดงผลหลาย record ในหนึ่งหน้าจอ

เทียบกับ DotNet ก็คือแสดงผลแบบ GridView ครับ (แต่ GridView ง่ายกว่ามาก)

20 ปีที่แล้ว เป็นเทคนิคที่สุดยอดมาก  แต่  ณ.ปัจจุบัน เป็นงานพื้นฐาน (ต้องเขียนได้เร็ว)
แต่เนื่องจาก ยังต้องใช้เครื่องมือ (Tool) พื้นฐาน รุ่นเก่า  การสร้างจึ่งต้องมีขั้นตอน

ผู้เขียนโชคดีที่ได้อ่านเอกสารการเขียนโปรแกรมชุดหนึ่ง  (เอกสารจากญี่ปุ่น)
ได้อธิบายแนวทางที่ชัดเจน  สามารถนำไปประยุกต์ต่อได้  มาลองดูกันครับ

หลักการ Subfile (อีกแล้ว)

A. จะแสดงอะไร  (เช่น 3 Field, แสดงครั้งละ 10 row, เริ่มต้นที่ row ที่ 8)
B. นำข้อมูลไป ใส่ใน ข้อ A
C. จัดการแสดงผล

เตรียม data ที่จะใช้งานดังนี้

A. จะแสดงอะไรใน subfile (เช่น 3 Field, แสดงครั้งละ 10 row, เริ่มต้นที่ row ที่ 8)


a.1 รายละเอียดข้างต้น เป็นการกำหนดที่ Display-File
     อยากออกแบบแล้วแสดงผลแบบนี้  (แสดง 2 field, page ละ 4 rows)
     ออกแบบหน้าจอ  จะได้หน้าตาแบบนี้ (ใน STRSDA)
     การ Code ส่วน Sub-File จะระบุดังนี้
     เทคนิค - ใช้ Indicator ตัวเดียว คือ *IN55
     ในส่วน  "รับค่า" และข้อความ  ด้านบน  จะระบุ ถัดไปตามนี้
      การออกแบบ  แยกเป็น 2 record format
- ชนิด Subfile-Data     ใช้บอกโครงสร้าง File (คล้าย File/Field Description) =  SQ0110S1
- ชนิด Subfile-Control    ใช้กำหนด การแสดงผล (คล้าย File Description) = SQ0110C1
     Subfile อ้างอิงไปยัง Subfile Data อะไร
     Subfile Page จำนวนที่แสดงที่หน้าจอ เช่น 4
     Subfile Size  เลือกให้ค่าเท่ากับ Subfile Page หรือ Subfile Page +  1 ก็ได้ครับ
     Subfile End  เหมาะกับ ตย.นี้มาก (อ่านข้อมูลจนหมด)  
        ถ้ายังมีข้อมูลต่อ (next page) ให้แสดงเครื่องหมาย "+" ที่มุมขวาล่างของจอ
     Subfile Record Number ต้องระบุ "ตัวแปร" เพื่อติดต่อ
     กรณีนี้  เมื่อระบุ  ค่า row ใน page จะแสดงที่หน้าจอ page นั้น (เช่น SubFile Page = 4 เมื้อป้อน RRN = 6  Subfile จะแสดงใน page ที่ 2 เป็นต้น)


a.2 กำหนดใน F-spec ต้องประกาศ เพื่อเรียกใช้ Sub-file และระบุ RRN ให้กับมัน
      (ในระบบ DB2 ทุก file ต้องมี RRN กำกับ)


     สำหรับคนที่อยากเข้าใจ Code
     K = Continue Line
            SFILE = ประกาศจะใช้ Sub-File กับ Record Format (DSPF) = SQ0110S1
                     กำหนด RRN ให้กับตัวแปร RRN01 (ยังไม่ได้กำหนดขนาด)

B. นำข้อมูลไป ใส่ใน Subfile (ข้อ A)

b.1 reset ก่อนใช้งาน
      ใน DSP-F เราใช้ *IN55 ควบคุม  การแสดงผล กับ reset (delete)
      RRN01 (อ้างอิงจาก F-Spec) ขนาด 4,0  เริ่มต้นมีค่าเป็น 0 (ไม่มีข้อมูล)


b.2 Loop  อ่านข้อมูลใส่ใน A
      จุดสำคัญ   ต้อง  เพิ่ม RRN ให้ทุกครั้งที่ write Subfile-Data

C. คำสั่งแสดงผล Subfile

แต่เนื่องจาก Subfile มีข้อมูลหลาย rows
การดูผล ก็ใช้ page up/down ได้ หรือ  เลือกการแสดงผลไปที่ page ใดก็ได้ โดยระบุ บรรทัดที่ (RRN)
เช่น  ต้องการให้แสดงที่ page ที่ 2 (RRN= 5 ถึง 8)


หลายคนอาจจะมองว่า จัดแบบนี้ดูแปลกๆ
ในบทต่อๆไป  การจัดแบบนี้จะช่วยให้เรา "ปรับ" แต่งได้ง่ายครับ

สรุป

จะเห็นว่า  หลักการเข้าใจนาน  แต่โปรแกรมเขียน "ไม่มาก"!
ส่วนหนึ่งเกิดจาก การ "ลด" ตัวแปร ทำให้จัดการ "ง่าย"
ถ้าทำบ่อยๆ จะใช้เวลาไม่นาน (ผู้สอน  มักจะสร้างใหม่เพื่อสอน  แทนการเปิดให้ลอก)



1 ความคิดเห็น:

  1. กำลังงงตรงนี้อยู่เลยอ่านแล้วเข้าใจมากขึ้นเลยค่ะ

    ตอบลบ