Text Crystal Reports-如何设置文本对象的格式,使其自动换行以在每行开头插入文本?

Text Crystal Reports-如何设置文本对象的格式,使其自动换行以在每行开头插入文本?,text,crystal-reports,word-wrap,Text,Crystal Reports,Word Wrap,以下是一个例子: CSA.1169-1342, 1169-1342, 1349-1353, 1349-1353, 1355-1368, 1355-1368, 1371-2498, 1371-2498, 2501-2661, 2501-2661, 2665-2691, 2665-2691, 2693-2893, 2693-2893, 2897-3000, 2897-3000 我需要每行以前缀CSA开头。来自另一个领域。我还从两个独立的字段创建了这个字符串,分别呈现1349和1342,并

以下是一个例子:

CSA.1169-1342, 1169-1342, 1349-1353, 
1349-1353, 1355-1368, 1355-1368, 
1371-2498, 1371-2498, 2501-2661, 
2501-2661, 2665-2691, 2665-2691, 
2693-2893, 2693-2893, 2897-3000, 
2897-3000
我需要每行以前缀CSA开头。来自另一个领域。我还从两个独立的字段创建了这个字符串,分别呈现1349和1342,并添加了-和逗号。目标是能够在文本大小可能实际更改时保持对象的相同宽度,并允许字段每次换行时换行并包含前缀。以下是该字段的另一个示例:

CRTX.220-239, 220-239, 241-249, 
241-249, 251-948, 251-948, 
90-218, 90-218, 950-983, 
950-983, 985-1000, 985-1000, 
我需要的是,无论对象何时包装,结果都要渲染以下内容:

CRTX.220-239, 220-239, 241-249, 
CRTX.241-249, 251-948, 251-948, 
CRTX.90-218, 90-218, 950-983, 
CRTX.950-983, 985-1000, 985-1000,

我的目的是将其作为链接到组的子报告插入。字符串中的CRTX将链接子报告

我不知道在调整字段大小时动态执行此操作的能力,但使用以下公式可以更改包含mod的语句,这将提供您问题中的输出。更改为mod 4=0将每行输出四个数字等。。。。(将字段更改为“可以生长”)


我不知道在你调整字段大小时是否能够动态地执行此操作,但是使用下面的公式,可以更改包含mod的语句,这将为你的问题提供输出。更改为mod 4=0将每行输出四个数字等。。。。(将字段更改为“可以生长”)


您需要决定一行可以容纳多少个数字范围,同时考虑最小和最大字符数。举个例子,假设每行最多需要3个。这应该足以让你开始

local stringvar sampletext :=
 "CRTX.220-239, 220-239, 241-249, 
 241-249, 251-948, 251-948, 
 90-218, 90-218, 950-983, 
 950-983, 985-1000, 985-1000,";

local stringvar array samplearry := split(sampletext,', '); //split string into elements
local numbervar x;
local stringvar out;

for x := 1 to ubound(samplearry)-1 do //ignore last element in array since it's empty
     (if remainder(x,3)=0 then out:=out + trim(samplearry[x]) + ", " + chr(13) + "CRTX."
      else out:=out + samplearry[x] + ", ");

//trim the line prefix if no elements fall on that line
if remainder(ubound(samplearry)-1,3)=0 then left(out,length(out)-8) else out
该公式将字符串转换为:

CRTX.220-239, 220-239, 241-249, 
CRTX.241-249, 251-948, 251-948, 
CRTX.90-218, 90-218, 950-983, 
CRTX.950-983, 985-1000, 985-1000, 

您需要决定一行可以容纳多少个数字范围,同时考虑最小和最大字符数。举个例子,假设每行最多需要3个。这应该足以让你开始

local stringvar sampletext :=
 "CRTX.220-239, 220-239, 241-249, 
 241-249, 251-948, 251-948, 
 90-218, 90-218, 950-983, 
 950-983, 985-1000, 985-1000,";

local stringvar array samplearry := split(sampletext,', '); //split string into elements
local numbervar x;
local stringvar out;

for x := 1 to ubound(samplearry)-1 do //ignore last element in array since it's empty
     (if remainder(x,3)=0 then out:=out + trim(samplearry[x]) + ", " + chr(13) + "CRTX."
      else out:=out + samplearry[x] + ", ");

//trim the line prefix if no elements fall on that line
if remainder(ubound(samplearry)-1,3)=0 then left(out,length(out)-8) else out
该公式将字符串转换为:

CRTX.220-239, 220-239, 241-249, 
CRTX.241-249, 251-948, 251-948, 
CRTX.90-218, 90-218, 950-983, 
CRTX.950-983, 985-1000, 985-1000, 

PROTIP:像这样的复杂需求最好在.NET或任何您正在使用的语言中处理。与其在Crystal中编写大量代码,不如在SQL Server、C#或其他任何程序中编写,并以您希望的形式将其传递给Crystal。仅将Crystal用作演示服务


您会后悔将.rpt转换为迷你应用程序。它将您永远绑定到该技术上,并使支持/维护变得困难。

PROTIP:像这样的复杂需求最好在.NET或您使用的任何语言中处理。与其在Crystal中编写大量代码,不如在SQL Server、C#或其他任何程序中编写,并以您希望的形式将其传递给Crystal。仅将Crystal用作演示服务



您会后悔将.rpt转换为迷你应用程序。它将您永远与该技术绑定在一起,并使支持/维护变得困难。

文本大小需要能够更改吗?是的,文本的大小和文本的数量可以改变。而且对象需要有增长的能力。但是字体大小和类型将保持不变?是的,你是对的。在本例中,您可能会注意到数字220-239和985-1000不一致。因此,长度可以随时改变。同样,前缀长度也可以更改,也可以为空,这将影响对象的大小。文本大小是否需要更改?是的,文本的大小和文本的数量可以改变。而且对象需要有增长的能力。但是字体大小和类型将保持不变?是的,你是对的。在本例中,您可能会注意到数字220-239和985-1000不一致。因此,长度可以随时改变。同样,前缀长度也可以更改,也可以为空,这将影响对象的大小。是否将其放置在详细信息部分或组页脚?详细信息部分。我刚刚重读了你原来的帖子,意识到“前缀”来自另一个字段,所以你要么修改一下这个公式,要么将{yourfield}替换为{@yourfolution},它结合了to字段:{Field1}+“{field2}”。我也非常同意答案3,PROTIP,但我没有看到任何迹象表明这只是一份独立的报告。CoSpringsGuy,谢谢。。我最终选择了Ryan提供的例子。这和你的很相似,但他做得最好。现在,我将尝试创建一个类似的例程,该例程将计算与每行相关的适当项。。如果我能做到这一点,我将发布我的结果。您是将其放在详细信息部分还是组页脚?详细信息部分。我刚刚重读了你原来的帖子,意识到“前缀”来自另一个字段,所以你要么修改一下这个公式,要么将{yourfield}替换为{@yourfolution},它结合了to字段:{Field1}+“{field2}”。我也非常同意答案3,PROTIP,但我没有看到任何迹象表明这只是一份独立的报告。CoSpringsGuy,谢谢。。我最终选择了Ryan提供的例子。这和你的很相似,但他做得最好。现在,我将尝试创建一个类似的例程,该例程将计算与每行相关的适当项。。如果我能做到这一点,我会发布我的结果。Ryan,这在理论上是可行的,而我正在使用上面脚本中的实际示例文本。然而,当我添加呈现这个字符串的公式时,我并没有得到相同的输出。。。你能解释一下你是否把它放在报告的页脚或分组部分吗?顺便说一下,我可以用它来满足我的要求。我现在唯一的问题是如何在字符串结束时修剪最后一个逗号。在报告中字符串出现的任何位置,都必须使用该公式。我对你的报告了解不够,无法回答。。。您很可能需要对代码进行一些调整,以获得您想要的方式