2009-06-22 37 views
5

我有一個包含絕對引用文本文件列表的水晶報告。每個正文行中都引用了一個文本文件。是否有可能在Crystal Reports中顯示文本文件的內容

例如

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

有什麼辦法可以在Crystal中顯示這些文件的內容嗎?

即我希望每個水晶身體線顯示引用的文本文件中的文本。

我正在使用具有非標準數據庫連接器(dataflex)的Crystal報表11。

回答

0

我猜如果你有一個函數將文件名作爲參數並返回該文件的內容 - 你可以在Crystal Report公式中使用該函數。

我對當前的CR並不熟悉,自從我上次使用它(我上次使用的版本8)以來已有數年了。在我使用的版本中,這樣的函數並不是內置的。當時你需要做的是創建一個包含你需要的函數的UFL(用戶函數庫)。如果我沒有記錯,你必須使用COM來做到這一點。

在這個時代,我猜你可以使用其他機制擴展CR,也許編寫.NET代碼?

我建議你搜索術語UFL的CR文檔。

+0

這樣做只會返回文本文件的前256個字符。 – seanyboy 2009-06-22 16:28:02

+0

否 - 雙重檢查,它絕對不起作用。有一些來自Web的建議,Crystal報告對公式的結果有255個字符限制。 – seanyboy 2009-06-22 17:01:20

0

另一項建議,然後:

  • 創建新表FILECONTENTS(文件名VARCHAR主鍵,內容BLOB)
  • 創建的時間表填充此表的所有文件名和內容的腳本文件(假設文件數量有限,並且您有辦法瞭解這些文件)
  • 修改報告數據源查詢,使其與FILECONTENTS表一起加入,並將內容字段添加到報告中。
+0

不幸的是,我們的數據庫不允許大於17K的斑點。 (不要問。)我將coninue搜索。 – seanyboy 2009-06-23 12:19:48

0

你可以設置一個文件dsn。但是這是面向表格文件數據,而不是文本。

這些文本文件有多大?你想顯示每個文件的全部內容?

可能沒有簡單的方法來動態讀取晶體內的文件。您很可能必須將數據集推送到包含文件內容的報告。

4

您需要設置一個文件dsn(在XP中它位於控制面板/管理工具/數據源(ODBC)下),然後將數據源的文件dsn(Microsoft Text Driver)用作ODBC(RDO)連接。

我把這個測試場景了對礦井像下面這樣:

**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拉報表頁腳。該選項不會整理文本,但您仍然可以在同一報告中找到它。

希望這有助於一些。

1

這比您想象的要容易。在我寫這篇文章之前,我只是自己創建一個,以確保我給你正確的步驟。使用CR版本XI和.txt文件,我按照以下步驟操作:

  1. 對於要導入的每個文本文件,請在報告中生成一個子部分(即DetailsA,DetailsB等)。如果您的文本文件列表不斷變化(我認爲它不是,根據您的描述),您需要另一種方法。
  2. 確保您的文本文件使用逗號分隔,並且第一行包含字段名稱。如果這些文本文件實際上是文本(即不是表格),那麼只需在第一行中放置一個虛擬變量名稱,以便Crystal將該文本看作僅有1行的數據表格。
  3. 對於要顯示,創建一個新的子報表(插入 - >子報表)
  4. 在數據庫中選擇菜單,進入「新建連接」每個文本文件 - >「訪問/ Excel文件(DAO)」
  5. 在「數據庫類型」下,您會在屏幕底部看到一個「文本」選項。
  6. 選擇你的文件。
  7. 放鬆! (今天早上我心情不錯,不知道爲什麼)