Delphi QuickReports:乐队订单实现细节 - 儿童 - 儿童 - 儿童乐队?

时间:2010-01-14 14:43:35

标签: delphi reporting delphi-5 quickreports

我需要在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

1 个答案:

答案 0 :(得分:2)

(请记住,我不再拥有QuickReports,所以这一切都来自内存)

好的......我之前遇到过这个问题...... 给你一个完整的编码示例需要很长时间(我根本没有时间),但我会尝试描述我的解决方案,以便与之相关。

而不是使用TQRChildBand,而是使用所有DetailBand。然后你将每个乐队的BeforePrint活动挂钩。

你可以在BeforePrint活动中使用这样的东西:

printband := FPrintSubBandA;

使用一组普遍可用的变量(或报表表单上的私有成员)来定义应显示哪些波段,而不应该是报表上显示的给定记录....所有类型布尔值注意:你可以使用一组枚举,但布尔人更容易/更快地实现imho

在NeedData事件中,您将推断给定记录需要哪些波段,并相应地设置这些变量(当然是布尔值)。

整个解决方案都是一个肮脏的黑客攻击,但是必不可少,因为QuickReports对选择性记录中的嵌套子带的支持基本上是不存在的。

如果这不是足够的信息,请告诉我,我将浏览我的代码档案,看看我是否能找到我这样做的一个例子。 基本上,这个确切的问题是我切换到RaveReports的原因。

编辑: 我认为你很可能已经尝试在运行时设置每个子带的ParentBand值...如果你没有,不要浪费你的时间!这样做会导致更多异常结果(我甚至尝试过访问冲突