BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: ittipol ที่ กันยายน 29, 2010, 11:08:15 AM
-
อาจารย์ครับ
ขอคำแนะเรื่องการทำรายงานแบบ tempreport หน่อยครับ
ขอบคุณครับ
-
อาจารย์ครับ
ขอคำแนะนำการสร้างรายงานแบบ tempreport ด้วยครับ
เพราะมีหลายๆๆรายงานเป็นแบบนี้ครับ
ขอบคุณครับ
-
เป็นแบบไหนครับ มีรูปมั้ยครับ งง (ผมก็ไม่ได้เก่งนะครับ) แต่งง กับคำถาม
-
เท่าที่เคยแก้มา มันต้องเขียน Pascal Script ให้มัน select ข้อมูล ลง tempreport ก่อน
แล้วถึงดึงมาทำรายงานอีกที รออาจารย์ท่านอื่นมาตอบดีกว่าครับ ;D ;D
-
เท่าที่ผมเข้าใจน่ะ
มันเป็นตารางที่สร้างไว้กลางๆไม่ระบุชื่อfieldที่เจาะจง
เอาไว้เป็นที่พักข้อมูลก่อนจะนำมาทำรายงานอีกทีเช่น
ใช้คำสั่ง sql ดึงข้อมูลเฉพาะที่ต้องการออกมาจากฐานข้อมูลมารวบรวมไว้ที่ตารางนี้ก่อน
แล้วค่อยใช้คำสั่ง sql นับจำนวนแล้วทำเป็นรายงานอีกที ประมาณนี้ครับ
ดังนั้น field ต่างๆมันจึงไม่มีชื่อเฉพาะเจาะจง ใน field หนึ่งอาจจะมีข้อมูลแต่ต่างกันก็ได้แล้วแต่ผู้ทำรายงานจะใช้ field ไหนเก็บค่าอะไร โดยแยกกลุ่มด้วย reportname และ id
-
tempreport คือ Table โดยที่สร้างฟิลขึ้นมา เพื่อใช้พักข้อมูล หรือ ดึงข้อมูลมาใส่ในตารางนี้ โดยจะมีฟิลสำหรับเก็บค่าต่าง ๆ คือ
name , name1 , name2 , ... ใช้เก็บค่าที่เป็น String
num1,num2,num3 , .... ใช้เก็บค่าที่เป็นตัวเลข
ประมาณนี้ครับ ถ้าอยากรูว่ามีฟิลอะไรบ้างก็ใช้คำสั่ง
desc tempreport
จุดประสงค์ของการสร้าง tempreport ผมเข้าใจว่า เอาไว้ใช้ทำรายงานที่มีความซับซ้อนมาก ๆ หรือมีเงื่อนไขมาก ๆ ซึ่งการเขียน SQL ธรรมดาจะทำไม่ได้หรือทำได้ก็ต้อง join table จำนวนมาก แต่ถ้าจะเอามาทำรายงานทั่วไปก็ไม่ว่ากันครับ
ขั้นตอนการใช้ tempreport มีประมาณนี้ครับ
1. ใช้ Pascal Script ดึงข้อมูลมาไว้ในตาราง tempreport (อยู่ในแถบ Script)
1.1 Clear tempreport ลบข้อมูลในตาราง temreport ที่มี reportname และ reportid เป็นของรายงานนี้
1.2 ใช้ fcds , fcds1 , fcds2.... <- อันนี้มาให้เรียกใช้ได้เลย , tclientdataset ดึงข้อมูลมาใส่ตาราง tempreport
2. เขียน SQL ดึงข้อมูลจากตาราง tempreport (อยู่ในแถบ SQL)
3. สร้างรายงานตามปกติ
ส่วนป่วนประโยชน์ที่ผมใช้บ่อย ๆ ก็คือ
1. ส่งข้อมูลเป็น Exel ได้ ถ้าใช้ Variable จะทำไม่ได้ (ต้อง Print To file เป็น Exel แล้วไปตัด head report ออก)
2. จัดการข้อมูลที่ต้องการได้ง่าย เช่น ลูปของการดึงข้อมูลต่าง ๆ ถ้าใช้ sql ล้วน ๆ อาจจะต้อง union กันหลายรอบ
3. สามารถคำนวณแบบซับซ้อนก่อนนำข้อมูลไปใส่ใน Table
4. สามารถสร้างรายงานที่รับ Parameter หลาย ๆ ค่า (สามารถสร้าง Form ได้เหมือน Delphi)
5. ..
6. ..
นึกไม่ออกละครับ
ถ้าใช้ tempreport บ่อย ๆ แนะนำให้เขียน code เป็น pattern
พอมาใช้ครั้งต่อไปจะได้เปลี่ยนไม่มากครับ
ปล. การสร้าง Report ทำได้หลายวิธี ขึ้นอยู่กับวิธีไหนจะง่ายที่สุด เร็วที่สุด เพื่อให้ได้ Report ตามต้องการครับ