RM (รายงานเครื่อง) เป็นแพ็คเกจควบคุมรายงาน Delphi ที่ทรงพลัง ใช้เพื่อสร้างรายงานที่ซับซ้อนมาก การใช้งานที่ง่ายที่สุดอธิบายไว้ด้านล่าง:
วางการควบคุมฐานข้อมูลสองแบบบนแบบฟอร์ม: Adoconnection และ Adoquery เพื่อตั้งค่าการเชื่อมต่อของการเชื่อมต่อแบบอะโดคอน LoginPrompt = FALSE การเชื่อมต่อของ Adoquery ชี้ไปที่ Adoconnection SQL ของ Adoquery ตั้งค่าคำสั่งค้นหาข้อมูล
วางการควบคุมรายงาน RM สองรายการในแบบฟอร์ม: RMDBDataset และ RMReport ชุดข้อมูลของ RMDBDataset ชี้ไปที่ Adoquery ชุดข้อมูลของ RMReport ชี้ไปที่ RMDBDATASET
(หากคุณต้องการให้แอปพลิเคชันที่สร้างขึ้นขั้นสุดท้ายมีความสามารถในการออกแบบรายงานคุณต้องใส่ตัวควบคุม RMDesigner และไม่ได้ตั้งค่าแอตทริบิวต์ใด ๆ )
ดับเบิลคลิกที่การควบคุม RMReport เพื่อเริ่มออกแบบแม่แบบรายงาน
สำหรับรายงานที่เปรียบเทียบกับกฎโดยทั่วไปคุณจะต้องเพิ่มวัตถุสี่วงลงในเทมเพลตคือ: 1) ส่วนหัวของหน้า: มักจะใช้เพื่อแสดงชื่อรายงานเวลา ฯลฯ 2) ส่วนหัวรายการหลัก: มักจะใช้กับ แสดงชื่อคอลัมน์ 3) ข้อมูลรายการหลัก: ใช้เพื่อแสดงข้อมูล 4) เชิงอรรถหน้า: ใช้เพื่อแสดงหมายเลขหน้าวันที่ ฯลฯ
เทมเพลตที่ออกแบบมาสามารถบันทึกใน DFM หรือในไฟล์เทมเพลตอิสระพร้อมส่วนขยาย RMF และเรียกในเวลารันไทม์ นี่คือตัวอย่างโค้ดบางส่วน:
ขั้นตอน tbrowseform.button5click (ผู้ส่ง: tobject); varrmreport: trmreport; beartif adoquery1.isempty thenexit; tryrmreport: = trmreport.create (self); rmreport.loadfromfile ( .Free; สิ้นสุด; สิ้นสุด;
ขั้นตอน TFORM1.Button1Click (ผู้ส่ง: tobject);
// การออกแบบรายงานเทมเพลต TFORM1.Button2Click (ผู้ส่ง: tobject);
สำหรับการรายงานกฎส่วนใหญ่ความรู้ข้างต้นเพียงพอ แต่นี่เป็นเพียงวิธีที่ง่ายที่สุดในการใช้ RM และมันก็ยังห่างไกลจากการสะท้อนพลังของฟังก์ชั่น RM
RM มีคุณสมบัติที่น่าสนใจสองอย่างที่ฉันต้องการมากที่สุดในขณะนี้:
1) ข้อมูลอาจมาจากฐานข้อมูลหรือจากที่อื่น ๆ เช่นในไฟล์ในหน่วยความจำ ฯลฯ 2) ไม่จำเป็นต้องทำเทมเพลตก่อนทำ
แม้ว่า RM นั้นมีประสิทธิภาพ แต่ก็ไม่ได้มีความซับซ้อนในการใช้งาน
1. โซลูชั่นที่ดีของคุณสำหรับรายงานที่ต้องใช้กระดาษสองแผ่นคืออะไร? คุณสามารถเลือกพิมพ์คี่หรือแม้แต่หน้าเมื่อพิมพ์ 2. ฉันจะพิมพ์จำนวนบรรทัดที่คงที่ในหน้าเดียวได้อย่างไร? คลิกรายงานเพื่อป้อนอินเทอร์เฟซรายงานการออกแบบ? RMReport1.ModifyPrepered: = FALSE4 ผ่านพารามิเตอร์ไปยังรายงานวิธีทำ trmmemoview? rmreport1.findobject ('memo1'). memo.text: = 'ddddd' หรือ rmvariables ['a1']: = 'ddddd'; 6. เราจะไม่พิมพ์เนื้อหาที่ซ้ำกันได้อย่างไร? suppres = true7 ตั้งค่า rmreport.modifypreview = false8 .BottomFrame. Visible: = FALSE ในบันทึกสคริปต์ของรายงาน 12.FrameTyp: = 15; หน้าและควบคุมมันเพื่อแสดง แต่มันก็โอเคที่จะพิมพ์ ตารางสำหรับแต่ละแถว 3 แถวเพื่อตั้งค่าคอลัมน์ข้อมูลรายการหลัก: linesperPage = 3 ถ้ามีวิธีสำหรับสามคนเป็นหนึ่งบรรทัด: ตั้งค่าคอลัมน์ของคอลัมน์ข้อมูลรายการหลัก = 3 พิมพ์ในการจัดกลุ่มเงื่อนไขการจัดกลุ่ม: Nowline> 3 OnBeforePrint : เริ่มต้น: = 1; end; ใช่ตั้งค่าคอลัมน์ข้อมูลรายการหลัก: Visible = False Statistics Box: CalcNovisible = TRUE12 ใช่ตั้งกล่องข้อความ: ยืด = true; // อ่านรายงาน rmreport1.ShowReport; 2. ไม่ว่าส่วนหัวของกลุ่มจะเปลี่ยนหน้าในแต่ละกลุ่มหรือไม่ 1.RMREPORT1.PAGES [0] .CHANGEPAPER () 2.RMREPORT1.PAGES [0] .FINDOBJECT (ชื่อคอลัมน์ส่วนหัวของกลุ่ม) .prop ['newPage']: = false; 15 Rmreport1.ShowPrintDialog: = false; RMReport1.PrinTreport; 16 คุณไม่จำเป็นต้องเลือกการซูมไปยังพื้นที่ที่พิมพ์ได้ในการตั้งค่าหน้าเว็บหรือ rmreport1.pages [0] .pgmargins: =; // ลองใช้ 17. วิธีการนำเข้าไฟล์ RTF เป็น trmformreport หน้าเว็บ RICHEDIT1.LINES.SAVETOSTREAM (TEMPSTREAM); TempSTream.Position: = 0; RMFORMREPORT1.PageHeader.Caption.loadFromStream (TempStream); TempStream.free; end; 18 ตั้งค่า TemplatedIR ของ TRMDESING ฉันต้องการตั้งค่าชุดข้อมูลเสมือนจริงแบบไดนามิก! (RMReport1.FindObject ('Band1') เป็น trmbandview) .dataset: = 'rmdbdataset1'; 20 ระยะทางซ้าย: curreport.pages [0] .pgmargins.left: = round (rmconverttopixels (mm*10, rmsumm)) 22.rmvariables ['Brand']: = true; rmvariables ['ชื่อผลิตภัณฑ์']: = 'คอมพิวเตอร์' ; รหัสในเหตุการณ์ onbeforprint ของ Page1 มีดังนี้: หากแบรนด์ THENEMESSAGEBOX (ชื่อผลิตภัณฑ์); รายการหลักคอลัมน์ LineperPage = 1024 - - เป็นการดีที่สุดที่จะใช้คอลัมน์เชิงอรรถคอลัมน์วางกล่องสถิติไว้แล้วตั้งค่า Calctype 25 เมื่อสร้างรายงานแบบไดนามิกวิธีการตั้งค่าระยะขอบหน้าของ RM? 40); 26. วิธีการเปิดไฟล์รายงานหลายครั้งในครั้งเดียวในหน้าต่างตัวอย่างหรือการพิมพ์เมื่อโปรแกรมกำลังทำงานอยู่ในหน้าต่างตัวอย่างหรือการพิมพ์ให้ใช้ TRMCOMPOSITEREPORT, RMCOMPOSITEERPORT1.REPORTS.CLEAR; RMCompositeReport1.Reports.Add (RMReport2); ใช่เนื้อหา A3 [MEMO1.CALCVALUE + MEMO2.CALCVALUE] 29 และพิมพ์เพียงครั้งเดียว 30 [';
Rmvariables ['A2'
รายงานคู่มือผู้ใช้พัฒนาเครื่อง-สร้างรายงาน 2010-02-10 13:08
สร้างรายงาน:
การสร้างรายงานประกอบด้วยขั้นตอนต่อไปนี้:
1. เลือกข้อมูล: เลือกแหล่งข้อมูลที่ใช้ในรายงาน
2. เทมเพลตรายงานการออกแบบ: ใช้พื้นที่ (เรียกว่าวงดนตรี) เพื่อแจกจ่ายส่วนต่าง ๆ ของรายงานเพื่อกำหนดรูปแบบรายงาน
3. การประมวลผล: ใช้ภาษาสคริปต์ในตัวของรายงานหรือประมวลผลข้อมูลแม่แบบรายงาน ฯลฯ ที่ใช้ในรายงานใน Delphi
4. สร้างรายงาน: สร้างรายงานขั้นสุดท้ายตามเทมเพลตรายงาน + แหล่งข้อมูล
เลือกแหล่งข้อมูล:
ข้อมูลที่จำเป็นสำหรับรายงานส่วนใหญ่มาจากฐานข้อมูล ส่วนประกอบ TTABLE และ TQUERY สามารถใช้เป็นแหล่งข้อมูลสำหรับรายงาน โดยทั่วไปสามารถใช้คลาสย่อยใด ๆ ที่สืบทอดมาจากส่วนประกอบ TDATASET TDataset ที่ใช้ในแต่ละรายงานจะต้องมี trmdbdataset ที่สอดคล้องกัน
นอกเหนือจาก TDATASET แล้วหน้ารายงานสามารถใช้แหล่งข้อมูลใด ๆ (อาร์เรย์, ไฟล์, กริดอักขระ ฯลฯ ) ในกรณีนี้โปรแกรมจะต้องควบคุมการเข้าถึงแหล่งข้อมูลที่ไม่ใช่ของตัวเองด้วยตัวเอง คุณสามารถใช้ trmuserDataset เพื่อถ่ายโอนข้อมูลไปยังรายงานได้อย่างง่ายดาย
เทมเพลตรายงานการออกแบบ:
เทมเพลตรายงานตัวเองอธิบายถึงวิธีการดูรายงานที่ถูกต้อง แต่ละเทมเพลตรายงานประกอบด้วยหลายภูมิภาคซึ่งรายงานการเรียกใช้วงดนตรี มีวงดนตรีสองประเภท: แถบพื้นที่คงที่ (เช่นชื่อรายงาน, ส่วนหัวหน้า, เชิงอรรถหน้าเว็บ ฯลฯ ) และแถบที่ใช้ในการแสดงระเบียนทั้งหมดในชุดข้อมูล (เช่นคอลัมน์ข้อมูลรายการหลัก) แถบข้อมูลจะต้องเชื่อมต่อกับแหล่งข้อมูลและเนื้อหาเป็นบันทึกในแหล่งข้อมูล
ReportMachine จัดเตรียมสภาพแวดล้อมการมองเห็นสำหรับการพัฒนารายงาน (ผู้ออกแบบรายงานซึ่งสามารถมอบให้กับผู้ใช้ปลายทางของคุณเพื่ออำนวยความสะดวกให้ผู้ใช้ปลายทางของคุณปรับเปลี่ยนเทมเพลตรายงานด้วยตัวเอง) เพื่อสร้างรายงาน นักออกแบบรายงานมีประสิทธิภาพเรียบง่ายและใช้งานง่าย อินเทอร์เฟซผู้ออกแบบรายงานทำจากแถบเครื่องมือลอยตัวซึ่งสามารถเปลี่ยนตำแหน่งได้อย่างอิสระ
จัดการกับ:
เมื่อสร้างรายงานคุณจะต้องประมวลผลข้อมูลอินพุต (เช่นการจัดรูปแบบ) และแม่แบบรายงานจะต้องมีการแก้ไข (เช่นกล่องข้อความในเทมเพลตรายงานต้องเปลี่ยนแบบอักษร)
การใช้งานการประมวลผลนี้ช่วยให้คุณเขียนโค้ดในการประมวลผลเหตุการณ์ของ trmreport ใน Delphi นี่คือเหตุผลที่ภาษาสคริปต์ในตัวใน ReportMachinet ภาษาสคริปต์ในตัวของ ReportMachine นั้นคล้ายกับ Object Pascal มากและมีประสิทธิภาพ เขียนรหัสการประมวลผลเหตุการณ์ในภาษาสคริปต์นี้ซึ่งช่วยให้คุณสร้างการประมวลผลที่ซับซ้อนโดยไม่ต้องเขียนโค้ดใน Delphi สามารถแยกรายงานจากโครงการของคุณ
รายงานสคริปต์ตัวอย่าง:
รายงานหน่วย;
ส่วนต่อประสาน
ขั้นตอนการบันทึกข้อใช้งาน (ผู้ส่ง: tobject);
ขั้นตอนการบันทึก 1onbeforeprint (ผู้ส่ง: tobject);
ขั้นตอนหลัก
จบ;
จบ.
สร้างรายงาน:
การสร้างรายงานเป็นกระบวนการที่รายงานการประมวลผลแหล่งข้อมูลตามแม่แบบรายงานเพื่อสร้างรายงานขั้นสุดท้ายและสามารถดูตัวอย่างหลังจากคลิกปุ่ม "ดูตัวอย่าง" รายงานที่จัดทำใน reportmachine เป็นชุดของวัตถุที่อธิบายเนื้อหาที่มีอยู่ในแต่ละหน้าหลังจากประมวลผลรายงาน สิ่งนี้ช่วยให้คุณสามารถแก้ไขหน้ารายงานที่สร้างขึ้นโดยโทรไปที่หน้าต้องการในนักออกแบบ นอกจากนี้ปฏิกิริยาของเมาส์ที่คลิกที่วัตถุในหน้าต่างตัวอย่างสามารถอธิบายได้ สิ่งนี้จะทำให้คุณสามารถจัดระเบียบงานของคุณได้ง่ายขึ้น (การคลิกที่ออบเจ็กต์รายงานสามารถสร้างรายงานใหม่ที่มีรายละเอียดเพิ่มเติมได้)
หน้าต่างตัวอย่างของ ReportMachine นั้นคล้ายคลึงกับ Microsoft Word: สามารถเห็นได้หลายหน้าในหน้าต่างเดียวและสามารถลากด้วยเมาส์ได้