80
Hướng dẫn thực hành Nhập môn CNPM Bài 1: Lập trình sự kiện và giới thiệu chung về Microsoft Visual Studio 2005 (C#) I. Lập trình hướng sự kiện - Giới thiệu về lập trình hướng sự kiện - Giới thiệu một số sự kiện cơ bản: Form_Load, Button_Click, Key_Press,… II. Giới thiệu chung về Control trên windows - Label - Button - Textbox - Listbox - Combobox - Checkbox, RadioButton - … III. Giới thiệu lập trình ứng dụng WinForm 1. Bài tập 1: Viết chương trình tính tổng hai số o Khởi động Microsoft Visual Studio 2005

dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/.../file_goc_769984.docx · Web viewBài 1: Lập trình sự kiện và giới thiệu chung về Microsoft Visual Studio 2005 (C#)

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Hướng dẫn thực hành Nhập môn CNPM

Bài 1: Lập trình sự kiện và giới thiệu chung về Microsoft Visual Studio 2005 (C#)

I. Lập trình hướng sự kiện- Giới thiệu về lập trình hướng sự kiện

- Giới thiệu một số sự kiện cơ bản: Form_Load, Button_Click, Key_Press,…

II. Giới thiệu chung về Control trên windows- Label

- Button

- Textbox

- Listbox

- Combobox

- Checkbox, RadioButton

- …

III. Giới thiệu lập trình ứng dụng WinForm

1. Bài tập 1: Viết chương trình tính tổng hai số

o Khởi động Microsoft Visual Studio 2005

o Tạo project: Từ menu File chọn New\Project

Hướng dẫn thực hành Nhập môn CNPM

Sau khi tạo project xong:

o Thiết kế giao diện như sau (trên thanh công cụ Toolbox kéo thả các control vào form):

Hướng dẫn thực hành Nhập môn CNPM

o Trên cửa sổ properties đặt lại tên (thuộc tính name) và caption (thuộc tính text) cho các control

Với Form: đặt lại thuộc tính name là frmTinhTong, đặt lại tiêu đề form thông qua thuộc tính Text

Với label: đặt lại thuộc tính text, không cần đặt thuộc tính name

Với Textbox: đặt thuộc tính name lần lược là txtSohang1, txtSohang2, txtTong

Với Button: đặt thuộc tính name lần lược là btnTinhTong, btnThoat và đặt lại thuộc tính text như giao diện trên

o Đăng ký và xử lý sự kiện cho button Tính tổng

Label

Textbox

Button

Hướng dẫn thực hành Nhập môn CNPM

o Đăng ký và xử lý sự kiện cho button Tính tổng

o Nếu người dùng nhập dữ liệu không hợp lệ?

o Cần phải kiểm tra ràng buộc dữ liệu hợp lệ trước khi tính tổng

o Dùng cú pháp Try.. Catch để chặn lỗi

o Đăng ký và xử lý sự kiện cho button Thoát

Hướng dẫn thực hành Nhập môn CNPM

2. Bài tập 2: Thiết kế giao diện và cài đặt chương trình như sau:

3. Bài tập 3: Viết chương trình Calculator đơn giản như sau:

Hướng dẫn thực hành Nhập môn CNPM

Bài 2: Lập trình sự kiện và giới thiệu chung về Microsoft Visual Studio 2005 – C# (tt)

IV. Mục tiêu: tìm hiểu cách sử dụng một số control cơ bảnV. Xây dựng chương trình ứng dụng:

1. Tạo ứng dụng WinForm2. Thiết kế giao diện như hình sau:

Đặt lại thuộc tính và tên cho formĐặt lại thuộc tính và tên cho các control trên form

3. Đăng ký và xử lý sự kiện Button “Thêm” - Thêm một item mới vào List_Thucdon:

List_Thucdon.Items.Add(txt_Mon.Text);

- Sau khi thêm xong thì clear txt_Montxt_Mon.Text = "";

4. Đăng ký và xử lý sự kiện cho Button - Thêm một item được chọn trong List_Thucdon vào List_Chon

ListBo

List_Thucdon List_Chon

Hướng dẫn thực hành Nhập môn CNPM

List_Chon.Items.Add(List_Thucdon.SelectedItem);

- Tuy nhiên, sẽ xảy ra trường hợp một item được add nhiều lần. Vì vậy, phải kiểm tra xem trong List_Chon đã tồn tại item đó hay chưa?

5. Tương tự, đăng ký và xử lý sự kiện cho Button - Sử dụng vòng lặp để duyệt tất cả các item trong ListBox- ???

6. Đăng ký và xử lý sự kiện cho Button - Xóa một item ra khỏi ListBox

List_Chon.Items.Remove(List_Chon.SelectedItem);

Hoặc:List_Chon.Items.RemoveAt(List_Chon.SelectedIndex);

- Xóa tất cả các item trong ListBoxList_Chon.Items.Clear();

VI. Bài tập 1: Hoàn thiện chương trình trên- Cho phép chọn nhiều item- Cho phép bỏ chọn nhiều item- Xử lý các trường hợp đặc biệt- …

VII. Bài tập 2: Tìm hiểu và ứng dụng một số control thông dụng1. ComboBox2. DateTimePicker (Hộp thoại chọn ngày tháng năm)3. ColorDialog (Hộp thoại chọn màu)4. FolderBrowserDialog (Hộp thoại chọn thư mục)5. OpenFileDialog (Hộp thoại mở file)6. SaveFileDialog (Hộp thoại save file)7. FontDialog (Hộp thoại chọn Font)8. …

Hướng dẫn thực hành Nhập môn CNPM

Bài 3: Chủ đề ADO.NET Các thao tác kết nối ADO.NET sử dụng cấu trúc dòng lệnh với namespace

System.Data.

Mục đích

Làm quen với các đối tượng trong ADO.NET (OleDbConnection, OleDbCommand, OleDbDataReader, OleDbDataAdapter, DataSet), sử dụng chúng để thực hiện các thao tác trên cơ sở dữ liệu.

Yêu cầu bài tập

Xây dựng ứng dụng cho phép:

- Nhập thông tin học sinh (Mã học sinh, Họ tên, Giới tính, Ngày sinh, Địa chỉ, Điểm trung bình, Lớp)

- Lưu trữ thông tin của học sinh vào bộ nhớ phụ (dùng cơ sở dữ liệu Access)

1. Thiết kế CSDL

a. Mở ứng dụng Microsoft Access

b. Tạo cơ sở dữ liệu

Từ menu File chọn New… Sau đó chọn Blank database… Nhập tên database “QLHOCSINH” sau đó chọn Create

Hướng dẫn thực hành Nhập môn CNPM

Tạo bảng HOCSINH để lưu trữ thông tin học sinh

Sau khi chọn hiển thị form cho phép thiết kế bảng như sau:

Cấu trúc bảng HOCSINH tạo như hình trên như sau:

HOCSINH

Chọn

Hướng dẫn thực hành Nhập môn CNPM

STT Tên trường Kiểu dữ liệu Ghi chú1 MaHS Text(20) Khóa chính2 HoTen Text(50)3 GioiTinh Text(10)4 NgaySinh Date/Time Short Date5 DiaChi Text(255)6 DTB Number Single7 Lop Text(20)

Cách đặt khóa chính cho bảng

2. Thiết kế giao diện chương trình

Tạo project Window Application mới với tên project là QLHS

Thiết kế Form “Nhập thông tin học sinh” như màn hình sau:

Hướng dẫn thực hành Nhập môn CNPM

3. Thực hiện cài đặt

Để thao tác trên cơ sở dữ liệu sử dụng ADO.NET ta cần có các đối tượng sau:

- Connection để kết nối với cơ sở dữ liệu, gồm OleDbConnection và SqlConnection.

- Command để thực thi các câu lệnh truy vấn, thực thi các store procedure... bao gồm OleDbCommand và SqlCommand

- DataAdapter thực hiện ánh xạ dữ liệu vào DataSet thông qua connection đã có bao gồm OleDbDataAdapter và SqlDataAdapter.

- DataSet chứa dữ liệu thu được hoặc xử lý lấy từ cơ sở dữ liệu. DataSet là tập hợp gồm các thành phần DataTable (tương ứng với từng View trong cơ sở dữ liệu), DataColumn (tương ứng với Field trong CSDL) và DataRow (tương ứng với record trong CSDL).

Để kết nối với CSDL Access, chúng ta sử dụng OleDb. Vì vậy, chúng ta cần khai báo sử dụng namespace như sau:

Khai báo các biến đối tượng (phạm vi toàn cục) để xử lý các thao tác với CSDL như sau:

a. Xử lý sự kiện form load:

Khi form được load (xử lý sự kiện Form_Load) thì thực hiện các thao tác sau:

Hướng dẫn thực hành Nhập môn CNPM

- Kết nối đến CSDL Access

- Đưa danh sách lớp vào Combobox

b. Xử lý sự kiện button Lưu:

Sau khi nhập thông tin học sinh, người dùng nhấn vào button , thực hiện kiểm tra dữ liệu nhập, nếu hợp lệ thì lưu vào table HOCSINH

Để thêm mới một học sinh vào table HOCSINH thực hiện câu truy vấn: INSERT INTO HOCSINH VALUES (<Các giá trị tương ứng với các cột trong bảng HOCSINH>)

Hướng dẫn thực hành Nhập môn CNPM

c. Xử lý sự kiện button Xóa:

Khi người dùng chọn chức năng thực hiện xóa giá trị trên các control để cho phép nhập học sinh mới.

4. Bài tập:

- Kiểm tra ràng buộc dữ liệu hợp lệ trước khi lưu thông tin học sinh

o Mã học sinh, tên học sinh không được null

o Điểm trung bình là một số thực từ 0 10

o Chỉ tiếp nhận các học sinh có độ tuổi từ 15 20

Hướng dẫn thực hành Nhập môn CNPM

- Thực hiện chức năng khi người dùng nhập mã học sinh đã có trong CSDL, chương trình sẽ hiển thị thông tin học sinh cho phép người dùng chỉnh sửa thông tin và lưu lại thông tin học sinh đã được sửa (thực hiện UPDATE).

- Tìm hiểu control ListView để hiển thị danh sách học sinh đã lưu trữ trong CSDL

Hướng dẫn thực hành Nhập môn CNPM

HƯỚNG DẪN THỰC HÀNH TUẦN 4Chủ đề: ADO.NET (tt)

Các thao tác kết nối ADO.NET sử dụng cấu trúc dòng lệnh vớinamespace System.Data (tt).

VIII. Thiết kế CSDL:Sử dụng lại CSDL của tuần trước (QLHOCSINH.mdb)

IX. Tạo ứng dụng WinForm:Trong tuần trước chúng ta đã làm quen với việc thao tác kết nối ADO.NET sử dụng cấu trúc dòng lệnh với namespace System.Data.Phần này chúng ta phát triển tiếp ứng dụng trong tuần trước để nâng cao chất lượng của chương trình:

- Tính tiện dụng- Tính hiệu quả- Tính thân thiện- …

Thiết kế lại Form “Nhập thông tin học sinh” như màn hình sau:

Hướng dẫn thực hành Nhập môn CNPM

Kết quả màn hình khi chạy:

- ListView có 5 cách hiển thị dữ liệu khác nhau, để hiển thị dữ liệu theo dạng lưới như trên chúng ta phải chọn thuộc tính View là Details

- Thiết lập column cho ListView

Hướng dẫn thực hành Nhập môn CNPM

Cài đặt các hàm để load danh sách học sinh vào ListView- Ta cài đặt hàm Doc_DanhSach_HocSinh() để lấy thông tin học sinh trong bảng HOC_SINH

từ CSDL như sau:

- Tiếp theo ta cài đặt hàm Load_Danhsach_Hocsinh_ListView để load thông tin học sinh (đã đọc được từ hàm Doc_DanhSach_HocSinh()) vào listview như sau:

Hướng dẫn thực hành Nhập môn CNPM

- Như vậy, trong sự kiện Form_Load được cài đặt như:

Đã hướng dẫn trong tuần 3

Hướng dẫn thực hành Nhập môn CNPM

Bài tập:1. Tìm hiểu một số sự kiện phát sinh trên control ListView

2. Khi người dùng chọn một row (chọn 1 học sinh) trên ListView hiển thị thông tin học sinh vừa chọn lên các control trên form để chỉnh sửa và cập nhật thông tin.

Hướng dẫn:

- Xử lý sự kiện SelectedIndexChanged

3. Khi thực hiện lưu thông tin học sinh, cần phải kiểm tra xem học sinh cần lưu đã có trong table HOCSINh chưa?

- Nếu chưa có thì thực hiện INSERT INTO- Nếu tồn tại rồi thì thực hiện UPDATE

4. Xử lý sự kiện : Clear dữ liệu trên các control để sẵng sàn cho việc nhập thông tin học sinh mới.

5. Xử lý sự kiện : Thực hiện xóa thông tin của học sinh đã lưu trong table HOCSINH khi biết mã học sinh.

Hướng dẫn:

- Tương tự khi thêm mới học sinh

- Thực hiện xóa thông tin của một học sinh thì cần phải biết mã của học sinh cần xóa:

Delete From HOCSINH Where MaHS=’???’

Hướng dẫn thực hành Nhập môn CNPM

6. Chúng ta thấy, để chương trình chạy được (kết nối được CSDL) phải chép file QLHOCSINH.mdb vào đúng vị trí đường dẫn đã được chỉ ra trong phần kết nối Điều này dẫn đến không tiện dụng cho người dùng Suy nghĩ và cho giải pháp để giải quyết vấn đề đã nêu.

Hướng dẫn thực hành Nhập môn CNPM

HƯỚNG DẪN THỰC HÀNH TUẦN 5(Hướng dẫn bài tập tuần 4)

X. Cơ sở dữ liệu:Sử dụng lại CSDL của tuần trước (QLHOCSINH.mdb)

XI. Xây dựng chương trình:Trong tuần trước chúng ta đã xây dựng ứng dụng thao tác

kết nối với CSDL Access (sử dụng công nghệ ADO.NET).Tuy nhiên, để chương trình chạy được (kết nối được với

CSDL QLHOCSINH.mdb), người dùng phải chép CSDL QLHOCSINH.mdb vào đúng vị trí đường dẫn đã chỉ ra trong chương trình. Như vậy người dùng gặp phải một số khó khăn:

- Trên máy tính khác không tồn tại ổ đĩa và đường dẫn như đã chỉ ra trong chương trình?

- Người dùng muốn quản lý CSDL tại một thư mục khác?

Để giải quyết khó khăn trên, chương trình hỗ trợ cho phép người dùng chỉ ra vị trí lưu trữ CSDL QLHOCSINH.mdb trước khi thao tác với ứng dụng. Sử dụng lại chương trình đã xây dựng trong tuần trước Thêm một Form mới cho phép người dùng chỉ ra đường

dẫn lưu trữ CSDL Sau khi đã chỉ ra đường dẫn, chương trình sẽ lấy thông tin

đường dẫn để chuyển đến cho chuỗi kết nối.

Hướng dẫn thực hành Nhập môn CNPM

Hướng dẫn thực hành Nhập môn CNPM

a. Add thêm một Form mới vào project

Form mới add có tên mặc định là Form2

b. Thiết kế giao diện cho Form mới như sau:

Hướng dẫn thực hành Nhập môn CNPM

Khi ứng dụng chạy, Form2 (form chọn đường dẫn) phải được chạy trước tiên?Ta thấy, Form1 (form nhập thông tin học sinh) được tạo tạo ngay từ đầu, do đó Form1 mặc định được chạy đầu tiên. Để Form2 chạy trước, Trong class Program.cs sửa lại như sau:

Hướng dẫn thực hành Nhập môn CNPM

- Trong class Form2.cs khai báo biến sDuongDan như sau:

public static string sDuongDan = "";

Biến sDuongDan được khai báo là public static vì các lý do sau:

Form1 có thể hiểu được biến này

Form1 có thể gọi trực tiếp biến này không cần thông qua đối tượng

- Xử lý sự kiện khi người dùng chọn vào button

Hướng dẫn thực hành Nhập môn CNPM

- Xử lý sự kiện khi người dùng chọn vào button

Hướng dẫn thực hành Nhập môn CNPM

- Như vậy, trong Form1 (form nhập thông tin học sinh) chúng ta cần phải chỉnh sửa lại như sau:

Trong sự kiện form load (Form1_Load) thay dòng lệnh

Bằng dòng lệnh sau:

Ta thấy trong sự kiện button “Thoat”, tuần trước chúng ta cài đặt như sau:

Tuy nhiên, dòng lệnh this.Close() chỉ có hiệu lực trên form hiện hành (nghĩa là chỉ thoát form nhập thông tin học sinh).

Trong ứng dụng chúng ta bây giờ có đến 2 form, Form2 (form chọn đường dẫn CSDl) đang ẩn vẫn chưa thoát chương trình vẫn đang chạy.

Để thoát ứng dụng (thoát chương trình) ta cài đặt lại như sau:

XII. Bài tập:Giả sử chương trình cần phải quản lý danh sách các học sinh theo từng lớp, để nâng cao chất lượng của chương trình, tránh

Hướng dẫn thực hành Nhập môn CNPM

trùng lắp thông tin trên trường LOP. Chúng ta cần phải tạo một table LOP. Yêu cầu:

1. Tạo bảng LOP2. Thiết kế và cài đặt form nhập danh mục lớp học3. Thiết kế và cài đặt ứng dụng nhiều form (multi form)

Hướng dẫn thực hành Nhập môn CNPM

HƯỚNG DẪN THỰC HÀNH TUẦN 6Xây dựng ứng dụng nhiều Form

XIII. Mục đích:Trong bài thực hành này, các bạn sẽ làm quen

với cách xây dựng một ứng dụng gồm có nhiều form tương tác với CSDL Access thông qua việc sử dụng công nghệ ADO.NET

XIV. Yêu cầuĐã nắm được các khái niệm cơ bản về xây

dựng ứng dụng Windows bằng VB hoặc C#Sử dụng được hệ quản trị CSDL Access

XV. Bài tậpTrong các tuần trước chúng ta đã xây dựng

các ứng dụng thao tác kết nối với CSDL Access (sử dụng công nghệ ADO.NET).

Trong tuần này, các bạn xây dựng ứng dụng multi Forms sử dụng lại các form đã xây

Hướng dẫn thực hành Nhập môn CNPM

dựng trong các tuần trước để tiếp tục cho bài tập sau

c.Thiết kế form theo mẫu dưới đây: Giao diện dưới đây sử dụng một số control sau:

a.MenuStrip

b. ListView

c.TreeView

d. ImageList

- Menu hệ thống, gồm các chức năng sau:tvChucnang:

TreeViewlvChucnang:

ListView

Hướng dẫn thực hành Nhập môn CNPM

- Menu Hồ sơ, gồm các chức năng:

- Menu trợ giúp

d. Thiết kế menu:Thông qua cửa sổ Properties đặt thuộc tính Text và Name cho từng menu item

e.Thiết kế TreeView:Mỗi phần tử trên TreeView được gọi là một node

Hướng dẫn thực hành Nhập môn CNPM

Thông qua cửa sổ TreeNode Editor để thiết lập các nodes cho tvChucnang

f. Thiết kế ListViewThông qua cửa sổ Properties thiết lập các thuộc tính cho ListView như hình sau:

Hướng dẫn Thực hành môn Nhập môn CNPM

Hướng dẫn Thực hành môn Nhập môn CNPM

g. Xử lý sự kiện khi người dùng chọn một node trên TreeView tvChucnang

Khi người dùng chọn một node trên TreeView tvChucnang, chương trình add các chức năng tương ứng vào ListView lvChucnang

Hướng dẫn Thực hành môn Nhập môn CNPM

h. Xử lý sự kiện khi người dùng double click một item trên ListView lvChucnang

i. Dựa trên những vấn đề đã được hướng dẫn, Sinh viên tiếp tục phát triển và hoàn thiện chương trình Quản lý học sinh.

Hướng dẫn Thực hành môn Nhập môn CNPM

HƯỚNG DẪN THỰC HÀNH TUẦN 7Xử lý trên Form Tìm kiếm

XVI. Mục đích:

Trong bài thực hành này, các bạn sẽ làm quen với cách xử lý các form tìm kiếm thông tin, tra cứu và hiển thị kết quả tìm kiếm.

XVII. Yêu cầu

Đã nắm được các khái niệm cơ bản về xây dựng ứng dụng Windows VB hoặc C#

Sử dụng được hệ quản trị CSDL Access hoặc SQL Server

XVIII. Bài tập

Trong các tuần trước chúng ta đã xây dựng các ứng dụng thao tác kết nối với CSDL Access (sử dụng công nghệ ADO.NET).

Trong tuần này, các bạn sử dụng lại ứng dụng quản lý học sinh đã làm trong các tuần trước, phát triển tiếp ứng dụng và xây dựng Form tra cứu (tìm kiếm) thông tin học sinh.

j. Thiết kế form “Tra cứu thông tin học sinh” theo mẫu dưới đây:

Hỗ trợ tìm kiếm thông tin học sinh theo lớp học.

a. Sử dụng control DataGridView để hiển thị thông tin học sinh

Hướng dẫn Thực hành môn Nhập môn CNPM

k. Yêu cầu xử lý

Khi chương trình thực thi:

a. Đọc tất cả các lớp học hiện có và load vào ComboBox cboLop

Khi người dùng click vào Button “Tìm kiếm”:

b. Đọc danh sách học sinh của lớp học được chọn trên ComboBox cboLop và hiển thị vào DataGridView dgHocSinh.

l. Xử lý sự kiện Form Load

Hàm Doc_DanhSach_Lop(): Đọc các lớp học trong bảng HOCSINH

Hướng dẫn Thực hành môn Nhập môn CNPM

m. Xử lý sự kiện khi người dùng click button “Tìm kiếm”.

Đọc danh sách học sinh từ table HOCSINH tương ứng lớp học đã được chọn và gán vào DataSource của DataGridView dgHocSinh

Hàm Doc_DanhSach_HocSinh_Theo_Lop(…)

Hướng dẫn Thực hành môn Nhập môn CNPM

XIX. Bài tập mở rộng

Cho phép tìm kiếm thông tin học sinh theo mã số, họ tên, giới tính, lớp,… Ví dụ:

1. Tìm những học sinh nam/nữ thuộc Lớp 10A1

2. Tìm các học sinh có họ Nguyễn thuộc Lớp 10A2

3. …

Hướng dẫn

Thiết kế lại giao diện

Cần phải sũy nghĩ câu truy vấn dữ liệu như thế nào để cho phép tìm kiếm tổ hợp giữa các thuộc tính Mã học sinh, Họ tên, Giới tính, Lớp?

4. Khi cần tìm kiếm thông tin học sinh theo mã học sinh thì câu truy vấn như sau:

Tìm kiếm chính xác:

Select * From HOCSINH Where MaHS=’…’

Tìm kiếm gần đúng

Select * From HOCSINH Where MaHS like’*…*’

Hướng dẫn Thực hành môn Nhập môn CNPM

Trong đó ‘*’ là ký tự đại diện (Access), nếu trong SQL thì ký tự đại diện là %

5. Khi cần tìm thông tin học sinh dựa trên lớp và họ (giả sử cần tìm các học sinh trong lớp 10A1 có họ là ‘Nguyễn’)

Select * From HOCSINH Where Lop=’10A1’ and HoTen like ‘Nguyễn*’

6. Như vậy một cách tổng quát thì cần phải hình thành câu truy vấn như thế nào?

Hướng dẫn Thực hành môn Nhập môn CNPM

HƯỚNG DẪN THỰC HÀNH TUẦN 8(Crystal Report – Tạo báo cáo)

XX. Thiết kế lại CSDL gồm hai table như sau

HOCSINH

STT Tên trường Kiểu dữ liệu Ghi chú

1 MaHS Text(10) PrimaryKey

2 TenHS Text(255)

3 NgaySinh Date/Time

4 DiaChi Text(255)

5 DTB Number

6 MaLop Text(10) ForeignKey (tham chiếu đến

Lop(MaLop)

LOP

STT Tên trường Kiểu dữ liệu Ghi chú

1 MaLop Text(10) PrimaryKey

2 TenLop Text(255)

3 SiSo Number

XXI. Tạo project QLHSReport1. Tạo mới 1 reportTừ project chọn add new item

Hướng dẫn Thực hành môn Nhập môn CNPM

Sau đó chọn Crystal report

Hướng dẫn Thực hành môn Nhập môn CNPM

Chọn “Using the Report Wizard” (Tạo report bằng Wizard)Chọn “OK”, sau đó chọn Create New Connection để tạo kết nối mới đến CSDL

Hướng dẫn Thực hành môn Nhập môn CNPM

Hướng dẫn Thực hành môn Nhập môn CNPM

Chọn FinishSau đó chọn bảng dữ liệu “HOCSINH” và bảng “LOP”

Chọn CSDL cần kết nối để truy cập dữ liệu

Hướng dẫn Thực hành môn Nhập môn CNPM

Hướng dẫn Thực hành môn Nhập môn CNPM

Chọn các field để hiển thị

Chọn group by theo lớp

Hướng dẫn Thực hành môn Nhập môn CNPM

Trong bước này cho phép chọn field tính tổng (nếu cần)

Hướng dẫn Thực hành môn Nhập môn CNPM

Chọn Field Filter nếu cần

Chọn style report

Hướng dẫn Thực hành môn Nhập môn CNPM

2. Chạy và hiển thị report:Add một Form mới có tên frmBaocao, trên form tạo một CystalreportViewer

Hướng dẫn Thực hành môn Nhập môn CNPM

Khi chúng ta kéo thả CystalreportViewer vào form thì sẽ phát sinh đối tượng CystalreportViewer1 với phạm vi khai báo là private

Để form khác có thể hiểu được đối tượng CrystalreportViewer1 thì phải khai báo với phạm vi là public

Hướng dẫn Thực hành môn Nhập môn CNPM

3. Gọi hiển thị Report:

Hướng dẫn Thực hành môn Nhập môn CNPM

Xử lý sự kiện khi người dùng chọn in danh sách học sinh

4. Các khái niệm cơ bản của report

Các section của reportMột report bao gồm 5 phần chính:

- Report header: phần thông tin đầu tiên của report. Một báo cáo report thường sẽ gồm nhiều trang, report header chính là phần xuất hiện chỉ một lần ở trang đầu tiên của toàn report. Ví dụ như báo cáo có tiêu đề “Báo cáo thu chi tháng 12 năm 2001” thì tiêu đề sẽ được đặt trong phần report header.

- Page header: phần hiển thị thông tin xuất hiện ở đầu mỗi trang của report. Ví dụ như một báo cáo dạng bảng có nhiều cột như: STT, Tên, Địa chỉ, SĐT… thì đầu mỗi trang cần lặp lại những tiêu đề cột để người đọc nhận biết dễ dàng ý nghĩa mỗi cột. Khi đó các tiêu đề cột được đặt vào phần page header.

Hướng dẫn Thực hành môn Nhập môn CNPM

- Details: phần hiển thị thông tin chi tiết của report. Một report thường bao gồm nhiều mục với vai trò như nhau tương ứng với các record của database mà report sử dụng. Phần details sẽ liệt kê những record đó. Ví dụ báo cáo thu chi thì các mục thu chi sẽ được liệt kê trong phần details.

- Report footer: phần hiển thị thông tin xuất hiện chỉ một lần ở cuối report. Ví dụ thông tin như người lập báo cáo là ai, tại đâu, hôm nào sẽ được đặt ở report footer.

- Page footer: phần thông tin xuất hiện cuối mỗi trang. Ví dụ số trang được đặt ở page footer.

Field Explorer

Khi chọn xong các đối tượng database cho vào report, Crystal sẽ hiện ra cửa sổ Field Explorer. Nếu không thấy cửa số Field Explorer, ta click vào button "Field View" trên thanh toolbar (hoặc chọn View \ Other Windows\ Document Outline trên menu)

Trong cửa sổ sẽ bao gồm rất nhiều nhóm các trường:- Database fields: tất cả các trường dữ liệu của các đối tượng database. Thông

thường các trường trong mục này sẽ được hiển thị trong phần detail của report.- Formula fields: các trường tính toán ta định ra. Ví dụ khi làm một report báo

cáo hóa đơn bán hàng, giả sử database chỉ lưu trữ giá và số lượng của mặt hàng mua trong hóa đơn mà không lưu trữ thành tiền, khi đó ta có thể tạo một Formula field thành tiền được tính bằng công thức:

Hướng dẫn Thực hành môn Nhập môn CNPM

Thành tiền = Giá * Số lượng. Khi đó ta có thể tạo report với cột thành tiền(mặc dù không được lưu trong database).

- Parameter fields: các trường tham số cho report. Ví dụ từ VB, ta gọi report và truyền vào tên người báo cáo thì tên sẽ được hiển thị ở report footer. Để làm được điều này ta tạo một paramter field trong Crystal và khi gọi report từ VB hoặc Delphi thì truyền vào. Lưu ý, khi chạy report trong Crystal, những trường param sẽ được hỏi giá trị, ta cần nhập vào ngay trong Crystal để hiển thị tạm thời.

- Special fields: các trường đặt biệt có sẵn của Crystal như số trang, trang thứ mấy, ngày hiện tại… Thông thường những trường này sẽ được hiển thị trong những phần header, footer.

Các thao tác cơ bản- Hiển thị các trường dữ liệu lên report:

Để hiển thị trường dữ liệu, drag một trường dữ liệu từ Field Explorer xuống vùng tương ứng của report. Ví dụ : drag một trường từ database field xuống phần details của report rồi view, sẽ thấy dữ liệu của report được liệt kê ra.

- View nội dung của reportNhấn nút (Refresh – F5) trên toolbar, nội dung report sẽ hiển thị bên tab preview. Từ đây trở đi, ta có thể chuyển qua lại giữa tab design và tab preview.

- Các format Suppress và Suppress If Duplicated

- Suppress : Hiển thị đối tượng hay không.- Suppress If Duplicated : Không hiển thị đối tượng khi có sự trùng

lặp Tips

- Muốn điều chỉnh độ dịch chuyển các control trong report cho tinh thì nhấp phím phải lên vùng chính của report, bỏ option “Snap to grid” đi.- Đối với Formula Field: Khi tính toán thì những field nào có tham gia vào phép toán thì field đó trước hết phải được Insert vào Report.

- Group Dùng group để gom nhóm report thành từng phần. VD: Xuất các đơn đặt hàng ta thường có nhu cầu gom nhóm thành từng đơn đặt hàng (bao gồm các chi tiết) như sau:

Đơn đặt hàng 1a. Chi tiết 1b. Chi tiết 2

Đơn đặt hàng 2a. Chi tiết 1b. Chi tiết 2

Hướng dẫn Thực hành môn Nhập môn CNPM

c. Chi tiết 31. Chèn thêm group- Chọn nút có hình trên toolbar phía dưới hoặc menu Insert \ Group để insert một group mới. (group by)- “Insert group” dialog hiện ra, cần chọn tên trường để group và thứ tự sort. - Sau khi chọn OK, report sẽ bổ sung một group mới vào gồm có group header và group footer và có sẵn một textbox hiển thị trường group trên group header.

2. Sửa đổi group- Chọn menu Report \ Change Group Expert để sửa đổi các group như thứ tự lồng nhau của các group, trường cần group của các group.

3. Delete group- Click phím phải vào Group header hoặc Group footer ở lề trái cùng của cửa sổ design và chọn Delete group.- Trang trí

Dùng Insert\Line để tạo đường kẻ dọc hoặc ngangDùng Insert\Picture để chèn hình. VD như logo của công ty

XXII. Bài tập:

- Trên cở sở những kiến thức được cung cấp trong bài thực hành trên, sinh

viên tìm hiểu thêm về Crystal report để có thể tạo những báo cáo phức tạp

Hướng dẫn Thực hành môn Nhập môn CNPM

HƯỚNG DẪN THỰC HÀNH TUẦN 9Chủ đề: Gọi thực thi Stored Procedure

XXIII. Mục đích

1. Kết nối và thực hiện các thao tác trên CSDL SQL Server.

2. Biết cách tham số hóa cho câu lệnh SQL.

3. Hiểu và vận dụng được cách thực thi các câu lệnh SQL thông qua Stored Procedure.

a. Stored Procedure không có kết quả trả về (parameter input)

b. Stored Procedure có kết quả trả về (parameter output)

XXIV. Cơ sở dữ liệu

1. Tạo CSDL SQL Server mới, tên CSDL là QLHocSinh. Tạo và thiết kế database mới gồm hai bảng như sau:

HOCSINH

STT Tên trường Kiểu dữ liệu Ghi chú

1 MaHS Varchar(10) PrimaryKey

2 TenHS Nvarchar(50)

3 NgaySinh Date/Time

4 DiaChi Nvarchar(250)

5 DTB Real/float

6 MaLop Varchar(10) ForeignKey (tham chiếu đến

Lop(MaLop)

LOP

STT Tên trường Kiểu dữ liệu Ghi chú

1 MaLop Varchar(10) PrimaryKey

2 TenLop Nvarchar(100)

3 SiSo int

2. Hoặc import CSDL từ Access đã được tạo trong tuần trước (CSDL QLHOCSINH.mdb).

3. Hướng dẫn cách import CSDL Access vào CSDL SQL Server:

Hướng dẫn Thực hành môn Nhập môn CNPM

a. Trước hết ta tạo một Database mới với tên QLHocSinh

b. Từ Database QLHocSinh chọn Import Data…

c. Chọn Next, Sau đó chọn dữ liệu nguồn (dữ liệu nguồn ở đây là Access)

Hướng dẫn Thực hành môn Nhập môn CNPM

d. Chọn Next, Chọn đích import (đã được mặc định là SQL Server)

e. Chọn Next

Hướng dẫn Thực hành môn Nhập môn CNPM

f. Chọn Next

g. Chọn các table muốn import vào CSDL SQL Server. Sau đó chọn Next.

XXV. Sử dụng lại ứng dụng trong tuần trước hoặc tạo ứng dụng mới:

1. Để kết nối với CSDL SQL Server, ta phải khai báo namespace như sau:

using System.Data.SqlClient;

2. Khai báo các đối tượng sau để thực hiện các thao tác với CSDL SQL Server:

SqlConnection connection;SqlDataAdapter adapter;SqlCommand command = new SqlCommand();

3. Chuỗi kết nối với CSDL SQL Server, gồm bốn thông tin: tên server, tên databse, userid và password.

"server=dungta; database=QLHocSinh; user id=sa; password=";

XXVI. Áp dụng kỹ thuật tham số hóa cho câu lệnh SQL

1. Thực hiện thêm mới thông tin một học sinh

1. Trước đây, chúng ta thiết lập câu lệnh insert như sau:

string sql = "INSERT INTO HOCSINH VALUES('"txtMaHS.Text.Trim() + "', '" + txtTenHS.Text.Trim() + "', '" + dtNgaySinh.Value.ToString() + "', '"

Hướng dẫn Thực hành môn Nhập môn CNPM

+ txtDiaChi.Text.Trim() + "', " + txtDiemTB.Text.Trim() + ", '" + cboLop.SelectedValue + "')";

command = new SqlCommand(sql, connection);command.ExecuteNonQuery();

2. Để tham số hóa các tham số cho câu lệnh SQL ta thực hiện các bước sau:

a. Tham số hóa câu lệnh: @[tên tham số]

b. Tạo các parameters tương ứng cho command.

c. Đặt giá trị cho các parameter mỗi khi dùng command thực hiện câu lệnh.

3. Như vậy, chúng ta có thể thay thế đoạn code trên bằng đoạn code như sau:

string sql="INSERT INTO HOCSINH VALUES(@Ma,@Ten,@Ns,@Dc,@Diem,@Lop)";command.Connection = connection;command.CommandText = sql;command.Parameters.AddWithValue("@Ma", txtMaHS.Text.Trim());command.Parameters.AddWithValue("@Ten", txtTenHS.Text.Trim());command.Parameters.AddWithValue("@Ns", dtNgaySinh.Value);command.Parameters.AddWithValue("@Dc", txtDiaChi.Text.Trim());command.Parameters.AddWithValue("@Diem", txtDiemTB.Text.Trim());command.Parameters.AddWithValue("@Lop", cboLop.SelectedValue.ToString());command.ExecuteNonQuery();

2. Sửa thông tin của một học sinh.

string sql = "UPDATE HOCSINH SET TenHS=@Ten, NgaySinh=@Ns," + "DiaChi=@Dc, DTB=@Diem, MaLop=@Lop Where MaHS=@Ma";command.Connection = connection;command.CommandText = sql;command.Parameters.AddWithValue("@Ma",txtMaHS.Text.Trim());command.Parameters.AddWithValue("@Ten",txtTenHS.Text.Trim());command.Parameters.AddWithValue("@Ns",dtNgaySinh.Value);command.Parameters.AddWithValue("@Dc",txtDiaChi.Text.Trim());command.Parameters.AddWithValue("@Diem",txtDiemTB.Text.Trim());command.Parameters.AddWithValue("@Lop",cboLop.SelectedValue.ToString());command.ExecuteNonQuery();

XXVII. Thực thi thông qua các Stored procedure

1. Cách tạo Stored Procedure

1. Tạo mới Stored Procedure, chọn New Stored Procedure…

Hướng dẫn Thực hành môn Nhập môn CNPM

2. Tạo Stored Procedure thêm mới thông tin một học sinh như sau:

Các tham số input

Kiểm tra học sinh cần thêm tồn tại chưa?

Hướng dẫn Thực hành môn Nhập môn CNPM

2. Gọi thực thi Stored Procedure sp_InsertHocSinh thông qua chương trình:

1. Để thêm mới thông tin một học sinh, chúng ta gọi thực thi Stored Procedure sp_InsertHocSinh như sau:

2. Sau khi thực thi, Stored Procedure sẽ trả về kết quả thông qua tham số out (kết quả trả về trong trường hợp này là chuỗi thông báo lỗi, nếu không có lỗi trả về chuỗi rỗng).

3. Ví dụ khi chúng ta nhập vào một học sinh mới có mã trùng với một học sinh đã được lưu trong cơ sở dữ liệu, khi thực hiện insert thì chương trình sẽ thông báo

lỗi:

4. Vậy chúng ta cần phải kiểm tra kết quả trả về và thông báo cho người dùng biết

XXVIII. Bài tập:

1. Sinh viên tìm hiểu và cài đặt các chức năng còn lại của chương trình.

2. Lưu ý: Khi thêm mới một học sinh, giá trị ngày tháng được hệ thống hiểu mặt định là mm/dd/yyyy (nếu nhập theo định dạng dd/mm/yyyy, ví dụ: 25/10/1980 thì chương trình sẽ lỗi do không có tháng 25???). Sinh viên tìm hiểu và xử lý cho vấn đề trên. Gợi ý: Trong Stored Procedure dùng hàm Convert để xử lý.

Hướng dẫn Thực hành môn Nhập môn CNPM