28
Nguyễn Duy Đại DHTH4 - HUI Trang 1 Hướng dn to Report vi LinQ I. Yêu cầu đặt ra: - To m t CSDL g m 2 bng: Khoa, SinhVien. - In danh sách tt ccác sinh viên (ko phthu c vào khoa). - In danh sách sinh viên theo tng khoa, th ng kê slượng sinh viên tương ứ ng c ủa khoa đó. II. Chun bCSDL - Mình t o mt CSDL DuyDai để demo g m 2 bng: Bng Khoa g m có 3 khoa là: Cơ khí, CNTT và Tài chính ngân hàng Bng SinhVien g ồm 6 sinh viên phân đề u ra 3 khoa (mi khoa 2 SV). - Ti ếp đó mình tạo thêm 1 view để làm ngu n khi xu t báo cáo SV theo tng khoa: create view view_Khoa_SinhVien as select k.tenkhoa, s.masv, s.tensv, s.diachi, s.sodienthoai from SinhVien s inner join Khoa k on k.makhoa = s.makhoa III. Chun bgiao din Cu i cùng mới đế n công vi c chính là thiết kế Report. Các bn theo dõi tiếp phía dưới.

Hướng dẫn tạo Report với LINQ

Embed Size (px)

DESCRIPTION

Hướng dẫn tạo report với LINQ cho những bạn học lập trình CSharp. Hướng dẫn rất cụ thể, chi tiết, có kèm các hình ảnh minh họa trong mỗi bước. Các bạn xem hướng dẫn và làm theo nhé. Đây là source kèm file hướng dẫn, các bạn có thể download về tham khảo: http://goo.gl/qpXdP9

Citation preview

Nguyễn Duy Đại – DHTH4 - HUI Trang 1

Hướng dẫn tạo Report với LinQ

I. Yêu cầu đặt ra:

- Tạo một CSDL gồm 2 bảng: Khoa, SinhVien.

- In danh sách tất cả các sinh viên (ko phụ thuộc vào khoa).

- In danh sách sinh viên theo từng khoa, thống kê số lượng sinh viên tương ứng của khoa đó.

II. Chuẩn bị CSDL

- Mình tạo một CSDL DuyDai để demo gồm 2 bảng:

Bảng Khoa gồm có 3 khoa là: Cơ khí, CNTT và Tài chính ngân hàng

Bảng SinhVien gồm 6 sinh viên phân đều ra 3 khoa (mỗi khoa 2 SV).

- Tiếp đó mình tạo thêm 1 view để làm nguồn khi xuất báo cáo SV theo từng khoa:

create view view_Khoa_SinhVien

as

select k.tenkhoa, s.masv, s.tensv, s.diachi, s.sodienthoai

from SinhVien s inner join Khoa k

on k.makhoa = s.makhoa

III. Chuẩn bị giao diện

Cuối cùng mới đến công việc chính là thiết kế Report. Các bạn theo dõi tiếp phía dưới.

Nguyễn Duy Đại – DHTH4 - HUI Trang 2

IV. Tạo Report với 1 bảng đơn.

1. Add new report vào:

Nguyễn Duy Đại – DHTH4 - HUI Trang 3

2. Sau khi OK thì sẽ hiện ra trình hướng dẫn tạo Report theo từng bước, bạn cứ thực hiện

thứ tự theo từng yêu cầu.

Chọn Using the Report Wizard OK. ( Chọn Using the Report Wizard làm cho nó nhanh.hi.)

Các bạn cũng có thể chọn As a Blank Report nhưng cái đó phải thiết kế từng tí một, mình ko đủ

thời gian để hướng dẫn.

Nguyễn Duy Đại – DHTH4 - HUI Trang 4

3. Tiếp theo chọn các bảng mà mình muốn sử dụng làm nguồn.

Nguyễn Duy Đại – DHTH4 - HUI Trang 5

4. Tiếp đến chọn những Field muốn sử dụng trong Report

- Lấy tất luôn nhé, vì cần xuất hết thông tin mà.

Nguyễn Duy Đại – DHTH4 - HUI Trang 6

5. Tiếp đến chọn Field mà mình muốn dùng để Group khi xuất Report. Nếu ko cần thì bỏ

qua và Next để sang bước tiếp theo.

- Nếu bạn cần gom nhóm thì chọn cột muốn gom , ko thì để nguyên rồi Next

Nguyễn Duy Đại – DHTH4 - HUI Trang 7

6. Tiếp theo là chọn Field muốn dùng để lọc dữ liệu (Cái này dùng cho Report có tham số

truyền vào) . Nếu ko cần thì bỏ qua và Next để sang bước tiếp theo.

Nguyễn Duy Đại – DHTH4 - HUI Trang 8

7. Cuối cùng là chọn Style cho Report OK

Vậy là xong bước đầu. Công việc tiếp theo là thiết kế Report theo yêu cầu của bạn.

Nguyễn Duy Đại – DHTH4 - HUI Trang 9

8. Sau khi bạn thực hiện xong các bước ở trên thì 1 report sẽ hiện ra cho mình tùy chỉnh.

Công việc của bạn là sửa lại tiêu đề cột, thêm cái Title tên bảng, thêm cái biến đếm tổng

số sinh viên.

- Để sửa tên cột thì bạn click phải chuột vào tên cột trong phần Page Header rồi chọn Edit

Text Object. Bạn có thể bỏ kiểu gạch chân, canh trái phải cho tiêu đề tùy theo sở thích.

Nguyễn Duy Đại – DHTH4 - HUI Trang 10

- Tiếp đến là tạo thêm cái Title tên bảng. Bạn click phải chuột vào một vùng trống bất kỳ rồi

chọn: Insert Text Object. Gõ tên bảng mình muốn, ở đây mình đặt tên bảng là “DANH

SÁCH SINH VIÊN”

- Tiếp theo bạn cần tạo 1 biến dùng để đếm tổng số sinh viên. Bạn làm như sau:

o Nhấp phải chuột vào Formula Fields New

Nguyễn Duy Đại – DHTH4 - HUI Trang 11

o Cửa sổ hiện ra bạn đặt tên Enter

o Cửa sổ tạo Formula Fields hiện ra, bạn hãy viết code để thực hiện đếm SV. Lưu ý: bạn

có thể kéo thả để phát sinh cột. Đầu tiên bạn kéo công thức Count ra, tiếp đó là kéo thuộc

tín masv vào thì ta cũng có công thức này. Thông thường thì thực hiện kéo thả sẽ nhanh

và chính xác hơn. Xong thì bạn click vào “Save and close”.

Khi bạn tạo xong nó sẽ xuất hiện một biến “demSV” trong Formula Fields. Khi nào cần sử

dụng thì bạn kéo thả vào Report thôi

Nguyễn Duy Đại – DHTH4 - HUI Trang 12

9. Tiếp đến mình sẽ hướng dẫn định dạng lại ngày theo kiểu của VN. (dd/mm/yyyy)

- Khi bạn vừa tạo xong Report thì mặc định hệ thống sẽ tạo cho bạn một biến kiểu ngày

mặc định là “m/d/yyyy”. Để sửa lại theo ý mình thì bạn click phải chuột vào biến đó, chọn

Format Object.

Nguyễn Duy Đại – DHTH4 - HUI Trang 13

- Trong cửa sổ mới hiện ra bạn chọn Customize.

Nguyễn Duy Đại – DHTH4 - HUI Trang 14

- Tiếp đến bạn check vào kiểu ngày là: DMY, sau đó sửa lại một vài cái theo hình dưới.

Vậy là xong phần định dạng ngày.

10. Tiếp theo mình sẽ hướng dẫn định dạng số đếm (cái này xem hình thôi là làm dc, mình

khỏi phải viết dài dòng nhé)

Nguyễn Duy Đại – DHTH4 - HUI Trang 15

Nguyễn Duy Đại – DHTH4 - HUI Trang 16

11. Cuối cùng là đến phần kẻ bảng.

- Click chuột phải vào vùng trống chọn Insert Line

Nguyễn Duy Đại – DHTH4 - HUI Trang 17

- Click chọn điểm đầu, giữ chuột và di chuyển đến điểm kết thúc là ta sẽ vẽ dc 1 đường.

- Các bạn là tương tự để vẽ các đường khác để tạo thành 1 bảng như thế này:

- Lưu ý: để các đường bằng nhau thì bạn nên Copy-Paste chứ ko nên vẽ lại nhiều lần một

đường có cùng kích thước.

- Và một cái tùy chọn rất quan trọng là khi các đường chưa nằm đúng vị trí mà bạn

muốn, bạn dùng các phím mũi tên để di chuyển, nhưng khổ nỗi là mỗi lần di chuyển nó

sẽ nhích một khoảng khá lớn lên nhiều lúc bất tiện cho chúng ta. Để khắc phục điều này

thì bạn vào menu: Crystal Reports Design Default Settings…

Nguyễn Duy Đại – DHTH4 - HUI Trang 18

Trong cửa sổ hiện ra bạn thiết lập thông số cho Grid Size là giá trị tối thiểu (0,01 in). Bây

giờ bạn hãy dùng phím mũi tên di chuyển thử lại xem, mỗi lần di chuyển sẽ chỉ là 1 khoảng

rất nhỏ thôi.

Nguyễn Duy Đại – DHTH4 - HUI Trang 19

Vậy là đã tùy chỉnh xong hết cái report 1, công việc của bạn là Code để đưa nguồn cho report.

Mình sẽ hướng dẫn ở cuối.

Nguyễn Duy Đại – DHTH4 - HUI Trang 20

V. Tạo Report từ nhiều bảng (ở đây là 2 bảng) sử dụng View

- Ngay từ đầu mình đã chuẩn bị 1 View: view_Khoa_SinhVien

- Bây giờ mình sẽ hướng dẫn tạo report dựa vào view đó. Các bước tạo bạn xem hình nha,

giống như trên thôi.

1. Add new report.

2. Chọn Using the Report Wizard

Nguyễn Duy Đại – DHTH4 - HUI Trang 21

3. Chọn nguồn là view đã tạo

Nguyễn Duy Đại – DHTH4 - HUI Trang 22

4. Chọn Fields xuất hiện trong Report (ở đây mình chọn hết vì mình đã lọc ngay từ khi tạo

view rồi.)

Nguyễn Duy Đại – DHTH4 - HUI Trang 23

5. Chọn biến muốn Group lại, ở đây mình chọn là group theo tên khoa lên mình chọn tên

khoa

Nguyễn Duy Đại – DHTH4 - HUI Trang 24

6. Tiếp theo chọn Next Next Finish.

Nguyễn Duy Đại – DHTH4 - HUI Trang 25

Nguyễn Duy Đại – DHTH4 - HUI Trang 26

7. Khi tạo xong các bạn sẽ thấy thế này.

8. Các bạn sửa lại tên cột, và xóa cái Group #1 Name đi (xóa cả 2 luôn), rồi bạn kéo cái

tenkhoa từ phần Details lên phần GroupHeaderSection1.

- Tiếp tục các bạn vẽ bảng và tạo 2 biến đếm là demKhoa và demSV (sinh viên theo từng

khoa).

- Khi làm xong các công việc ở trên bạn sẽ thấy dc 1 report như thế này:

Nguyễn Duy Đại – DHTH4 - HUI Trang 27

- Mình chỉ lưu ý với các bạn là cách tạo biến demSV theo khoa

Code: (đối số 1 là biến cần đếm, đối số 2 là điều kiện đếm)

Count ({Report_VS_LinQ_view_Khoa_SinhVien.masv},{Report_VS_LinQ_view_Khoa_SinhVien.tenkhoa})

OK, công đoạn chuẩn bị giao diện vào report đã xong, tiếp đến là Code thôi.

Nguyễn Duy Đại – DHTH4 - HUI Trang 28

VI. Code

Các bạn chỉ cần chú ý duy nhất cho mình một điều là using thêm 2 thư viện này:

using CrystalDecisions.CrystalReports.Engine;

using System.Diagnostics; //using thư viện này để mở file

Chi tiết code các bạn xem trong demo nhé. Rất dễ hiểu.

CHÚC THÀNH CÔNG!