首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德尔福QuickReports:乐队订单实现细节-儿童带?

德尔福QuickReports:乐队订单实现细节-儿童带?
EN

Stack Overflow用户
提问于 2010-01-14 14:43:34
回答 1查看 7.6K关注 0票数 2

我需要在Delphi5中创建一个QuickReport,其布局如下:

代码语言:javascript
复制
+================
| 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)
+=============================

谁能想出标题、细节、子信息、页脚、子细节、组页眉、组页脚带以及它们之间的相关父、母、报表、查询链接的组合,这样我就可以像我所需要的那样创建一个报表了吗?

别把我的用词搞混了

  • 标头带
  • 详细带
  • 子带
  • 页脚带

F 210

意味着任何乐队都必须是那些实际的类型。我在概念上使用这些术语:

在整个报表(报表标题)的开头,一个单一的带(报告头) auto-stretchy

  • 重复由四个乐队组成的乐队

  • 三个乐队在所有细节之后出现,前两个是

同样的问题,只有更长的时间

代码语言:javascript
复制
+===========================================
| 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
+===========================================

我可以编一些表来模仿我所编的例子:

代码语言:javascript
复制
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:

代码语言:javascript
复制
+=====================================================+
| 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像素)。

此设计的问题是,在设计时,汇总带至少出现在两个搁浅子带之前:

代码语言:javascript
复制
+=====================================================+
| 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)                              !
    +=================================================+

在运行报表时(在运行时),两个搁浅的子带甚至不打印:

代码语言:javascript
复制
+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader)         |
+=====================================================+

+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail)             |
+===+=================================================+
    | ChildBand1 (TQRChildBnad, Parent=DetailBand)    |
    !      (autostretch)                              !
    +===+=============================================+
        | ChildBand2 (TQRChildBand, Parent=ChildBand1 |
        +=============================================+

+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary)           |
+=====================================================+

Captcha:庸医报告

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-15 17:20:52

(请记住,我不再有QuickReports可用,所以这都是从内存中得到的)

好吧..。我以前遇到过这个问题..。给出一个完整的编码示例需要很长时间(我根本没有),但是我将尝试描述我的解决方案,这样您就可以与它关联起来了。

不要使用TQRChildBand,而是使用所有的DetailBand。然后,将每个乐队的BeforePrint事件挂钩。

您可以在BeforePrint事件中使用类似的内容:

代码语言:javascript
复制
printband := FPrintSubBandA;

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

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

整个解决方案是一个肮脏的黑客,但至关重要的是,因为QuickReports对选择性记录上嵌套子带的支持基本上不存在。

如果这些信息不够,请让我知道,我将搜索我的代码档案,看看我是否能找到一个这样做的例子。本质上,这个问题正是我转而使用RaveReports的原因。

编辑:我想您很可能已经尝试过在运行时设置每个子带的ParentBand值。如果你没有,不要浪费你的时间!这样做会导致更不正常的结果(我甚至尝试过违反访问权限)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2064857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档