คำนำ
คู่มือการใช้งาน SQLVantage (ภาษาไทย)
คู่มือการใช้งานระบบรายงาน SQLVantage ฉบับสมบูรณ์
สารบัญ
- ภาพรวมระบบ
- การติดตั้งและการปรับใช้ (Windows / Linux)
- คำแนะนำการกำหนดค่า
- คู่มือสำหรับผู้ดูแลระบบ
- คำแนะนำการออกแบบรายงาน (SQL/FORM/HTML)
- คู่มือสำหรับผู้ใช้งานทั่วไป
- การประมวลผลคำขอและผลลัพธ์
- คำถามที่พบบ่อย (FAQ)
- ภาคผนวก: การจัดเก็บข้อมูล การสำรองข้อมูล และการย้ายระบบ
1. ภาพรวมระบบ
1.1 SQLVantage คืออะไร
SQLVantage คือระบบรายงานบนเว็บ โดยมี "ผู้ดูแลระบบ" เป็นผู้ดูแลคำนิยามของรายงาน และ "ผู้ใช้งานทั่วไป" สามารถเลือกรายงาน กรอกเงื่อนไขการค้นหา รับผลลัพธ์แบบ asynchronous และส่งออกเป็นไฟล์ Excel / HTML / JSON / TEXT ผ่านทางหน้าเว็บ
1.2 เทคโนโลยีที่ใช้
ระบบนี้ใช้สถาปัตยกรรมเว็บแบบบริสุทธิ์: ไม่จำเป็นต้องติดตั้งไคลเอนต์หรือปลั๊กอินใดๆ ในเบราว์เซอร์ สามารถเข้าถึงได้ด้วยเบราว์เซอร์สมัยใหม่ทุกตัว สำหรับฝั่งเซิร์ฟเวอร์ ต้องการเพียงโปรแกรมที่รันได้และโฟลเดอร์กำหนดค่าที่เกี่ยวข้อง ทำให้การติดตั้งทำได้ง่าย
1.3 แนวคิดหลัก
| แนวคิด | คำอธิบาย |
|---|---|
| รายงาน (Report) | 1 รายงาน = โค้ด 3 ส่วน (SQL + FORM + HTML) + ไฟล์ JSON รูปแบบ 3 ไฟล์ (SqlFormat / FormFormat / HtmlFormat) โดยสังกัดอยู่ใน "ความรับผิดชอบ" หนึ่ง |
| ความรับผิดชอบ (Responsibility) | หมวดหมู่ของรายงาน ซึ่งตรงกับ Responsibility ใน Oracle EBS ใช้สำหรับจัดกลุ่มรายงานตามโมดูลเพื่อแสดงให้ผู้ใช้เห็น |
| พารามิเตอร์ (Parameter) | เงื่อนไขการค้นหาที่กำหนดใน FORM (เช่น วันที่, ลูกค้า, องค์กร เป็นต้น) เมื่อส่งข้อมูลแล้วจะถูกนำไปผูกกับ SQL ในรูปแบบ named parameter |
| คำขอ (Request) | ภารกิจการรันรายงานเฉพาะครั้งที่ส่งโดยผู้ใช้ทั่วไป ระบบจะประมวลผลแบบ asynchronous ในพื้นหลังและสร้างไฟล์ผลลัพธ์ |
| ไลเซนส์ (License) | ไฟล์ไลเซนส์ conf/license.dat ที่ควบคุมจำนวนรายงานและระยะเวลาการใช้งาน |
1.4 บทบาทผู้ใช้งาน
| บทบาท | ทางเข้า | สิทธิ์การใช้งาน |
|---|---|---|
| ผู้ดูแลระบบ (admin) | /admin/login |
จัดการผู้ใช้, จัดการความรับผิดชอบ, จัดการรายงาน, นำเข้าไลเซนส์, ตั้งค่าระบบ, ตรวจสอบคำขอทั้งหมด |
| ผู้ใช้งานทั่วไป (normal) | /login |
เลือกรายงาน, กรอกพารามิเตอร์, ส่งคำขอ, ดูคำขอของตนเอง, ดาวน์โหลดผลลัพธ์, เปลี่ยนรหัสผ่าน |
1.5 โครงสร้างไดเรกทอรี
ไฟล์หลักหลังจากแตกไฟล์แพ็กเกจ:
SQLVantage/
├── SQLVantage.exe / sqlvantage # โปรแกรมหลัก (Windows / Linux)
├── conf/
│ ├── app.conf # ไฟล์กำหนดค่าระบบ (พอร์ต / ภาษา / Oracle เป็นต้น)
│ ├── data.dat # ฐานข้อมูลธุรกิจ (ผู้ใช้ / ความรับผิดชอบ / รายงาน / คำขอ)
│ ├── license.dat # ไฟล์ไลเซนส์
│ └── locale/ # แพ็กเกจภาษา
├── data/ # สร้างขึ้นขณะรัน: <RequestID>.xlsx / <RequestID>.json
├── docs/ # เอกสารการใช้งาน (หลายภาษา, รวม images/)
└── tmp/ # ไฟล์ชั่วคราว (เซสชัน, งาน)
2. การติดตั้งและการปรับใช้ (Windows / Linux)
2.1 ข้อกำหนดด้านสภาพแวดล้อม
- ระบบปฏิบัติการ: Windows 7+ / 64-bit Linux (x86_64)
- วิธีการรัน (แนะนำ): ใช้โปรแกรมที่รันได้ที่จัดทำไว้โดยตรง (
SQLVantage.exeหรือ binary ของ Linux) โดยไม่ต้องติดตั้ง runtime environment ใดๆ - ฐานข้อมูล Oracle: การรันรายงานจำเป็นต้องเชื่อมต่อกับ Oracle ได้ (ระบบนี้เชื่อมต่อกับ Oracle EBS เป็นค่าเริ่มต้น) โปรดตรวจสอบเครือข่ายและบัญชีผู้ใช้ล่วงหน้า
- สิทธิ์ของดิสก์/ไดเรกทอรี: ไดเรกทอรีที่โปรแกรมทำงานต้องมี สิทธิ์ในการเขียน (writable) เนื่องจากในระหว่างการทำงาน ระบบจะสร้างไดเรกทอรี
data/และtmp/รวมถึงอ่าน/เขียนไฟล์ในconf/
2.2 การติดตั้งบน Windows
-
แตกไฟล์: แตกไฟล์แพ็กเกจ (zip) ไปยังไดเรกทอรีใดก็ได้ เช่น
D:\SQLVantage\หลังจากแตกไฟล์แล้ว ให้ตรวจสอบว่ามีไฟล์สำคัญดังต่อไปนี้:D:\SQLVantage\ ├── SQLVantage.exe # โปรแกรมหลัก ├── conf\app.conf # ไฟล์กำหนดค่า ├── conf\data.dat # ฐานข้อมูล (ฐานข้อมูลว่างที่มาพร้อมกับแพ็กเกจ) └── conf\locale\ # แพ็กเกจภาษา -
(ไม่บังคับ) แก้ไขการกำหนดค่า: เปิด
conf\app.confด้วย Notepad และแก้ไขที่อยู่สำหรับ listen, พอร์ต, การเชื่อมต่อ Oracle เป็นต้น ตาม บทที่ 3 -
เริ่มโปรแกรม: ดับเบิลคลิกที่
SQLVantage.exeหรือรันผ่าน command line:cd D:\SQLVantage SQLVantage.exeหลังจากเริ่มทำงานสำเร็จ คอนโซลจะพิมพ์ข้อมูลเวอร์ชัน สถานะไลเซนส์ และเข้าสู่สถานะ listening
-
เข้าถึงระบบ: เปิด
http://127.0.0.1:8080ในเบราว์เซอร์ (ที่อยู่เริ่มต้น สามารถแก้ไขได้ในapp.conf) -
การตั้งค่า Firewall: หากต้องการเข้าถึงจาก LAN/ระยะไกล ให้เปิดพอร์ตที่เกี่ยวข้อง (เช่น 8080) ใน Windows Firewall:
netsh advfirewall firewall add rule name="SQLVantage" dir=in action=allow protocol=TCP localport=8080
2.3 การติดตั้งบน Linux
-
แตกไฟล์: แตกไฟล์แพ็กเกจ (tar.gz หรือ zip) ไปยังไดเรกทอรีเป้าหมาย เช่น
/opt/sqlvantage:mkdir -p /opt/sqlvantage tar -xzf sqlvantage-linux-amd64.tar.gz -C /opt/sqlvantage cd /opt/sqlvantage -
กำหนดสิทธิ์การรัน:
chmod +x sqlvantage -
(ไม่บังคับ) แก้ไขการกำหนดค่า: แก้ไข
conf/app.conf(เช่นเดียวกับ Windows) -
ทดสอบการรันแบบ foreground:
./sqlvantageเมื่อเห็นข้อมูลเวอร์ชันและ log การ listen แสดงว่าเริ่มทำงานสำเร็จ กด
Ctrl+Cเพื่อหยุด -
รันแบบ background (แนะนำให้ใช้ systemd หรือ nohup):
วิธี A: nohup
cd /opt/sqlvantage nohup ./sqlvantage > sqlvantage.log 2>&1 &วิธี B: systemd (สร้างไฟล์
/etc/systemd/system/sqlvantage.service):[Unit] Description=SQLVantage Report System After=network.target [Service] WorkingDirectory=/opt/sqlvantage ExecStart=/opt/sqlvantage/sqlvantage Restart=always RestartSec=5 User=sqlvantage [Install] WantedBy=multi-user.targetจากนั้นรันคำสั่ง:
systemctl daemon-reload systemctl enable sqlvantage systemctl start sqlvantage systemctl status sqlvantage -
Firewall / Security Group: เปิดพอร์ต (เช่น 8080):
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload
2.4 การคอมไพล์จากซอร์สโค้ด (ไม่บังคับ)
สำหรับผู้ใช้ที่ได้รับซอร์สโค้ดเท่านั้น: รันคำสั่ง build ในไดเรกทอรีซอร์สเพื่อสร้างไฟล์ที่รันได้สำหรับแพลตฟอร์มปัจจุบัน สำหรับสภาพแวดล้อมการปรับใช้จริง แนะนำให้ใช้โปรแกรมที่รันได้ซึ่งเผยแพร่อย่างเป็นทางการโดยตรง
2.5 การเริ่มใช้งานครั้งแรก
ในการเริ่มใช้งานครั้งแรก ระบบจะดำเนินการกำหนดค่าเริ่มต้นโดยอัตโนมัติดังนี้:
- ตรวจสอบไฟล์ข้อมูล: อ่าน
conf/data.dat(มาพร้อมกับแพ็กเกจ หากหายไปโปรแกรมจะแจ้งว่า "conf/data.dat is not found" และปิดตัวลง — โปรดอย่าลบไฟล์นี้) - สร้างตารางอัตโนมัติ: ตาราง
user,responsibility,reportและrequestทั้ง 4 ตารางจะถูกสร้างโดยอัตโนมัติ - สร้างบัญชีผู้ดูแลระบบอัตโนมัติ: เมื่อเข้าถึง
/admin/loginครั้งแรก หากไม่มีผู้ใช้rootระบบจะสร้างให้โดยอัตโนมัติ:- ชื่อผู้ใช้:
root - รหัสผ่านเริ่มต้น:
SQLVantage - บทบาท: admin (ผู้ดูแลระบบ)
- คำเตือนด้านความปลอดภัย: โปรดเปลี่ยนรหัสผ่านนี้ทันทีหลังจากการเข้าสู่ระบบครั้งแรก (ผู้ดูแลระบบสามารถเปลี่ยนได้ที่ "การจัดการผู้ใช้")
- ชื่อผู้ใช้:
- ตรวจสอบไฟล์ไลเซนส์: หาก
conf/license.datหายไปหรือไม่ถูกต้อง คอนโซลจะพิมพ์คำเตือน ระบบยังคงทำงานได้แต่จะอยู่ภายใต้ข้อจำกัดของไลเซนส์ใน ส่วนที่ 4.7
3. คำแนะนำการกำหนดค่า
3.1 ตำแหน่งไฟล์กำหนดค่า
ไฟล์กำหนดค่าคือ conf/app.conf (รูปแบบ INI) โดยมีวิธีแก้ไข 2 วิธี:
- วิธีที่ 1 (แนะนำ, ผ่านหน้าจอ UI): หลังจากเข้าสู่ระบบในฐานะผู้ดูแลระบบ ให้ไปที่ "การตั้งค่าระบบ" (
/admin/setting) กรอกค่าที่ต้องการแล้วบันทึก ระบบจะเขียนกลับไปยังapp.confโดยอัตโนมัติ - วิธีที่ 2 (แก้ไขไฟล์โดยตรง): แก้ไข
conf/app.confด้วย text editor จากนั้นรีสตาร์ทโปรแกรม
3.2 ตารางคำอธิบายพารามิเตอร์
| พารามิเตอร์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
appname |
SQLVantage |
ชื่อแอปพลิเคชัน |
httpaddr |
127.0.0.1 |
IP Address สำหรับ listen; 0.0.0.0 หมายถึง listen ทุก network interface (เข้าถึงได้จาก LAN) |
httpport |
8080 |
พอร์ตสำหรับ listen แนะนำช่วง 8080~8099 |
runmode |
dev |
โหมดการทำงาน: dev (พัฒนา, แสดงข้อผิดพลาดโดยละเอียด) / prod (ใช้งานจริง, ซ่อนรายละเอียดข้อผิดพลาด) |
language |
en-US |
ภาษาเริ่มต้นของ UI (ลำดับความสำคัญต่ำกว่าพารามิเตอร์ URL / Cookie / ภาษาของเบราว์เซอร์) |
sessiongcmaxlifetime |
3600 |
เวลาหมดอายุของ Session (วินาที) ค่าเริ่มต้นคือ 1 ชั่วโมง |
max_execution_time |
30 |
เวลาทำงานสูงสุดของงานรายงาน (นาที) งานที่หมดเวลาจะถูกทำเครื่องหมายเป็น Terminated โดยอัตโนมัติ |
oracle_server |
เช่น 192.168.10.13 |
IP/Hostname ของเซิร์ฟเวอร์ฐานข้อมูล Oracle |
oracle_port |
1521 |
พอร์ต listen ของ Oracle |
oracle_database |
test |
ชื่อบริการของ Oracle (SERVICE_NAME) |
oracle_username |
apps |
ชื่อผู้ใช้ในการเชื่อมต่อ Oracle |
oracle_password |
ไม่มี | รหัสผ่านในการเชื่อมต่อ Oracle (โปรดกรอกรหัสผ่านจริง) |
3.3 การมีผลของสิ่งที่แก้ไข
sessiongcmaxlifetime: มีผลทันทีหลังจากบันทึก- พารามิเตอร์อื่นๆ (พอร์ต, Oracle ฯลฯ): ต้องรีสตาร์ทโปรแกรม เพื่อให้การเปลี่ยนแปลงมีผล
3.4 การเปลี่ยนภาษา
- ระบบมี 12 ภาษาในตัว: zh-CN, zh-TW, en-US, ja-JP, ko-KR, fr-FR, de-DE, es-ES, th-TH, vi-VN, ru-RU, pt-PT
- วิธีเปลี่ยน: เพิ่ม
?lang=zh-CNต่อท้าย URL (เช่น/?lang=zh-CN) หรือเปลี่ยนผ่านเมนูภาษาที่มุมขวาบนของคอนโซลผู้ดูแลระบบ หลังจากเลือกแล้วจะถูกบันทึกลงใน Cookie ซึ่งมีอายุ 1 ปี
4. คู่มือสำหรับผู้ดูแลระบบ
4.1 การเข้าสู่ระบบของผู้ดูแลระบบ
- เข้าถึง
http://<ที่อยู่เซิร์ฟเวอร์>:<พอร์ต>/admin/loginผ่านเบราว์เซอร์ - เข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบ (เริ่มต้นคือ
root / SQLVantage) - เมื่อเข้าสู่ระบบสำเร็จ จะเข้าสู่หน้าจัดการหลังบ้าน (
/admin) โดยเมนูทางด้านซ้ายประกอบด้วย: การจัดการรายงาน, การจัดการความรับผิดชอบ, การจัดการผู้ใช้, การจัดการคำขอ, การจัดการไลเซนส์, การตั้งค่าระบบ, แดชบอร์ด, เกี่ยวกับ
หมายเหตุ: บัญชีผู้ดูแลระบบต้องมี
บทบาท = adminและสถานะ = activeมิฉะนั้นจะไม่สามารถเข้าสู่ระบบหลังบ้านได้
4.2 แดชบอร์ดและแถบนำทางด้านบน
- แถบนำทางด้านบนใช้สำหรับทางลัด: แดชบอร์ด (
/admin), การรันรายงาน (/request, หน้าต่างใหม่), หน้าแรกพอร์ทัล (/) - มุมขวาบนสามารถเปลี่ยนภาษา และออกจากระบบ (
/admin/logout)
4.3 การจัดการผู้ใช้
ทางเข้า: /admin/user (เมนูซ้าย 「การจัดการผู้ใช้」)
คำอธิบายฟิลด์ผู้ใช้:
| ฟิลด์ | คำอธิบาย |
|---|---|
| ชื่อผู้ใช้ (UserName) | บัญชีสำหรับเข้าสู่ระบบ ไม่สามารถแก้ไขได้หลังจากสร้าง (อ่านอย่างเดียว) |
| อีเมล (Email) | ไม่บังคับ |
| บทบาท (Role) | normal (ผู้ใช้งานทั่วไป) / admin (ผู้ดูแลระบบ) |
| สถานะ (Status) | active (ปฏิบัติงานอยู่, เข้าสู่ระบบได้) / inactive (ลาออก/ระงับ, ห้ามเข้าสู่ระบบ) |
| รหัสผ่าน | ต้องระบุเมื่อสร้าง; จัดเก็บแบบเข้ารหัส ไม่แสดงผลบนหน้าจอ |
การดำเนินการ:
- สร้างใหม่: คลิกปุ่ม 「สร้างใหม่」 $\rightarrow$ กรอกชื่อผู้ใช้/อีเมล/บทบาท/สถานะ/รหัสผ่าน/ยืนยันรหัสผ่าน $\rightarrow$ ส่งข้อมูล
- แก้ไข: คลิก 「แก้ไข」 ในแถว $\rightarrow$ แก้ไขอีเมล บทบาท และสถานะได้; หากเว้นช่องรหัสผ่านว่างไว้ หมายถึงไม่มีการแก้ไขรหัสผ่าน
- ลบ: คลิก 「ลบ」 ในแถว ข้อควรระวัง:
- บัญชี
rootห้ามลบ - ผู้ใช้ที่มีรายงานผูกอยู่ห้ามลบ (ต้องลบหรือโอนย้ายรายงานก่อน)
- บัญชี
ประเด็นสำคัญในการจัดการ:
- ทางเข้าสู่ระบบของผู้ใช้งานทั่วไปคือ
/login(หน้าแรก) และของผู้ดูแลระบบคือ/admin/loginซึ่งแยกจากกัน - การตั้งสถานะผู้ใช้งานทั่วไปเป็น
inactiveเพียงพอสำหรับการระงับการเข้าสู่ระบบ โดยไม่จำเป็นต้องลบบัญชี - รายชื่อผู้ใช้จะซ่อน
rootโดยอัตโนมัติ
4.4 การจัดการความรับผิดชอบ (Responsibility)
ทางเข้า: /admin/responsibility (เมนูซ้าย 「การจัดการความรับผิดชอบ」)
คำอธิบายฟิลด์ความรับผิดชอบ:
| ฟิลด์ | คำอธิบาย |
|---|---|
| RespId | ID ความรับผิดชอบใน Oracle EBS |
| RespKey | Key ความรับผิดชอบใน Oracle EBS |
| ชื่อ (Name) | ชื่อที่แสดง และเป็นชื่อกลุ่มในเมนูรายงานสำหรับผู้ใช้งานทั่วไป |
| ชื่อย่อ (ShortName) | ไม่บังคับ |
การดำเนินการ:
- สร้างใหม่: คลิก 「สร้างใหม่」 $\rightarrow$ เลือกความรับผิดชอบของผู้ใช้จากรายการ dropdown (ข้อมูลมาจาก interface การสอบถาม Oracle EBS
/api/user/responsibilities/) เมื่อเลือกแล้ว RespId / RespKey / Name จะถูกเติมโดยอัตโนมัติ หรือสามารถกรอกเองได้ $\rightarrow$ ส่งข้อมูล - แก้ไข / ลบ: ดำเนินการผ่านปุ่มในแถว ข้อควรระวัง: ความรับผิดชอบที่ถูกอ้างอิงโดยรายงานไม่สามารถลบได้
จุดประสงค์: รายงานต้องสังกัดความรับผิดชอบใดหนึ่ง; 「เมนูรายงาน」 ในฝั่งผู้ใช้งานทั่วไปจะแสดงผลโดยจัดกลุ่มตามความรับผิดชอบ (รายงานที่ไม่มีความรับผิดชอบจะถูกจัดอยู่ในกลุ่ม 「ไม่ได้ระบุประเภท」)
4.5 การจัดการรายงาน
ทางเข้า: /admin/report (เมนูซ้าย 「การจัดการรายงาน」)
ฟิลด์รายงาน:
| ฟิลด์ | คำอธิบาย |
|---|---|
| ID | ลำดับที่ระบบรันให้โดยอัตโนมัติ |
| ความรับผิดชอบ | หมวดหมู่ที่รายงานสังกัด |
| ชื่อ (Name) | ชื่อรายงาน ผู้ใช้งานทั่วไปสามารถมองเห็นได้ |
| คำอธิบาย | ไม่บังคับ |
| สถานะ (Status) | Draft (ฉบับร่าง) / Release (เผยแพร่แล้ว) / Discard (ยกเลิก) |
| เวลาที่สร้าง/อัปเดต | ระบบบันทึกโดยอัตโนมัติ |
วงจรชีวิตของรายงาน (สำคัญ):
Draft (ฉบับร่าง, ช่วงออกแบบ) ──▶ Release (เผยแพร่แล้ว, ผู้ใช้มองเห็น)
│ │
│ └──▶ ห้ามลบโดยตรง ต้องเปลี่ยนเป็น Draft/Discard ก่อน
└──▶ Discard (ยกเลิก, ผู้ใช้มองไม่เห็น)
- เฉพาะรายงานที่มีสถานะ Release เท่านั้นที่จะปรากฏในเมนูรายงานของผู้ใช้งานทั่วไป
- รายงานที่เผยแพร่แล้ว (Release) ห้ามลบ ต้องเปลี่ยนสถานะในรายการเป็น Draft หรือ Discard ก่อนจึงจะลบได้
- คอลัมน์ 「ชื่อ」 「คำอธิบาย」 「สถานะ」 ในรายการ รองรับการ ดับเบิลคลิกที่เซลล์เพื่อแก้ไขโดยตรง (บันทึกอัตโนมัติ)
การดำเนินการ:
| ปุ่ม | คำอธิบาย |
|---|---|
| สร้างใหม่ | เปิดฟอร์ม: เลือกความรับผิดชอบ, กรอกชื่อ/คำอธิบาย/สถานะ $\rightarrow$ ส่งข้อมูล |
| โค้ด (สีม่วง) | เปิด เครื่องมือออกแบบรายงาน (ดูรายละเอียดในบทที่ 5 ซึ่งเป็นฟังก์ชันหลักของระบบ) |
| แก้ไข (สีน้ำเงิน) | เปิดฟอร์มข้อมูลพื้นฐานเพื่อแก้ไข |
| ลบ (สีแดง) | ลบรายงาน (สถานะ Release ห้ามลบ) |
4.6 การจัดการคำขอ (มุมมองผู้ดูแลระบบ)
ทางเข้า: /admin/request (เมนูซ้าย 「การจัดการคำขอ」)
ผู้ดูแลระบบสามารถดูคำขอรายงานของ ผู้ใช้ทุกคน (ผู้ใช้ทั่วไปดูได้เฉพาะของตนเอง) โดยรองรับ:
- ดูตามชื่อรายงาน/สถานะ/ขั้นตอน;
- ดูพารามิเตอร์, ผู้ส่ง, IP Address, เวลาที่สร้าง/เสร็จสิ้น;
- เมนู dropdown 「ส่งออก」 สามารถดาวน์โหลดผลลัพธ์ Excel / HTML / JSON / TEXT ของคำขอนั้นได้โดยตรง;
- ลบทีละรายการ หรือเลือกหลายรายการแล้ว 「ลบแบบกลุ่ม」
ความหมายของสถานะคำขอ ดูได้ใน บทที่ 7
4.7 การจัดการไลเซนส์ (License)
ทางเข้า: /admin/license (เมนูซ้าย 「การจัดการไลเซนส์」)
4.7.1 ไฟล์ไลเซนส์คืออะไร
ไฟล์ไลเซนส์คือ conf/license.dat เป็นข้อความสั้นๆ ที่ออกโดยผู้ให้บริการ ซึ่งประกอบด้วยข้อมูลดังนี้:
| ฟิลด์ | คำอธิบาย |
|---|---|
reg_id |
ID การลงทะเบียน (ตัวระบุลูกค้าหนึ่งเดียว) |
company |
ชื่อบริษัทที่ลงทะเบียน |
expire |
วันหมดอายุ (รูปแบบ YYYY-MM-DD เช่น 2026-12-31) |
ระบบจะตรวจสอบความถูกต้องของไฟล์ไลเซนส์โดยอัตโนมัติเมื่อเริ่มโปรแกรมและเมื่อนำเข้า หากมีการแก้ไขข้อมูล (เช่น แก้ไขข้อมูลลงทะเบียนหรือวันหมดอายุ) จะทำให้ไลเซนส์เป็นโมฆะ
4.7.2 ขั้นตอนการซื้อ
- ติดต่อผู้ให้บริการ/ผู้พัฒนา SQLVantage โดยให้ข้อมูลดังนี้:
- ชื่อหน่วยงาน/บริษัท (company);
- ID การลงทะเบียนของเซิร์ฟเวอร์ที่ต้องการไลเซนส์ (reg_id, ซึ่งผู้ให้บริการเป็นผู้กำหนด);
- ระยะเวลาไลเซนส์ที่ต้องการ
- ผู้ให้บริการใช้เครื่องมือสร้างไลเซนส์เพื่อสร้างไฟล์ไลเซนส์ (ข้อความ) และส่งมอบให้ลูกค้า
- เมื่อลูกค้าได้รับไฟล์แล้ว ให้ดำเนินการนำเข้าตามข้อ 4.7.3
4.7.3 การนำเข้าไลเซนส์
- ผู้ดูแลระบบเข้าสู่ระบบ $\rightarrow$ การจัดการไลเซนส์ (
/admin/license) - หน้าจอจะแสดงสถานะไลเซนส์ปัจจุบัน (Reg ID / บริษัท / วันหมดอายุ; หากไม่ถูกต้องหรือไม่มีจะแสดงคำเตือนสีแดง)
- คลิก 「เลือกไฟล์」 เพื่อเลือกไฟล์ไลเซนส์ที่ได้รับ (ตั้งชื่อไฟล์อย่างไรก็ได้ เช่น
license.dat) $\rightarrow$ คลิก 「นำเข้า」 - หลังนำเข้าสำเร็จ ระบบจะตรวจสอบและรีเฟรชหน้าจอโดยอัตโนมัติ เพื่อแสดงข้อมูลไลเซนส์ที่ถูกต้อง
หรือสามารถนำไปวางด้วยตัวเอง: บันทึกเนื้อหาไฟล์ไลเซนส์เป็น
conf/license.datแล้วรีสตาร์ทโปรแกรม
4.7.4 ข้อจำกัดเมื่อไม่มีไลเซนส์ / ไลเซนส์หมดอายุ
| ข้อจำกัด | คำอธิบาย |
|---|---|
| จำนวนรายงาน | เมื่อไม่มีไลเซนส์ (หรือหมดอายุ) สามารถมีรายงานได้สูงสุด 3 รายงาน หากเกินกว่านี้ การสร้างรายงานจะถูกปฏิเสธ (แจ้งว่า 「ไลเซนส์ถึงขีดจำกัด」) |
| การส่งคำขอ | เมื่อไม่มีไลเซนส์และมีรายงาน $\ge 3$ การส่งคำขอของผู้ใช้งานทั่วไปจะถูกปฏิเสธ |
| การหมดอายุ | หลังหมดอายุ ไม่ส่งผลต่อการทำงานของผู้ที่ล็อกอินอยู่ แต่การสร้างรายงาน/ส่งคำขอจะถูกจำกัด |
4.8 การตั้งค่าระบบ
ทางเข้า: /admin/setting (เมนูซ้าย 「การตั้งค่าระบบ」) เพื่อแก้ไข conf/app.conf แบบ Visual:
- ตั้งค่าแอปพลิเคชัน: ที่อยู่สำหรับ listen, พอร์ต, โหมดการทำงาน, ภาษาเริ่มต้น, เวลาทำงานสูงสุด;
- ตั้งค่าเซสชัน: เวลาหมดอายุของ Session (วินาที);
- ตั้งค่าฐานข้อมูล Oracle: เซิร์ฟเวอร์, พอร์ต, ชื่อบริการ, ชื่อผู้ใช้, รหัสผ่าน (มีปุ่มสลับแสดงข้อความปกติ/ข้อความเข้ารหัส)
หลังบันทึก บางพารามิเตอร์จะมีผลทันที พารามิเตอร์เช่น พอร์ต ต้องรีสตาร์ทโปรแกรม
4.9 เกี่ยวกับ
ทางเข้า: /admin/aboutus เพื่อดูเวอร์ชันของระบบ ข้อมูลการเผยแพร่ และอื่นๆ
5. คำแนะนำการออกแบบรายงาน (บทหลัก)
นี่คือคุณลักษณะสำคัญที่สุดของ SQLVantage บันทึก รายงานประกอบด้วย 3 ส่วน:
- SQL: กำหนดข้อมูลที่จะดึงข้อมูล (SQL ソース + การกำหนดค่ามetadata ของคอลัมน์)
- FORM: กำหนดเงื่อนไขที่ผู้ใช้กรอก (ฟอร์มพารามิเตอร์)
- HTML: กำหนดการแสดงผลลัพธ์ (ตาราง/กราฟ/Layout KPI card)
แต่ละส่วนมี 2 ชิ้นของข้อมูล — "Code" และ "Format JSON" — ซึ่งจะถูกบันทึกในที่สุดลงในบันทึกของรายงาน
5.1 สถานที่ทำงานเพื่อการออกแบบ
5.1.1 เข้าถึง Designer
- เข้าสู่ระบบในฐานะผู้ดูแลระบบ → การจัดการรายงาน (
/admin/report) - ค้นหารายงานเป้าหมายและคลิกปุ่ม "Code" (สีลิลา)
- เปิด Designer ขนาดใหญ่ (ประมาณ 98% ของหน้าจอ) โดยแบ่งอินเทอร์เฟสเป็นแผนกซ้ายและขวา:
┌────────────────────────────────────────────────────────┐
│ [下拉:SQL设计 | FORM设计 | HTML设计] [保存全部] │
├───────────────────────────────┬────────────────────────┤
│ ซ้าย: โค้ดแก้ไข │ ขวา: แผ่นแสดงผลแบบไดนามิก │
│ (โค้ด SQL / โค้ด FORM / │ (เปลี่ยนตามโหมดซ้าย) │
│ โค้ด HTML) ใช้ editor ร่วมกัน │ · SQL: ตารางการกำหนดค่าคอลัมน์ │
│ │ · FORM: ตารางการกำหนดค่าพารามิเตอร์ │
│ │ · HTML: ตารางการกำหนดค่าบล็อก │
└───────────────────────────────┴────────────────────────┘
5.1.2 สามโหมด
เมนูดรอปดาวน์บนเปลี่ยนโหมดการออกแบบ; โซนซ้ายและขวาจะซิงค์กัน:
| โหมด | เนื้อหาโซนซ้าย | แผ่นขวา |
|---|---|---|
| SQL Design | รายงาน SQL โค้ด (Syntax Oracle) | ตารางการกำหนดค่ามetadata ของคอลัมน์ (ส่งผลต่อ Excel-Export/หัวคอลัมน์หน้าเพจ) |
| FORM Design | โค้ด HTML ของฟอร์มพารามิเตอร์ | ตารางการกำหนดค่าพารามิเตอร์ + ส่วมแสดงผลแบบเรียลไลฟ์ + บทคัดลอกโค้ด FORM |
| HTML Design | โค้ด HTML แสดงผลผลลัพธ์ (เฟรมงานตัวอย่าง) | ตารางการกำหนดค่าบล็อกการออกแบบ + ส่วนแสดงผลแบบเรียลไลฟ์ + บทคัดลอกโค้ด HTML |
5.1.3 บันทึก
- ขณะออกแบบ: การเปลี่ยนแปลงในแผ่นขวาจะถูกบันทึกอัตโนมัติลงในฟิลด์ที่ซ่อนไว้ (
sql_code/sql_format/form_code/form_format/html_code/html_format). - การบันทึกแบบเป็นทางการ: คลิกปุ่ม "บันทึกทั้งหมด" ที่มุมซ้ายบน เพื่อส่งข้อมูล 6 ชิ้นไปที่
/admin/report/code/และบันทึกลงในฐานข้อมูล
จำเป็นต้องระวัง: หลังจากแก้ไข SQL / FORM / HTML ต้องคลิก "บันทึกทั้งหมด" เสมอ มิ autrement การเปลี่ยนแปลงจะสูญหายเมื่อปิดหน้าต่าง.
5.2 โมดุล SQL (การออกแบบแหล่งข้อมูลของรายงาน)
5.2.1 เขียนโค้ด SQL
- ใช้ Syntax Oracle; เขียนคำสั่ง SELECT โดยตรง (FROM/JOIN/WHERE/GROUP BY เป็นต้น อาจรวมอยู่ได้)
- เงื่อนไขการค้นหาใช้ ตัวชี้วัดพารามิเตอร์ที่มีชื่อ
:ชื่อพารามิเตอร์และชื่อพารามิเตอร์ต้องสอดคล้องกับfieldที่กำหนดในโมดุล FORM ตัวอย่าง หากใน FORM กำหนดพารามิเตอร์P_OU_IDเขียนดังนี้ใน SQL:
SELECT company_name, ou_id, amount
FROM fnd_ou_tl
WHERE ou_id = :P_OU_ID
- ชื่อคอลัมน์ทุกตัวที่เลือกใน SQL คือตัวระบุฟิลด์ของการ Export ไป Excel และตาราง HTML หน้าเพจ (แนะนำให้ใช้ตัวพิมพ์ใหญ่สม่ำเสมอเช่น
COMPANY_NAME)
5.2.2 ตารางกำหนดค่ามetadata ของคอลัมน์ SQL (Key: Excel-Export)
"ตารางการกำหนดค่ามetadata ของคอลัมน์ SQL" ขวา มี 1 รายการสำหรับแต่ละคอลัมน์ที่ SQL ออกผล:
| คอลัมน์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| field | ชื่อคอลัมน์ที่ SQL ออกผล (แปลงเป็นพิมพ์ใหญ่โดยอัตโนมัติเมื่อกรอก) | AMOUNT |
| title | หัวข้อแสดงผล — หัวข้อ Excel-Export และหัวคอลัมน์ของตารางหน้าเพจ | Amount |
| type | text / number / percent / date / month / time / datetime |
number |
| precision | จำนวนทศนิยมสำหรับค่าที่เป็นตัวเลข (ค่าเริ่มต้น 2) | 2 |
| format | รูปแบบตัวเลข/วันที่กำหนดเองสำหรับ Excel | #,##0.00 |
| align | left / center / right |
right |
Operation: คลิก "เพิ่มแถว" เพิ่มคอลัมน์ → คลิกสองครั้งบนเซลล์เพื่อเติม → จะสร้าง JSON snapshot อัตโนมัติ (พื้นที่แสดงผลโค้ดสีดำทางขวา) และเขียนกลับไปที่ sql_format แบบเรียลไทม์
5.2.3 Corelation ระหว่างการกำหนดค่าคอลัมน์ SQL และ Excel-Export
ระบบสร้างไฟล์ Excel (xlsx) ในเบื้องหลังตามกฎการ Corelation ดังนี้:
| การกำหนดค่าคอลัมน์ | พฤติกรรมการออกผลของ Excel |
|---|---|
field |
ตรงกับชื่อคอลัมน์ของผลลัพธ์ของการค้นหา และกำหนดว่าการกำหนดค่ารายการนี้ใช้กับคอลัมน์ใด |
title |
เขียนลงในเซลล์หัวแถวที่ 1 คือ หัวข้อของ Excel-Header |
type = text |
ค่าที่เขียนลงในเซลล์เป็นข้อความ |
type = number |
ค่าที่เขียนเป็นตัวเลข, ทศนิยม = precision; หากมี format ตั้งค่า สามารถออกผลด้วยรูปแบบตัวเลขที่กำหนดเอง, เช่น #,##0.00 |
type = percent |
ค่าที่ออกผลในรูปแบบเปอร์เซ็นต์; format สามารถ override ได้, เช่น 0.00% |
type = date |
ค่าที่ออกผลเป็นวันที่; format สามารถใช้เป็นรูปแบบวันที่, เช่น yyyy-mm-dd |
align |
การจัดเรียงแนวนอนของเซลล์: left / center / right |
precision |
ความแม่นยำของตัวเลข (ค่าเริ่มต้น 2) |
ในคำอื่นๆ: ตารางการกำหนดค่าคอลัมน์ SQL คือการกำหนดค่าที่ครบถ้วนของ "หัวคอลัมน์ + ประเภทของคอลัมน์ + รูปแบบตัวเลข + การจัดเรียง" ของ Excel-Export. แม้โดยไม่มีการกำหนดค่าใดๆ ก็ตาม Excel ยังสามารถ export ได้ (ประเภทข้อความเริ่มต้น, จัดเรียงซ้าย, หัวคอลัมน์ใช้ชื่อคอลัมน์เริ่มต้น) แต่มากจะ export ออกมาของ Excel ดียิ่งขึ้นหลังจากการกำหนดค่า
5.2.4 ตัวอย่างการออกแบบ SQL ที่ครบถ้วน
สมมติว่าเราต้องการสร้าง "รายงานค่าใช้จ่ายแยกประเภท":
- โค้ด SQL (Editor):
SELECT DEPT_NAME, MONTH, TOTAL_AMOUNT, RATE
FROM DEPT_COST_V
WHERE MONTH = :P_MONTH
ORDER BY DEPT_NAME
- การกำหนดค่ามetadata ของคอลัมน์:
| field | title | type | precision | format | align |
|---|---|---|---|---|---|
| DEPT_NAME | Department Name | text | left | ||
| MONTH | Month | date | yyyy-mm |
center | |
| TOTAL_AMOUNT | Total Amount | number | 2 | #,##0.00 |
right |
| RATE | Cost Ratio | percent | 2 | 0.00% |
right |
- ผลลัพธ์ของการ export ไป Excel: หัวข้อคือ "ชื่อแผนก / เดือน / ยอดรวม / อัตราค่าใช้จ่าย"; ยอดใช้จ่ายอยู่ด้านขวาด้วยทศนิยม 2 ตำแหน่งและเครื่องหมายจุลภาค, และอัตราแสดงเป็นเปอร์เซ็นต์
5.3 โมดุล FORM (การออกแบบฟอร์มพารามิเตอร์สำหรับค้นหา)
5.3.1 ตารางกำหนดค่าพารามิเตอร์
"ตารางการกำหนดค่าพารามิเตอร์" ขวา กำหนด 1 รายการสำหรับแต่ละพารามิเตอร์ของการค้นหา:
| คอลัมน์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| field | ระบุพารามิเตอร์; ต้องตรงกับ :ชื่อพารามิเตอร์ ใน SQL |
P_OU_ID |
| label | ข้อความแสดงบนฟอร์ม | Business Entity |
| type | ดูตารางประเภทด้านล่าง | select |
| value | เลือกได้; ค่าเริ่มต้น | 101 |
| verify | กฎการตรวจสอบ (เช่น required) |
required |
| static_options | ตัวเลือกแบบสถิติสำหรับ Dropdown/Radio; รูปแบบ key:value,key:value |
101:Shanghai,102:Beijing |
| api_url | ที่อยู่ API สำหรับตัวเลือกแบบไดนามิก; สามารถมี {ชื่อตัวแปร} มาร์กเกอร์ได้ |
/api/query?ou={P_OU_ID} |
| query_sql | คำสั่ง SQL สำหรับตัวเลือกแบบไดนามิก; สามารถมี {ชื่อตัวแปร} มาร์คเกอร์ได้; คืนค่า 2 คอลัมน์ (value/ text) |
SELECT id, name FROM tab WHERE ou = {P_OU_ID} |
ตารางประเภทส่วนประกอบ:
| ประเภท | คำอธิบาย |
|---|---|
text |
ช่องข้อความแบบบรรทัดเดียว |
number |
ช่องกรอกตัวเลข |
select |
เมนูดรอปดาวน์ (ตัวเลือกจากตัวเลือกสถิติหรือ API/SQL ไดนามิก) |
radio |
กลุ่มปุ่มเลือก (ตัวเลือกจากตัวเลือกสถิติ) |
date |
ผู้เลือกวันที่ (YYYY-MM-DD) |
year |
ผู้เลือกปี |
month |
ผู้เลือกเดือน |
time |
ผู้เลือกเวลา |
datetime |
ผู้เลือกวันที่และเวลา |
hidden |
ช่องที่ซ่อน (ไม่แสดง แต่ยังส่งพร้อมกับฟอร์ม) |
temp |
ค่าที่ซ่อน (ไม่ส่ง) |
5.3.2 การทำหน้าที่ของพารามิเตอร์ (การกรองเชื่อมโยง)
api_url/query_sqlรองรับ{ชื่อตัวแปร}มาร์คเกอร์: เมื่อผู้ใช้เปลี่ยนพารามิเตอร์ upstream (เช่น การเลือกองค์กร) ระบบจะแทนที่มาร์คเกอร์อัตโนมัติด้วยค่าจริงในฟอร์มปัจจุบันและขอตัวเลือกของเมนูดรอปดาวน์แบบไดนามิกทางด้านลงstream โดยอัตโนมัติ- หากพารามิเตอร์ upstream ยังไม่ได้กรอก เมนูดรอปดาวน์แบบด้านลงstream จะแสดง "กรุณากรอกเงื่อนไขบนก่อน" และล้างตัวเลือกเพื่อป้องกันข้อมูลด่าง"
- เลือกหนึ่งในสอง: เมนูดรอปดาวน์แบบสถิติ (
static_options) และเมนูดรอปดาวน์แบบไดนามิก (api_url / query_sql)
ข้อกำหนดรูปแบบข้อมูลสำหรับตัวเลือกเมนูดรอปดาวน์แบบไดนามิก: แต่ละรายการที่กลับมาจาก API/SQL ต้องมี 2 ฟิลด์:
val(value) และtxt(text แสดงผล)
5.3.3 การแสดงผลแบบเรียลไลฟ์และการสร้างโค้ด
- ใต้ตารางจะมี "พื้นที่แสดงผลแบบเรียลไลฟ์": ฟอร์ม (รวมถึงตัวควบคุมวัน เวลา เมนูดรอปดาวน์แบบเชื่อมโยง ฯลฯ) จะถูกแสดงผลแบบเรียลไลฟ์ขณะที่กำหนดพารามิเตอร์
- "บทคัดลอกโค้ดฟอร์ม" ท่องด้านล่างสร้างโค้ด HTML ฟอร์มแบบเรียลไลฟ์
- คลิกปุ่ม "คัดลอกและใช้งาน": บทคัดลอกโค้ดแบบ draft เขียนลงใน editor (โหมด FORM) และซิงค์กับ
form_code/form_format
คุณยังสามารถข้ามแผ่นขวาและเขียน HTML ฟอร์ม (syntax ของฟอร์ม) โดยตรงใน editor ซ้ายได้ (ก็ยังทำงานเมื่อบันทึก)
5.3.4 พฤติกรรมในเวลาทำงาน
หลังจากที่ผู้ใช้สุดท้ายส่งฟอร์ม ระบบจะผูกข้อมูลฟอร์มเป็นพารามิเตอร์ที่มีชื่อกับ SQL และทำการรัน; พารามิเตอร์ยังถูกบันทึกในการร้องเรียน ดังนั้น หน้าผลลัพธ์ / ไฟล์ export สามารถสะท้อนเงื่อนไขของการค้นหาได้
5.4 โมดุล HTML (การออกแบบการแสดงผลผลลัพธ์)
5.4.1 ตารางกำหนดค่าบล็อกการแสดงผล HTML
แต่ละแถวของ "ตารางการกำหนดค่าบล็อกการแสดงผล HTML" ขวา กำหนด 1 บล็อกการแสดงผล:
| คอลัมน์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| block_id | ระบุ ID ที่ไม่ซ้ำของบล็อก (ใช้เป็นคำหน้าของ DOM id ที่สร้างขึ้น) | chart_zone |
| title | หัวข้อของบล็อก | Cost Trend |
| grid_md | ความกว้างของกริด 1~12 (12 ครอบคลุมทั้งแถว) | 8 |
| component | table / chart / card / custom (บล็อกผู้ใช้กำหนดเอง) |
chart |
| subtotal | Y (เปิดใช้งานแถวรวมของตาราง) / N |
N |
| chart_type | line (กราฟเส้น) / bar (กราฟแท่ง) |
line |
| x_field | ฟิลด์แกน X (จากคอลัมน์ออกของ SQL) | MONTH |
| y_fields | ฟิลด์แกน Y; แยกหลายอับด้วยคอมม่าภาษาอังกฤษ | TOTAL_AMOUNT |
คำอธิบายส่วนประกอบ:
| ส่วนประกอบ | ผลการแสดงผล | เทคโนโลยีในเวลาทำงาน |
|---|---|---|
table |
ตารางข้อมูลด้วยการแบ่งหน้าและการจัดเรียง; หัวคอลัมน์มาจาก metadata ของคอลัมน์ title; กับ subtotal=Y, คอลัมน์ตัวเลขแสดงแถวรวม |
table |
chart |
กราฟ (line/bar); แกน X/Y ฟิลด์มาจากการกำหนดค่า | chart |
card |
KPI card แสดงค่าสำคัญ | การ render แบบกำหนดเอง |
custom |
บล็อกผู้ใช้กำหนดเอง | HTML |
5.4.2 การแสดงผลแบบเรียลไลฟ์และการสร้างโค้ด
- "พื้นที่แสดงผลแบบเรียลไลฟ์" แสดงผลสเก็ตช์ความฟิดลายสูงของแต่ละบล็อก (หัวข้อ + ประเภทของบล็อก + ความกว้าง) แบบเรียลไลฟ์
- "บทคัดลอก HTML" สร้างโค้ด HTML ครบถ้วนแบบเรียลไลฟ์ (รวมถึง attribute ในเวลาทำงาน เช่น
data-component,data-subtotal,data-charttype,data-xfield,data-yfields) - คลิก "คัดลอกและใช้งาน": เขียนลงใน editor และซิงค์
html_code/html_format
คุณยังสามารถเขียนเฟรมงาน HTML โดยตรงใน editor ซ้าย (สนับสนุนสัญลักษณ์ Template ที่พบบ่อย) สำหรับข้อมูลที่สามารถใช้ได้ในการ render โปรดดู 5.4.3
5.4.3 กลไกการ Render ของหน้าผลลัพธ์
เมื่อผู้ใช้สุดท้ายดาวน์โหลด/ดูผลลัพธ์ HTML (/request/output?ext=html) ระบบจะ render โค้ด HTML ของรายงานพร้อมกับ JSON ของผลลัพธ์การค้นหา, metadata ของคอลัมน์ เป็นต้น:
| ตัวแปรของ plantilla | คำอธิบาย |
|---|---|
data |
ผลลัพธ์ JSON ของการค้นหา (inject ที่เวลาทำงาน; ร่วมกับ {{.data}} output เป็นข้อมูล JS) |
params |
พารามิเตอร์ของการร้องเรียนนี้ (คู่คีย์-ค่า) |
colsConfig |
metadata SQL ของคอลัมน์ (ใช้สำหรับหัวคอลัมน์ของตาราง / ชื่อของ series ของกราฟ) |
reportName / reportDate / status |
ชื่อรายงาน, ชั่วโมงของการสร้าง, สถานะ |
หน้าจะแปลง Container ที่มี data-component="table" อัตโนมัติเป็น ตารางข้อมูล, chart เป็น กราฟ และ card เป็น KPI cards
5.5 กระบวนการเผยแพร่รายงาน (Flow ที่แนะนำสำหรับผู้ดูแลระบบ)
1. การจัดการรายงาน → สร้างรายงานใหม่ (เลือกความรับผิดชอบ, ใส่ชื่อ, เลือกสถานะ Draft)
2. คลิก "Code" เพื่อเข้า Designer
3. SQL Design: เขียน SQL + กำหนด metadata ของคอลัมน์ (ฐานสำหรับ Excel-Export)
4. FORM Design: กำหนดพารามิเตอร์ของการค้นหา (สอดคล้องกับพารามิเตอร์ SQL ตัวต่อตัว)
5. HTML Design: กำหนด Layout การแสดงผล (ตาราง/กราฟ/KPI Card)
6. คลิก "บันทึกทั้งหมด" → ปิด Designer
7. กลับไปที่รายการรายงาน, เปลี่ยนสถานะเป็น Release (เผยแพร่)
8. ผู้ใช้ทั่วไป login และสามารถเห็นรายงานนี้ในเมนูรายงานและรันได้
5.6 ข้อสังเกตการออกแบบ
- ชื่อพารามิเตอร์ใน SQL และ FORM ต้องตรงกันพอดี (SQL ใช้
:ชื่อพารามิเตอร์, FORM ใช้field). - ชื่อคอลัมน์ SQL ควรใส่ตัวพิมพ์ใหญ่; ตารางการกำหนดค่ามetadata ของคอลัมน์จะแปลง
fieldอัตโนมัติเป็นตัวพิมพ์ใหญ่. - SQL ของรายงานต้องสามารถถูก precompile โดย Oracle (
db.Prepare); ข้อผิดพลาดของ sentence จะนำไปสู่ความล้มเหลวของการร้องเรียน (สถานะ Error). - โดยไม่มีใบอนุญาตที่ถูกต้อง จำนวนรายงานจำกัดไว้ที่ 3 เริ่มการออกแบบหลังจากยืนยันสถานะใบอนุญาต.
- หลังจากบันทึก สามารถร้องเรียน 1 ครั้งใน "จัดการคำขอ" หรือบนฝั่งผู้ใช้สุดท้าย เพื่อตรวจสอบว่าประวัติศาสตร์และการแสดงผลถูกต้อง