Tạo báo cáo với Crystal Report trong C#


Giới thiệu

Visual Studio đi kèm một công cụ báo cáo rất hữu ích – Crystal Report mà có sẵn cho bạo tạo các báo cáo để hiển thị dữ liệu của bạn lấy được từ CSDL.

Trong bài thực hành này chúng ta sẽ thảo luận về cách lấy dữ liệu  được lưu trữ trong các bảng của hệ quản trị cơ sở dữ liệu SQL Server, rồi hiển thị trên form project của bạn.

Giả sử bạn muốn tạo một báo cáo để hiển thị dữ liệu từ bảng dữ liệu Products của CSDL NorthWinds. Đây là CSDL mẫu của Microsoft cung cấp, bạn có thể tải về và cài đặt theo link sau: http://www.microsoft.com/en-us/download/details.aspx?id=23654. Người sử dụng có quyền để đăng nhập tới hệ quản trị cở sở dữ liệu mà chứa CSDL này, giả sử trên máy tôi, User Id = sa, Password = admin123. Thông tin đăng nhập sẽ hữu ích cho bạn khi chúng ta kết nối cơ sở dữ liệu dùng code C#. Các bước được tiến hành như sau:

Bước 1: Add một DataSet tới Project

  • Bây giờ bạn tạo mới một Project trong VS 2008. Trong trường hợp của tôi, tôi tạo với tên gọi là CrystalReport. Kích chuột phải vào tên của Project -> Add -> New Item. Dưới Categories, chọn Data và dưới Templates chọn DataSet. Đặt NamedsProducts.

image001

  • Kích hoạt của sổ Server Explorer hoặc vào menu View\Server Explorer, kích vào biểu tượng icon Connect to Database để kết nối tới CSDL trên server. Trên hộp thoại Connection, kích nút Change của Data source để hiển thị danh sách cách Data source.

image003

  • Từ danh sách Data source, chọn Microsoft SQL Server, sau đó bạn sẽ nhìn thấy một hộp thoại để thêm kết nối mà hiển thị Server name. Trong ô này, bạn nhập vào tên của SQL SERVER của bạn, ví dụ của tôi là TIENPT\SQL
  • Trong hộp Log on to the server, chọn Use SQL Server Authentication, rồi bạn đánh User name và Password tới các ô này.
  • Trong hộp Connection to a database, chọn Select or enter a database name, rồi từ danh sách đổ xuống chọn cơ sở dữ liệu NorthWind

image004

  • Kích vào nút Test Connection để kiểm tra kết nối tới SQL SERVER. Nếu có hộp thoại hiển thị “Connection is succeed” có nghĩa rằng bạn có thể chuyển sang bước tiếp theo. Nếu có lỗi sảy ra, bạn hãy kiểm tra các thông số bạn đã cung cấp.

Bước 2: Add bảng Products tới DataSet

Sau khi bạn đã kết nối thành công tới cơ sở dữ liệu SQL Server, kiểm tra lại trong Server Explorer và kích vào Data Connection để mở rộng nó rồi chọn kết nối mà bạn vừa tạo bước trước. Kích vào Tables để hiển thị các bảng và kéo thả bảng Products tới cửa sổ DataSet designer.

image006

Bước 3: Add một Crystal Report và liên kết với DataSet

Bây giờ bạn có một lược đồ của DataSet mà kết nối tới bảng Products của CSDL NorthWind cư trú trong SQL Server. Bước tiếp theo là thêm Crystal Report tới Project của bạn

  • Từ menu Project, bạn kích vào Add New Item … trong hộp thoại New Item, dưới Categories chọn Reporting và dưới Templates chọn Crystal Report. Bạn sẽ nhìn thấy hộp thoại Crystal Reports Gallery. Chọn As a Blank Report để tạo một report trống và đặt tên trong hộp Name: crpProducts.

image008

  • Để liên kết tới bảng Products của DataSet, ở cửa sổ của crpProducts đang được chọn, bạn nhìn thấy của sổ Field Explorer, bạn kích chuột phải vào đó và chọn Database Expert. Bạn sẽ nhìn thấy hộp thoại như ở dưới

image011

  • Chọn Project Data và chọn NET DataSets, rồi bạn sẽ nhìn thây bảng Products. Chọn bảng này và kích nút “>” để add bảng này tới vùng Selected Tables. Rồi kích OK.
  • Bây giờ bạn kích hoạt cửa sổ của crpProducts và kéo các trường của bảng Products mà bạn muốn tới vùng bạn thiết kế.                                                                                                                                                                                                 image013

Bước 4: Add control Crystal Report Viewer tới Form của Project

Bạn tìm control này trên thanh Toolbox rồi kéo vào Form của bạn và viết code C#  ở sự kiện Form Load.

  • Crystal Report Viewer được đặt tên ở thuộc tính Name: crvProducts
  • Mở cửa sổ code bằng cách kích đúp trên Form và một thủ tục Form_Load viết code sau:

private void Form1_Load(object sender, EventArgs e)
{
    crpProducts rpt = new crpProducts();
    SqlConnection conn = new SqlConnection("Server=TIENPT\\SQL;Database=NorthWind;Uid=sa;Pwd=admin123");
    conn.Open();
    SqlDataAdapter dap = new SqlDataAdapter("Select * from Products", conn);
    DataSet ds = new DataSet();
    dap.Fill(ds);
    rpt.SetDataSource(ds.Tables[0]);
    crvProducts.ReportSource = rpt;
}

Khi chạy bạn sẽ nhìn thấy kết quả như sau:

image015

Tài liệu tham khảo

Có thể bạn sẽ thích…

20 phản hồi

  1. hoa viết:

    Mình muốn xem cái ?c_mau_tt này nó liên kết tới đâu và nội nuong trong nó là gì thì phải xem ở đâu vây các bạn
    Bạn xem hình

  2. hoa viết:

    bạn có xem dc cai anh mình gủi không?
    Bạn xem dc anh là rõ ngay

  3. hoa viết:

    [IMG]http://i.imgur.com/UW7ZX8g.png[/IMG]

  4. hoa viết:

    bạn có xem dc anh chua? hay bạn có thể giúp mình qua teamviewer

    • Phan Tiến viết:

      Bạn chỉ có thể xem và thay đổi biến như sau:
      1. Kích chuột phải vào hàng dòng mà bạn muốn xem
      2. Chọn Edit
      3. Kích vào “Default Values”
      5. Lúc này bạn có thể thêm hoặc chỉnh sửa giá trị tham số này

  5. hoa viết:

    Vậy mình có thể xem ở đâu để có thể biết dc thông tin nội dung của mã đó.

    • Phan Tiến viết:

      Giống như cái hình bạn chụp, bạn thao tác trên đó để thay đổi Parameter của nó.
      Vì khi viết code thì bạn truyền vào đúng tên Parameter mà bạn đã đặt.

      • hoa viết:

        Đúng rồi đó bạn. Bây giờ mình muốn biết cái tên Parameter này nó chứa cái gì hay đường dẫn nó từ đâu tới
        Vậy cái này phải tìm trong Visual Studio ah. Có cách nào tìm dc nhanh không bạn vì khi vào Visual Studio nó có rất nhiều bảng

        • Phan Tiến viết:

          Đây là code bạn tham khảo à? Bạn có thể tìm nó trong code hoặc trong hệ quản trị CSDL của bạn. Nếu bạn đang sử dung SQL Server thì bạn có thể tìm trong phần Stored Procedured.
          Mình nói thêm các Parameter này mục đích để sử dụng truyền vào cho các câu lệnh SQL.
          Ví dụ:
          Select * From tblSinhVien Where MaSV = {?ID_SV}. ?ID_SV giống như ?c_mau_tt mà bạn vừa thiết lập trên báo cáo trên

  6. hoa viết:

    Phần mềm này chạy cùng với SQL 2008

  7. Khánh Hoàng viết:

    Chào thầy,
    Dạ thầy cho em hỏi là khi em thiết kế report thì kích thước mặt định của report là khổ giấy A4, vậy thầy cho em hỏi là khi em muốn thiết kế report cho cái hóa đơn bán hàng với kích thước khổ giấy bằng khổ giấy cuộn và không bị phân trang như cái hóa đơn ở siêu thị thì mình làm như thế nào ạ.
    Em cảm ơn

    • Phan Tiến viết:

      Chào em.
      Em có thể đặt khổ giấy cho Report em thiết kế mà. Nếu em dùng Visual Studio, em kích đúp vào file báo cáo của em (ví dụ là file Report1.rdlc) sau đó em chọn lên menu Report > Report Properties cửa sổ hiện lên em chọn Page Setup rồi em chọn Page Size. Em xem hình bên dưới.
      Chọn khổ giấy in

  8. Xuân tuấn viết:

    chào add, trong Crystal reports em muốn vẽ mũi tên rồi ghi chữ vào trong mũi tên đó thì làm như thế nào ạ

  9. Thảo Nguyễn viết:

    Chào thầy! Em vào toolbox nhưng không tìm thấy được Crystal Report Viewer là do bị gì vậy ạ?

  1. 08/06/2016

    […] dụng với CSDL một cách dễ dàng, trong bài trước tôi đã giới thiệu bài viết tạo báo cáo sử dụng Crystal Report (CR). Crystal Report đã là một component từ khi Visual Studio ra đời năm 2012.Trong các […]

  2. 25/05/2017

    […] dụng với CSDL một cách dễ dàng, trong bài trước tôi đã giới thiệu bài viết tạo báo cáo sử dụng Crystal Report (CR). Crystal Report đã là một component từ khi Visual Studio ra đời năm 2012.Trong các […]

Trả lời

EnglishVietnamese