首页 > 解决方案 > 水晶报告在列中打印纯文本

问题描述

我在水晶报告中有一份报告,其中显示了从数据库中获取的地址列表,格式如下:

`<some codes regarding object to send>
<Name> <Surname>
<Address>
<zip> <City>
<other informations>`

我需要以纯文本形式将这些地址打印在 3 或 4 列(根据用户选择)中。使用 PDF 报告没有问题,但如果我设置为纯文本,它只显示一列。你能帮助我吗?谢谢并恭祝安康

标签: c#.netcrystal-reportsreportplaintext

解决方案


我不会更改第一个答案,因为它可能对其他人有用。

这是一个非常无聊的新解决方案,如果您没有提出更好的主意。我会写3个专栏。您将需要适应 4 列(或只为 4 列创建另一个 rpt)。

  1. 忘记“多列格式”选项。只需创建一个普通的细节部分。

  2. 创建以下无聊的公式。我们称它为“fieldsFiller”:

    共享字符串变量地址1;
    共享字符串变量地址2;
    共享字符串变量地址3;
    共享字符串变量名 1;
    共享字符串变量名 2;
    共享字符串变量名 3;
    共享 stringvar surname1;
    共享 stringvar surname2;
    共享 stringvar surname3;
    共享字符串 zip1;
    共享字符串 zip2;
    共享字符串 zip3;
    共享 stringvar city1;
    共享 stringvar city2;
    共享 stringvar city3;
    //TODO 对您需要的其他字段执行相同操作

    如果记录号 mod 3 = 1 则 (
        address1 := {YourDataSource.Address};
        name1 := {YourDataSource.Name};
        surname1 := {YourDataSource.Surname};
        zip1 := {YourDataSource.Zip};
        city1 := {YourDataSource.City};
        //TODO 对您需要的其他字段执行相同操作
    )
    else if recordnumber mod 3 = 2 then (
        地址2 := {YourDataSource.Address};
        name2 := {YourDataSource.Name};
        surname2 := {YourDataSource.Surname};
        zip2 := {YourDataSource.Zip};
        city2 := {YourDataSource.City};
        //TODO 对您需要的其他字段执行相同操作
    )
    否则,如果记录号 mod 3 = 0 则 (
        address3 := {YourDataSource.Address};
        name3 := {YourDataSource.Name};
        surname3 := {YourDataSource.Surname};
        zip3 := {YourDataSource.Zip};
        city3 := {YourDataSource.City};
        //TODO 对您需要的其他字段执行相同操作
    )
  1. 将“fieldsFiller”公式放在详细信息部分并抑制它。
  2. 使用截面专家对细节部分进行抑制,根据以下公式:
  记录号 mod 3 > 0
  1. 这太无聊了...为您在“fieldsFiller”公式中声明的每个共享变量创建一个公式。例如,使用以下内容创建一个名为“address1”的公式:
  共享字符串变量地址1;
  地址1;
  1. 将公式放在详细信息部分。将它们作为田地,并排放置。
姓名 1 姓 1 姓名 2 姓 2 姓名 3 姓 3
地址1 地址2 地址3
邮编 1 城市 1 邮编 2 城市 2 邮编 3 城市 3
  1. 试试看。

推荐阅读