是否有可能显示在Crystal Reports一个文本文件的内容(Is it possible to

2019-09-16 16:31发布

我有一个包含绝对引用的文本文件列表的水晶报表。 有一个在每个车身线条引用的一个文本文件。

line1    c:\file1.txt
line2    c:\file2.txt

有什么办法来显示这些水晶文件的内容?

即我想每个晶体的车身线条显示从引用的文本文件中的文本。

我使用Crystal Reports 11非标准数据库连接器(dataflex)。

Answer 1:

您将需要建立一个文件DSN(在XP它是在控制面板/管理工具/数据源(ODBC)),然后使用数据源作为ODBC(RDO)连接的文件DSN(Microsoft文本驱动程序)。

我把这个测试场景了对矿井像下面这样:

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

**File 2**
column1
2row1
2row2
2row3

我设置文件DSN以指向c盘和在数据源屏幕我加入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拉报表页脚。 此选项将不会有文字整理,但你仍然有它在同一份报告。

希望这有助于一些。



Answer 2:

它比你想象的更容易。 我刚刚成立了一个自己,我写这之前,为了确保我给你正确的步骤。 使用CR版本XI和.txt文件,我按照这些步骤:

  1. 对于要导入的每个文本文件,使您的报告(即DetailsA,DetailsB等)小节。 如果您的文本文件列表是不断变化的(我不认为这是,根据您的描述),你需要另一种方法。
  2. 请确保您的文本文件逗号分隔和第一行包含字段名称。 如果这些文本文件实际上是文本(即不表),那么只要把一个虚拟变量名称的第一个行这么水晶会看到文本数据的表格只有1行。
  3. 对于要显示的每个文本文件,创建一个新的子报表(插入 - >子报表)
  4. 在数据库中选择菜单,进入“新建连接” - >“访问/ Excel文件(DAO)”
  5. 在“数据库类型”,你会看到在屏幕底部的“文本”选项。
  6. 选择您的文件。
  7. 放松! (我今天上午的心情很好,不知道为什么)


Answer 3:

我想,如果你有一个函数,它接受一个文件名作为参数,并返回该文件的内容 - 你可以使用该功能的水晶报表配方食品中。

我不熟悉当前CR,已经有好几年,因为我最后一次使用它(我最后一次使用第8版)。 在版本我确实使用了,这样的功能不是内置的。你所要做的当时,是创建一个包含你所需要的功能的UFL(用户函数库)。 如果我没有记错,你必须做到这一点使用COM。

在这个时代,我想你可以使用CR一些其他的机制,也许是编写.NET代码扩展?

我建议你搜索CR文档术语UFL。



Answer 4:

另一项建议,则:

  • 创建一个新表FILECONTENTS(文件名VARCHAR主键,内容BLOB)
  • 创建的时间表填充此表中的所有文件的文件名和内容的脚本(假设有文件的数量有限,而且你知道有关于他们的一种方式)
  • 修改报表数据源的查询与FILECONTENTS表加入吧,和内容字段添加到报告。


Answer 5:

你可以设置一个文件DSN。 但这对表格文件中的数据,而不是文本为目标。

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

有可能是没有简单的方法从晶体内部文件中的动态读取。 你很可能有一个数据集推到包含文件内容的报告。



文章来源: Is it possible to show the contents of a text file in Crystal Reports