我需要在Delphi 5中创建一个QuickReport,其布局如下:
+================
| Report Header
+================
+=========================================
| Detail Band (auto-stretching, repeats)
.
+=========================================
| Child band (fixed-size)
+======================================
| Child band (Auto-stretching)
.
+======================================
| Child band (fixed-size)
+======================================
+=================================
| Report Footer (auto-stretching)
.
+=================================
+==================================
| Report Footer (auto-stretching)
.
+==================================
+=============================
| Report Footer (fixed size)
+=============================
任何人都可以提出标题,细节,子,页脚,子细节,组标题,组页脚乐队的组合 - 以及它们之间关联的父,主,报告,查询链接,以便我可以制作像我需要它的报告?
不要混淆我对术语的使用
暗示任何乐队必须属于那些实际类型。我在概念意义上使用这些术语:
+===========================================
| Suspicious Transaction Report
| STR No.: 12345
| Date: 11/28/1973
|
| Comments: as per NSL 1/13/2010
+===========================================
+===========================================
| Transaction 1 of 7
| Buy Sell
| $100.00 $16,000.00
| $27,000.00
| $12,000.00
. ...
+===========================================
| Customer Information
| Name: Shelby Lake
| Address: 11111 S NC-HWY 111
| DOB: 6/19/1981
| ID No.: G123-456-789
| Occupation: waitress
+===========================================
| Original Transaction
| Buy Sell
| $100.00 $16,000.00
| $3,000.00 $27,000.39
| $64,132.69 $12,000.13
. ... ...
+===========================================
| Third Party Information
| Name: Yugo Chavez
| Address: 11111 S AB
| DOB: 9/15/1934
| ID No.: 995-1935
| Occupation: dictator
+===========================================
...
+===========================================
| Transaction 7 of 7
.
.
+===========================================
+===========================================
| Description of Suspicious Activity
| Customer had beedy eyes, that moved
| rapidly from left to right. He...
. ...
+===========================================
+===========================================
| Action Taken
| We killed him, went through his
| pickets, then started digging the...
.
+===========================================
+===========================================
|
| Signature: _______________________
| Bruce Wayne
| Title: The Batman
| Employee ID: 1337-6669
+===========================================
我可以组成一些模仿我组成的例子的表格:
CREATE TABLE STRs (
StrID int,
Number text,
Date datetime,
Comments text,
DescriptionOfSuspiciousActivity text,
ActionTaken text,
EmployeeName text,
EmployeeTitle text,
EmployeeNumber text )
CREATE TABLE STRTransactions (
STRTranasctionID int,
STRID int,
BuyAmount money)
CREATE TABLE STRTransactionSells (
STRTransactionID int,
SellAmount money)
CREATE TABLE STRTransactionPatronInfo (
STRTransactionID int,
Name text,
Address text,
DOB text,
IDNumber text,
Occupation text )
CREATE TABLE STRTransactionThirdPartyInfo (
STRTransactionID int,
Name text,
Address text,
DOB text,
IDNumber text,
Occupation text )
CREATE TABLE OriginalTransactions (
STRTransactionID int,
BuyAmount money,
SellAmount money )
我尝试使用以下波段布局创建一个QuackReport:
+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader) |
+=====================================================+
+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail) |
+===+=================================================+
| ChildBand1 (TQRChildBnad, Parent=DetailBand) |
! (autostretch) !
+===+=============================================+
| ChildBand2 (TQRChildBand, Parent=ChildBand1 |
+=============================================+
+=====================================================+
| ChildBand3 (TQRChildBand, Parent=(none) |
! (autostretch) !
+=====================================================+
| ChildBand4 (TQRChildBand, Parent=ChildBand3 |
! (autostretch) !
+=================================================+
+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary) |
+=====================================================+
注意:缩进用于帮助识别父子关系(即乐队实际上不是50像素)
这种设计的问题在于,在设计时,在两个搁浅的儿童乐队之前出现摘要乐队:
+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader) |
+=====================================================+
+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail) |
+===+=================================================+
| ChildBand1 (TQRChildBnad, Parent=DetailBand) |
! (autostretch) !
+===+=============================================+
| ChildBand2 (TQRChildBand, Parent=ChildBand1 |
+=============================================+
+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary) |
+=====================================================+
+=====================================================+
| ChildBand3 (TQRChildBand, Parent=(none) |
! (autostretch) !
+=====================================================+
| ChildBand4 (TQRChildBand, Parent=ChildBand3 |
! (autostretch) !
+=================================================+
当报告运行时(在运行时),两个滞留的子带甚至不打印:
+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader) |
+=====================================================+
+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail) |
+===+=================================================+
| ChildBand1 (TQRChildBnad, Parent=DetailBand) |
! (autostretch) !
+===+=============================================+
| ChildBand2 (TQRChildBand, Parent=ChildBand1 |
+=============================================+
+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary) |
+=====================================================+
Captcha:quackreports
答案 0 :(得分:2)
(请记住,我不再拥有QuickReports,所以这一切都来自内存)
好的......我之前遇到过这个问题...... 给你一个完整的编码示例需要很长时间(我根本没有时间),但我会尝试描述我的解决方案,以便与之相关。
而不是使用TQRChildBand,而是使用所有DetailBand。然后你将每个乐队的BeforePrint活动挂钩。
你可以在BeforePrint活动中使用这样的东西:
printband := FPrintSubBandA;
使用一组普遍可用的变量(或报表表单上的私有成员)来定义应显示哪些波段,而不应该是报表上显示的给定记录....所有类型布尔值(注意:你可以使用一组枚举,但布尔人更容易/更快地实现imho )
在NeedData事件中,您将推断给定记录需要哪些波段,并相应地设置这些变量(当然是布尔值)。
整个解决方案都是一个肮脏的黑客攻击,但是必不可少,因为QuickReports对选择性记录中的嵌套子带的支持基本上是不存在的。
如果这不是足够的信息,请告诉我,我将浏览我的代码档案,看看我是否能找到我这样做的一个例子。 基本上,这个确切的问题是我切换到RaveReports的原因。
编辑: 我认为你很可能已经尝试在运行时设置每个子带的ParentBand值...如果你没有,不要浪费你的时间!这样做会导致更多异常结果(我甚至尝试过访问冲突)