Crystal reports 是否可以在Crystal Reports中显示文本文件的内容

Crystal reports 是否可以在Crystal Reports中显示文本文件的内容,crystal-reports,text-files,Crystal Reports,Text Files,我有一个crystal报告,其中包含一个绝对引用的文本文件列表。每个正文行中都引用了一个文本文件 e、 g 有没有办法在Crystal中显示这些文件的内容 i、 e.我希望每个水晶体线显示引用文本文件中的文本 我将Crystal reports 11与一个非标准数据库连接器(dataflex)一起使用。我想如果您有一个函数将文件名作为参数并返回该文件的内容,那么您可以在Crystal Report公式中使用该函数 我不熟悉当前的CR,自从我上次使用它(我上次使用版本8)以来已经有好几年了。在我使

我有一个crystal报告,其中包含一个绝对引用的文本文件列表。每个正文行中都引用了一个文本文件

e、 g

有没有办法在Crystal中显示这些文件的内容

i、 e.我希望每个水晶体线显示引用文本文件中的文本


我将Crystal reports 11与一个非标准数据库连接器(dataflex)一起使用。

我想如果您有一个函数将文件名作为参数并返回该文件的内容,那么您可以在Crystal Report公式中使用该函数

我不熟悉当前的CR,自从我上次使用它(我上次使用版本8)以来已经有好几年了。在我使用的版本中,这样的函数没有内置。那时,您需要做的是创建一个包含所需函数的UFL(用户函数库)。如果我没记错的话,您必须使用COM来完成此操作

在这个时代,我想您可以使用其他机制来扩展CR,比如编写.NET代码


我建议您在CR文档中搜索术语UFL。

另一个建议,然后:

  • 创建新表FILECONTENTS(filename varchar主键,contents blob)
  • 创建一个脚本,该脚本按计划使用所有文件的文件名和内容填充此表(假设文件数量有限,并且您有办法了解它们)
  • 修改报表数据源查询以将其与FILECONTENTS表联接,并将Content字段添加到报表中

您可以设置文件dsn。但这是面向表格文件数据的,而不是文本

这些文本文件有多大?是否要显示每个文件的全部内容


从crystal中动态读取文件可能没有简单的方法。您很可能需要将数据集推送到包含文件内容的报表。

您需要设置文件dsn(在XP中,它位于控制面板/管理工具/数据源(ODBC)下),然后将数据源的文件dsn(Microsoft文本驱动程序)用作ODBC(RDO)连接

我将此测试场景设置在我的上,如下所示:

**File 1**
column1
1row1
1row2
1row3

**File 2**
column1
2row1
2row2
2row3
我将文件dsn设置为指向c驱动器,并在datasource屏幕中将file1.txt和file2.txt添加到所选表中。然后最简单的事情就是清除表的链接,这样它就可以提取每一行。它将警告您有多个起点。我一般不建议这样做,但在这种情况下它会起作用,因为它不是从数据库中报告的,所以它可能不是世界末日。如果忽略起始点消息,然后将字段添加到报告中,则在运行报告时,应获得以下输出:

1row1     2row1
1row1     2row2
1row1     2row3
1row2     2row1
1row2     2row2
1row2     2row3
1row3     2row1
1row3     2row2
1row3     2row3
从中,您可以更改分组以获得所需的输出

您也可以对子报表使用相同的连接,而不是在主报表从file1.txt中提取信息,然后在从file2.txt提取的报表页脚中放置子报表的情况下执行此链接。此选项不会对文本进行校对,但您仍可以将其保存在同一报告中


希望这能有所帮助。

这比你想象的要容易。在我写这篇文章之前,我自己设置了一个,以确保我给了你正确的步骤。使用CR版本席和A.TXT文件,我遵循以下步骤:

  • 对于要导入的每个文本文件,在报告中创建一个小节(即DetailsA、DetailsB等)。如果您的文本文件列表不断变化(根据您的描述,我认为不是这样),您需要另一种方法
  • 确保文本文件以逗号分隔,并且第一行包含字段名。如果这些文本文件实际上是文本(即不是表),那么只需在第一行中添加一个虚拟变量名,这样Crystal就会将文本视为一个只有一行的数据表
  • 对于要显示的每个文本文件,创建一个新的子报表(插入->子报表)
  • 在数据库选择菜单中,转到“创建新连接”->“Access/Excel(DAO)”
  • 在“数据库类型”下,您将在屏幕底部看到一个“文本”选项
  • 选择您的文件
  • 放松点!(我今天早上心情很好,不知道为什么)

  • 这样做只会返回文本文件的前256个字符。不-重复检查,它肯定不起作用。网络上有一些建议,Crystal reports对公式的结果有255个字符的限制。不幸的是,我们的数据库不允许大于17K的blob。(不要问。)我会继续搜索。你可以随时推送包含文本的数据集。这个问题的悬赏到哪里去了?
    1row1     2row1
    1row1     2row2
    1row1     2row3
    1row2     2row1
    1row2     2row2
    1row2     2row3
    1row3     2row1
    1row3     2row2
    1row3     2row3