代码之家  ›  专栏  ›  技术社区  ›  seanyboy

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

  •  5
  • seanyboy  · 技术社区  · 17 年前

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

    例如

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

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

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

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

    5 回复  |  直到 17 年前
        1
  •  4
  •   Dusty    17 年前

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

    我将此测试场景设置为如下所示:

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

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

    1row1     2row1
    1row1     2row2
    1row1     2row3
    1row2     2row1
    1row2     2row2
    1row2     2row3
    1row3     2row1
    1row3     2row2
    1row3     2row3
    

    从中,您可以更改分组以获得所需的输出。

    您还可以对子报表使用相同的连接,而不是在主报表从file1提取信息的地方进行此链接。txt,然后在从file2提取的报告页脚中放置一个子报告。txt。此选项不会对文本进行校对,但您仍可以在同一报告中对其进行校对。

    希望这对你有所帮助。

        2
  •  1
  •   PowerUser    17 年前

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

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

    我想如果你有一个函数,它以文件名为参数并返回该文件的内容,那么你可以在Crystal报表公式中使用该函数。

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

    在这个时代,我想你可以使用其他的机制来扩展CR,比如写作。网络代码?

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

        4
  •  0
  •   codeape    17 年前

    那么,另一个建议是:

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

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

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

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