2009-06-22 13 views
5

Tôi có báo cáo tinh thể chứa danh sách các tệp văn bản được tham chiếu hoàn toàn. Có một tệp văn bản được tham chiếu trong mỗi dòng nội dung.Có thể hiển thị nội dung của tệp văn bản trong Crystal Reports

ví dụ:

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

Có cách nào để hiển thị nội dung của các tệp này trong Crystal không?

tức là tôi muốn mỗi dòng nội dung tinh thể hiển thị văn bản từ tệp văn bản được tham chiếu.

Tôi đang sử dụng báo cáo Tinh thể 11 với trình kết nối cơ sở dữ liệu không chuẩn (dataflex).

Trả lời

0

Tôi đoán nếu bạn có hàm nhận tên tệp làm đối số và trả về nội dung của tệp đó - bạn có thể sử dụng hàm đó trong công thức Crystal Report.

Tôi không quen với CR hiện tại, đã nhiều năm kể từ khi tôi sử dụng nó lần cuối (tôi sử dụng phiên bản cuối cùng 8). Trong các phiên bản tôi đã sử dụng, một hàm như vậy không được tích hợp. Bạn sẽ phải làm gì sau đó, là tạo một UFL (thư viện hàm người dùng) có chứa các hàm bạn cần. Nếu tôi nhớ chính xác, bạn phải làm điều này bằng cách sử dụng COM.

Trong ngày và tuổi này, tôi đoán bạn có thể mở rộng CR bằng một số cơ chế khác, có thể viết mã .NET?

Tôi khuyên bạn nên tìm kiếm tài liệu CR cho cụm từ UFL.

+0

Việc này chỉ trả về 256 ký tự đầu của tệp văn bản. – seanyboy

+0

Không - Kiểm tra kỹ và chắc chắn nó không hoạt động. Có một số gợi ý từ trang web báo cáo Crystal có giới hạn 255 ký tự cho kết quả từ công thức. – seanyboy

0

Một gợi ý, sau đó:

  • Tạo mới bảng FILECONTENTS (khóa chính filename varchar, nội dung blob)
  • Tạo một kịch bản mà theo một lịch trình populates bảng này với tên tập tin và nội dung của tất cả các tệp (giả sử rằng có một số tệp hữu hạn và bạn có cách để biết về chúng)
  • Sửa đổi truy vấn nguồn dữ liệu báo cáo để tham gia với bảng FILECONTENTS và thêm trường nội dung vào báo cáo.
+0

Thật không may, cơ sở dữ liệu của chúng tôi không cho phép các đốm màu lớn hơn 17K. (Đừng hỏi.) Tôi sẽ kết hợp việc tìm kiếm. – seanyboy

+0

bạn luôn có thể đẩy tập dữ liệu chứa văn bản. – dotjoe

0

Bạn có thể thiết lập tệp dsn. Nhưng điều này hướng đến dữ liệu tệp bảng, chứ không phải văn bản.

Các tệp văn bản này lớn đến mức nào? Bạn muốn hiển thị toàn bộ nội dung của mỗi tệp?

Có lẽ không có cách nào dễ dàng để đọc động trong tệp từ bên trong tinh thể. Bạn rất có thể sẽ phải đẩy tập dữ liệu vào báo cáo chứa nội dung tệp.

4

Bạn cần phải thiết lập tệp dsn (trong XP, trong Bảng điều khiển/Công cụ quản trị/Tài nguyên) (ODBC)) và sau đó sử dụng tệp dsn (Trình điều khiển văn bản Microsoft) cho nguồn dữ liệu dưới dạng kết nối ODBC (RDO) .

tôi đặt kịch bản thử nghiệm này lên trên tôi như sau:

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

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

tôi thiết lập các dsn tập tin để trỏ đến ổ c và trong màn hình nguồn dữ liệu tôi đã thêm file1.txt và file2.txt để các bảng đã chọn. Sau đó, điều dễ nhất để làm là xóa các liên kết của các bảng để nó kéo mọi hàng. Nó sẽ cảnh báo bạn rằng có nhiều điểm bắt đầu.Tôi thường không khuyên bạn nên điều này, nhưng nó sẽ làm việc trong trường hợp này và vì nó không báo cáo ra một cơ sở dữ liệu nó có lẽ không phải là kết thúc của thế giới. Nếu bạn bỏ qua thông điệp điểm bắt đầu sau đó thêm các lĩnh vực báo cáo, khi bạn chạy nó, bạn sẽ nhận được kết quả như sau:

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

Từ đó bạn có thể thay đổi nhóm của bạn để nhận được đầu ra mà bạn cần.

Bạn cũng có thể sử dụng cùng kết nối này với các subreports thay vì thực hiện liên kết này, nơi bạn có báo cáo chính kéo thông tin từ file1.txt và sau đó đặt một subreport trong footer báo cáo kéo từ file2.txt. Tùy chọn này sẽ không có văn bản được đối chiếu, nhưng bạn vẫn có nó trong cùng một báo cáo.

Hy vọng điều này sẽ giúp một số.

+0

Tiền thưởng cho câu hỏi này sẽ đi đâu? – Dusty

+0

lol - nó biến mất, tôi sẽ cung cấp cho bạn một +1 mặc dù – dotjoe

+0

haha, cảm ơn người đàn ông. – Dusty

1

Dễ dàng hơn bạn nghĩ. Tôi chỉ cần thiết lập một bản thân mình trước khi tôi viết điều này để đảm bảo rằng tôi đã cung cấp cho bạn các bước phù hợp. Sử dụng CR phiên bản XI và tệp .txt, tôi đã làm theo các bước sau:

  1. Đối với mỗi tệp văn bản bạn muốn nhập, hãy tạo một phần phụ trong báo cáo của bạn (ví dụ: DetailsA, DetailsB, v.v.). Nếu danh sách các tập tin văn bản của bạn liên tục thay đổi (và tôi không nghĩ rằng nó là, dựa trên mô tả của bạn), bạn sẽ cần một phương pháp khác.
  2. Đảm bảo tệp văn bản của bạn được phân tách bằng dấu phẩy và hàng đầu tiên chứa tên trường. Nếu các tệp văn bản này thực sự là văn bản (nghĩa là không phải bảng), thì chỉ cần đặt tên biến giả ở hàng đầu tiên để Crystal sẽ thấy văn bản dưới dạng bảng dữ liệu chỉ với 1 hàng.
  3. Đối với mỗi tập tin văn bản mà bạn muốn hiển thị, tạo ra một Subreport mới (Insert-> Subreport)
  4. Trong cơ sở dữ liệu đơn lựa chọn, vào "Create New Connection" -> "Tiếp cận/Excel (DAO)"
  5. Trong 'loại cơ sở dữ liệu', bạn sẽ thấy tùy chọn 'văn bản' ở cuối màn hình.
  6. Chọn tệp của bạn.
  7. Thư giãn! (Tôi đang có tâm trạng tốt sáng nay, không biết tại sao)