P> ผู้ใช้มักจะสร้างรายงานเมื่อใช้แอปพลิเคชันฐานข้อมูล ที่นี่เราใช้รายงานการกำกับดูแลอุปกรณ์เป็นตัวอย่างเพื่อแสดงวิธีการใช้องค์ประกอบ QReport และส่วนประกอบการสืบค้นเพื่อออกแบบเพื่อสร้างรายงานจากหลายตารางข้อมูล
1. ฐานข้อมูลที่ใช้
ที่นี่เราใช้ตารางข้อมูล FOXPRO สามตาราง, DLBMK (รหัสหมวดหมู่อุปกรณ์), SBXHK (รุ่นอุปกรณ์และการกำหนดค่า) และ BMSBK (แผนกอุปกรณ์) ซึ่งเก็บไว้ในไดเรกทอรี D:/SB โครงสร้างห้องสมุดมีดังนี้:
(i) DLBMK ชื่อฟิลด์ประเภทฟิลด์คำอธิบาย 1 DLBH N3 อุปกรณ์หมวดหมู่หมายเลข 2 DLMC C20 ชื่ออุปกรณ์ชื่อ (ii) SBXHK ชื่อฟิลด์ประเภทฟิลด์ประเภทคำอธิบาย 1 XHBM N3 อุปกรณ์รุ่น 2 DLBH N3 DLBH ใน DLBMK 3 SBXH C30 รุ่น 4 SBPZ C30 การกำหนดค่าอุปกรณ์ 5 SBSL N3 จำนวนอุปกรณ์ (III) BMSBK ชื่อฟิลด์ประเภทฟิลด์คำอธิบาย 1 BMMC C20 ชื่อแผนก 2 XHBM N3 XHBM ฟิลด์ใน SBXHK 3 SL N3 ปริมาณใช้ตารางข้อมูลทั้งสามนี้ ในแผนกคอมพิวเตอร์ แต่ไม่ใช่ในแผนกอื่น ๆ
2? เทปและเครื่องจักร, Moukaofen?/b>
มีสองรูปแบบในโปรแกรม: mainform mainform และ report reporm มีสองส่วน tbutton ใน mainform mainform และการตั้งค่ามีดังนี้:
คุณสมบัติส่วนหนึ่งและค่าแอตทริบิวต์
previewbtn: คำบรรยายภาพ tbutton: Preview
printbtn: คำบรรยายภาพ tbutton: ส่วนประกอบและคุณสมบัติในรูปแบบการพิมพ์รายงาน repform ถูกตั้งค่าดังนี้:
คุณสมบัติส่วนหนึ่งและค่าแอตทริบิวต์
Query1: TQUERY DATABASENAME: D:/SB
ใช้งาน: จริง
QREP1: ชุดข้อมูล TQUICKREP: QUERY1
titleband1: tqrband bandtype: rbtitle
HEIDBAND1: TQRBand BandType: RBColumnHeader
Drawleft: จริง
Drawright: จริง
drawtop: จริง
drawbottom: จริง
Detailband1: tqrband bandtype: rbdetail
Drawleft: จริง
Drawright: จริง
drawtop: จริง
drawbottom: จริง
ChildBand1: TQRCHILDBAND BANDERBAND: Detailband1
Drawleft: จริง
Drawright: จริง
drawtop: จริง
drawbottom: จริง
Titlelabel: TQRLABEL คำบรรยายภาพ: ตารางสถิติอุปกรณ์
DLMCLABEL: TQRLABEL คำบรรยายภาพ: หมวดหมู่
sbxhlabel: tqrlabel คำบรรยายภาพ: รุ่น
SBPZLabel: TQRLABEL คำบรรยายภาพ: การกำหนดค่า
Sbsllabel: คำบรรยายภาพ TQRLABEL: ปริมาณ
DLMCDBTEXT: ชุดข้อมูล TQRDBTEXT: QUERY1
Datafield: DLMC
sbxhdbtext: ชุดข้อมูล tqrdbtext: query1
Datafield: SBXH
SBPZDBTEXT: ชุดข้อมูล TQRDBTEXT: QUERY1
Datafield: SBPZ
sbsldbtext: ชุดข้อมูล tqrdbtext: query1
Datafield: SBSL
Shape1 ~ 9: รูปร่าง tqrshape: qrsvertline
ด้านบน: 0
ความกว้าง: 1
คุณสมบัติ SQL ของ Query1 ถูกตั้งค่าเป็น:
เลือก A.DLBH, A.DLMC, B.SBXH, B.SBPZ, B.SBSL
จาก DLBMK A, SBXHK B
โดยที่ a.dlbh = b.dlbh และ b.xhbm ไม่ได้อยู่ใน
(เลือก XHBM จาก BMSBK โดยที่ TRIM (BMMC) $#@60; $#@62; 'แผนกคอมพิวเตอร์')
คำสั่งซื้อโดย a.dlbh ตั้งค่าการดึง, drawright, drawtop และค่าแอตทริบิวต์ drawbottom ของส่วนประกอบ tqrband หลายอย่างเป็นจริงเพื่อที่จะพิมพ์เส้นขอบตารางและเส้นแนวนอน ส่วนประกอบ TQRShape ใช้เพื่อพิมพ์เส้นแนวตั้งของตาราง DLMCDBText ถูกวางไว้บน DetailBand1 ส่วนประกอบ TQRDBText อื่น ๆ อีกหลายชิ้นจะถูกวางไว้บน childband1, shape1 ~ 3 วางอยู่บน headband1, shape4 ~ 6 ถูกวางไว้บน Detailband1, shape7 ~ 9 วางอยู่บน childband1
3. เพิ่มรหัสลงในโปรแกรม
1. เหตุการณ์สองปุ่มในขั้นตอนหลัก tmainform.previewbtnclick (ผู้ส่ง: tobject)
เริ่ม
repform.qrep1.preview;
จบ;
ขั้นตอน tmainformprintbtnclick (ผู้ส่ง: tobject)
เริ่ม
repform.qrep1.print;
จบ;
2. ก่อนหน้านี้เหตุการณ์ของแถบคาดศีรษะ 1, Detailband1 และ childband1 เป็น processedure trepform.headband1beforeprint (ผู้ส่ง: tqrcustomband; var printband: บูลีน)
เริ่ม
shape1.height: = headband1.height;
shape2.height: = headband1.height;
shape3.Height: = headband1.height;
จบ;
ขั้นตอน trepform.detailband1beforeprint (ผู้ส่ง: tqrcustomband; var printband: boolean)
เริ่ม
printband: = bh $#60;
ถ้าพิมพ์แล้ว
เริ่ม
bh: = query1 ['dlbh'];
shape4.height: = detailband1.height;
Shape5.Height: = Detailband1.height;
shape6.height: = detailband1.height;
จบ
จบ;
ขั้นตอน trepform.childband1beforeprint (ผู้ส่ง: tqrcustomband; var printband: boolean)
เริ่ม
shape7.height: = childband1.height;
shape8.height: = childband1.height;
รูปร่าง 9.Height: = Childband1.height;
จบ;
ควรกำหนด BH ในส่วนนิยามตัวแปร: var BH: shortint = 0;
ความสูงของชิ้นส่วน tqrshape หลายชิ้นสอดคล้องกับชิ้นส่วน tqrband ทำให้เส้นแนวตั้งพิมพ์อย่างเรียบร้อย หากความสูงของส่วนประกอบ Tqrband ถูกปรับในระหว่างขั้นตอนการออกแบบจะไม่มีการแตกของเส้นแนวตั้งหรือความยาวมากเกินไป
ควบคุมด้วย printband ในเหตุการณ์ beforeprint ของ Detailband1 ชื่อหมวดหมู่ที่สำคัญของแต่ละอุปกรณ์สามารถพิมพ์ได้เพียงครั้งเดียวแทนที่จะเป็นชื่อหมวดหมู่หลักที่สอดคล้องกับแต่ละรุ่น เนื่องจากค่าของฟิลด์ DLBH มากกว่า 0 ค่าเริ่มต้นของ BH ถูกตั้งค่าเป็น 0 เพื่อให้แตกต่างจากค่าของฟิลด์ DLBH ของบันทึกใด ๆ เพื่อให้แน่ใจว่าชื่อคลาสหลักแรกถูกพิมพ์ . สิ่งนี้สร้างรายงานข้อมูลที่ดึงข้อมูลจากหลายตารางข้อมูลและมีสายตาราง
หมายเหตุ: ไฟล์โครงการในตัวอย่างนี้คือ sbgl.dpr และไฟล์โปรแกรมต้นฉบับคือ main.pas และ sbrep.pas ในไดเรกทอรี D:/SB