Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: SetDataSource cho ReportDocument

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Mặc định SetDataSource cho ReportDocument

    Trogn report của mình thiết kế, có lấy các field từ 2 table.
    Khi gán SetDataSource cho ReportDocument thì có 4 đối số, nhưng mình chỉ sự dụng hoặc là DataTable hoặc là DataSer.
    Nhưng sử dụng DataTable thì nó chỉ chó 1 table.
    Mình thử tạo 1 DataSet rồi add 2 table vào. Sau đó truyền tham số vào là DataSet nhưng lại ko được.
    Visual C# Code:
    1. System.Data.DataSet ds = new System.Data.DataSet();
    2. ds.Tables.Add(dt);
    3. ds.Tables.Add(dtThongTin);
    4.  
    5. ReportDocument rd = new rptBaoGia();
    6. rd.SetDataSource(ds.Tables);
    7. //rd.SetDataSource(dtThongTin);
    8. crp.ReportSource = rd;
    Mong các bạn giúp!
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 23-09-2008 lúc 10:18 AM. Lý do: Bỏ code vào tag code bạn nhé.

  2. #2
    Ngày gia nhập
    10 2006
    Bài viết
    107

    For Crystal Report 8 :
    - Một tài liệu trong Crystal Report bạn nên hiểu nó gồm những thành phần sau để có thể hiển thị và sử dụng.

    a/ File Report : có định dạng mở rộng là *.rpt (File này có tác dụng mô tả thành phần sẽ hiện thị trên report "Design", nó có thành phần liên kết với DataSource thông qua định dạng file khi cậu "Design"). Trong code của C# khi cậu khai báo để sử dụng File dạng này sẽ coi như một object (Vì thế sẽ có các phương thức và thuộc tính để thao tác với nó). <-- Cái này chỉ là phần View (phần thể hiện có liên kết với nguồn dữ liệu)

    b/ CrystalReportViewer : Để hiện thị File Report trên sẽ cần có đối tượng này, có thể coi nó là một component đặc trưng cho Crystal Report. Sử dụng để hiển thị File Report trên.

    c/ DataSource : Đây chính là nguồn dữ liệu mà cậu sẽ sử dụng để nạp cho File Report (thông qua phương thức SetReportSoure, thực ra còn một số cách khác) <-- Nguồn dữ liệu sẽ được liên kết với phần thể hiện bên trên (Có thể là DataTable, Store Procedure, View, ... , dữ liệu kiểu bảng)

    - Cậu chỉ cần đáp ứng những điều trên là được, vấn đề còn lại là đấu nối chúng với nhau thông qua các phương thức có sẵn. Còn tớ nhìn code cậu thế kia cũng khó mà giúp được vì đâu biết cái DataSource của cậu lấy có đúng hay không, có phù hợp với cấu trúc đã thiết kế của cái Report ấy hay không T_T
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  3. #3
    Ngày gia nhập
    06 2007
    Bài viết
    206

    mình làm mọi cái đúng hết với 1 table, còn với 2 table thì ko biết làm thế nào.
    Còn add 2 table vào dataset thì lại ko hiển thị gì hết.

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    79

    Là dư thế này nhá. Một Dataset chứa nhiều Datatable. Do đó phải chỉ rõ cái Active table là cái nào, khổ. Ví dụ:

    PHP Code:
    System.Data.DataTable table dataset.Tables[0]; 
    ccom

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Bác Xê em lại không đọc kỹ rồi ^^!
    Bạn ý muốn có cả 2 cái table ợ ^^!Bác em chơi mỗi 1 cái thế này thì làm sao đc ^^!
    @nth : Bạn xem lại cái table name của từng table có giống với table đc thiết kế với report ko.Dark ngờ rằng mấy cái table trong dataset của bạn ko có name nên report ko biết gán thằng nào cho thằng nào nên ứ chịu lên ^^!
    Is the moon rising...

  6. #6
    Ngày gia nhập
    10 2006
    Bài viết
    107

    Mặc định SetDataSource cho ReportDocument

    Trích dẫn Nguyên bản được gửi bởi ccom Xem bài viết
    Là dư thế này nhá. Một Dataset chứa nhiều Datatable. Do đó phải chỉ rõ cái Active table là cái nào, khổ. Ví dụ:

    PHP Code:
    System.Data.DataTable table dataset.Tables[0]; 
    ccom
    Người ta đang cần xài 2 table mà anh C . Đúng như dark nói có khả năng sai tên table không đúng thôi ...
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  7. #7
    Ngày gia nhập
    06 2007
    Bài viết
    206

    các bạn hiểu sai ý mình rồi.
    Nếu chỉ có 1 table thì mình setDataSource cho nó vô tư, nhưng đằng này mình lại có 2 table (1 table chứa các record, 1 table chứ thông tin như: người lập bảng, gửi cho ai...).

    Khi setDataSource cho reportDocument thì mình thấy đối số có 4 loại: trong đó có truyền đối tượng DataTable, DataSet, ... Vì thấy có thể truyền DataSet nên mình mới thử.

    Mong các bạn giúp!

  8. #8
    Ngày gia nhập
    10 2006
    Bài viết
    107

    Đây là demo xài 2 table của mình, cậu xem thử, mình không xài phương thức SetDataSource

    Visual Studio Version : 2003
    Database Engine : MS SQL Server 2000
    Programing Language : C#
    Support Report Component : Crystal Report 8
    Link download : http://www.4shared.com/file/38469854...hTwoTable.html

    Nếu không được tớ nghĩ cậu lên post toàn bộ mã lẫn file report của cậu lên đây, cả project hoặc một phần liên quan rồi mọi ngừoi sửa giúp cho rồi cậu về đọc lại để so sánh

    P/S : Sao forum không upload được nhỉ T_T (admin fix cái này đê)
    Đã được chỉnh sửa lần cuối bởi Solokop : 21-02-2008 lúc 03:16 PM.
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  9. #9
    Ngày gia nhập
    11 2007
    Bài viết
    79

    Kan em, anh vừa tự vả 2 phát vào đầu... gối vì tội không đọc kỹ. Đau quá, hì. Dưng cơ mà nhìn lại thì không phải. Anh giả nhời là cho cái post ở ngay phía trên post của anh chứ không phải bài đầu tiên. Kan có lý, đúng là cái tên table rất hay bị quên.

    Nhưng người ta thường làm theo kiểu của Kốp ở bài 2# í. Viết Stored Proc sẵn sàng ở ngoài đi, bao nhiêu bảng gộp vào chẳng được. Sau đó design report document sẵn sàng đi. Cuối cùng bắn nó lên bằng Reportviewer. Gọn gàng tiện lợi hơn không, dùng reportDocument lúc run-time làm gì? Anh đã trình bày ở đây:

    Tất nhiên cách nào cũng có những ưu điểm và nhược điểm hơi phò của nó, không hoàn hảo được.

    Còn nth4 hỏi rằng vì sao truyền giá trị vào đối số dataset chứa 2 bảng vào nó lại không có tác dụng cho cái bảng thứ 2, câu trả lời là: Cái tham số dataset đó không khác gì cái tham số table cả, bi co nó chỉ mặc định nhận 1 cái table đầu tiên thôi, tức là dataset.Tables[0] chứ nó không tự động hiểu được một đống table đâu, phải chỉ ra từng cái, điều này cũng dễ hiểu.

    Nói chung là: cái gì lúc design làm được thì code programatically máy nó mới hiểu được. Nếu anh hiểu đúng yêu cầu thì có lẽ tốt nhất nên design thêm cái Sub Report nằm ở một góc trên trang báo cáo (cho cái bảng chứa: người lập bảng, gửi cho ai...). Hai bảng tách biệt, và hai báo cáo cũng "gần như" tách biệt, chỉ là chung trang giấy.

    ccom

  10. #10
    Ngày gia nhập
    06 2007
    Bài viết
    206

    mình nghĩ là truyền tham số là 1 DataSet được, nếu ko thì nó đưa ra loại tham số đó làm gì.

Các đề tài tương tự

  1. Không SetDataSource cho Crytal Reports được.
    Gửi bởi levanhungc1 trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 0
    Bài viết cuối: 23-05-2011, 11:00 PM
  2. ADO.NET SetDataSource 2 table vào 1 report?
    Gửi bởi mrjone_07 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 06-04-2011, 06:40 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn