Hdth08 ltudql02-linq
Transcript of Hdth08 ltudql02-linq
LT Ứng Dụng Quản Lý 2
Contents
1. Đề bài ............................................................................................................................................ 2
2. Hướng dẫn .................................................................................................................................... 2
2.1. Tạo CSDL.............................................................................................................................. 2
2.2. Thiết kế màn hình ................................................................................................................ 7
2.3. Tạo file LINQ........................................................................................................................ 8
2.4. Chức năng 1 – Xem danh sách đơn giản ............................................................................ 9
2.5. Chức năng 2 – Tra cứu nhân viên theo đơn vị ................................................................ 11
2.6. Chức năng 3 – Lập báo cáo thống kê ............................................................................... 13
2.7. Chức năng 4 – Bổ sung đơn vị mới ................................................................................... 14
3. Bổ sung........................................................................................................................................ 15
LT Ứng Dụng Quản Lý 2
1. Đề bài
Bài tập 01, file bài giảng HDTH_ADO.NET.zip về ADO.NET và 3 layers của thầy
Bùi Tấn Lộc (trong thư mục SourceCode trên moodle)
2. Hướng dẫn
2.1. Tạo CSDL
- Tạo CSDL bằng Microsoft SQL Server, phiên bản 2005.
- Cách tạo: tham khảo các môn học liên quan đến CSDL.
- Ở đây (tại phòng thực hành), để thuận tiện, chúng ta sẽ tạo CSDL dạng file
QuanLyNhanVien.mdf
2.1.1. Khởi động server
(Bước này có thể không cần làm nếu service đã khởi động)
Trước tiên vào Start – Program – Administrative Tools – Services.
Tìm đến service có tên là SQLEXPRESS. Click phải, chọn Properties.
Chọn tab Log On. Chọn vào phần Local System account. Chọn tiếp
Apply/OK
Sau đó click phải vào service SQLEXPRESS và chọn Start. Thao tác này
dùng để khởi động server.
2.1.2. Tạo CSDL
LT Ứng Dụng Quản Lý 2
Qua trở lại việc tạo CSDL QuanLyNhanVien.mdf. Mở Visual Studio (ở đây
là phiên bản 2010), tạo project mới.
Ngôn ngữ: VB.NET.
Dạng: Windows Form Application.
Sau khi tạo Project xong. Chọn Menu Project – Add New Item
Chọn Service – based Database và đặt tên là QuanLyNhanVien.mdf
Màn hình tiếp theo (yêu cầu tạo DataSet), chọn Cancel.
Khi đó bên cửa sổ Solution Explorer ta sẽ có file mới tên là
QuanLyNhanVien.mdf. Nhấp đôi vào file này.
2.1.3. Tạo các bảng
Nhìn qua cửa sổ Server Explorer (thường nằm bên trái) ta thấy như sau.
Click phải vào phần i chọn Add New Table:
LT Ứng Dụng Quản Lý 2
Màn hình ở giữa cho ta nhập thông tin các cột có trong bảng này. Bây giờ,
ta khai báo các cột trong bảng DonVi trước. Lưu ý cột MaDV là kiểu int và
thuộc tính ở bên dưới chọn Is Identity = Yes.
Click phải vào cột MaDV và Set Primary Key.
Thêm một cột TenDV, kiểu là nvarchar(50). Sau đó bấm Ctrl – S để lưu
bảng này với tên là DonVi
Làm tương tự cho bảng NhanVien, với lưu ý cột MaNV có kiểu int, Is
Identity = Yes và là Primary Key. Tất cả các field như sau:
LT Ứng Dụng Quản Lý 2
2.1.4. Tạo quan hệ giữa các bảng
Như vậy, ta vừa tạo xong 2 bảng DonVi và NhanVien. Bây giờ, ta tạo quan
hệ giữa 2 bảng. Click phải vào Database Diagrams, chọn Add New
Diagram.
Chọn Yes. Sau đó chọn 2 bảng và chọn Add/Close
LT Ứng Dụng Quản Lý 2
Rê chuột từ cột MaDV của bảng NhanVien sang cột MaDV của bảng
DonVi.
Chọn đúng tên cột và OK. Ta được kết quả:
Bấm Ctrl – S và đặt tên để lưu Diagram này lại.
Màn hình cảnh báo việc tạo quan hệ có thể ảnh hưởng đến CSDL, hãy chọn
Yes.
2.1.5. Nhập liệu
LT Ứng Dụng Quản Lý 2
Bây giờ ta nhập dữ liệu cho các bảng. Đầu tiên là bảng DonVi. Click phải
vào bảng này và chọn Show Table Data.
Nhập dữ liệu. Lưu ý, ko nhập vào ô MaDV (giá trị ô đó sẽ tự điền)
Tương tự với bảng NhanVien.
Lưu ý: cột NgaySinh (kiểu DateTime), nhập theo định dạng
tháng/ngày/năm và ko cần nhập giờ (giá trị sẽ tự lấy)
2.2. Thiết kế màn hình
Mở lại Form1. Click phải chọn Properties. Sau đó sửa thuộc tính Text của
Form1 là Man hinh chinh
Kéo vào Form1 một MenuStrip và thiết kế menu như sau:
LT Ứng Dụng Quản Lý 2
Lần lượt thêm vào các Form, tương ứng với 4 chức năng trong “Bai tap 1.doc”:
+ frmXemDSDonVi
+ frmTraCuuNVTheoDV
+ frm LapBCTK
+ frm ThemDVMoi
Quay lại Form1, nhấp đôi vào các menu, xử lý sự kiện Click vào từng menu
tương ứng.
Private Sub TraCứuNhânViênTheoĐơnVịToolStripMenuItem_Click(…) Handles TraCứuNhânViênTheoĐơnVịToolStripMenuItem.Click ‘frmYYY là tên form ứng với từng frm cụ thể của từng chức năng Dim frm As New frmYYY frm.ShowDialog() End Sub
2.3. Tạo file LINQ
2.3.1. Hướng dẫn kết nối CSDL tạo từ SQLServer
(Lưu ý, thực hiện bước này nếu ta tự tạo CSDL trên server. Nếu đã tạo
CSDL dạng file mdf như từ nãy giờ thì ko cần thực hiện)
Trong cửa sổ Server Explorer, click phải vào Data connection chọn Add
Connection
Trong Data Source chọn Microsoft SQL Server
Nhập vào ô Server name, chọn tên CSDL và nhấn OK
2.3.2. Tạo file LINQ
Chọn menu Project – Add new item
Chọn loại file là LINQ to SQL Classes và đặt tên file QLNhanVien.dbml
Từ cửa sổ Server Explorer, ta sẽ nhấn shift và chọn 2 bảng NhanVien và
DonVi. Rê chuột, kéo 2 bảng này qua cửa sổ trống ở giữa (cửa sổ
QLNhanVien.dbml) Ta được kết quả như sau:
LT Ứng Dụng Quản Lý 2
Như vậy, 2 bảng trong CSDL là DonVi và NhanVien đã được ánh xạ thành
2 class DonVi và NhanVien trong project đang làm việc.
2.4. Chức năng 1 – Xem danh sách đơn giản
Quay trở lại frmXemDSDonVi, kéo vào đó một DataGridView.
Bấm nút mũi tên ở góc trên, bên phải và chọn Dock in parent container
Hiện tại chưa có cột nào. Click phải vào DataGridView chọn Edit Columns…
Thêm vào đó 3 cột STT, Mã đơn vị và Tên đơn vị. Nhớ check chọn phần
ReadOnly khi tạo cột.
Name Type Header text Visible Readonly
clSTT DataGridViewTextBoxColumn STT X X
clMaDV DataGridViewTextBoxColumn Mã đơn vị X X
LT Ứng Dụng Quản Lý 2
clTenDV DataGridViewTextBoxColumn Tên đơn vị X X
Click phải vào DataGridView, chọn Properties. Sửa lại các thuộc tính:
+ Name = gridViewDSDonVi
+ AllowUserToAddRows = False
+ AllowUserToDeleteRows = False
+ RowHeaderVisible =False
Click phải vào project chọn Add Class. Đặt tên là XLDonVi
Tron class XLDonVi, viết phương thức sau để lấy danh sách đơn vị:
Public Class XLDonVi Public Function LayDSDinVi() As List(Of DonVi) Dim context As QLNhanVienDataContext context = New QLNhanVienDataContext() Return context.DonVis.ToList() End Function Public Sub ThemDonVi(ByVal dv As DonVi) Dim context As QLNhanVienDataContext context = New QLNhanVienDataContext() context.DonVis.InsertOnSubmit(dv) context.SubmitChanges() End Sub End Class
Quay lại frmXemDSDonVi, nhấp đôi vào Form để xử lý sự kiện Load. Sau đó,
viết đoạn code sau trong hàm xử lý sự kiện Load.
Private Sub frmXemDSDonVi_Load(…) Handles MyBase.Load Dim xl As New XLDonVi Dim ds As List(Of DonVi) ds = xl.LayDSDinVi() dgvXemDSDonVi.Rows.Clear() If Not ds Is Nothing Then For i As Integer = 0 To ds.Count - 1 dgvXemDSDonVi.Rows.Add(i + 1, ds(i).MaDV, ds(i).TenDV) dgvXemDSDonVi.Rows(dgvXemDSDonVi.RowCount - 1).Tag = ds(i) Next End If End Sub
Chạy thử ta được:
LT Ứng Dụng Quản Lý 2
2.5. Chức năng 2 – Tra cứu nhân viên theo đơn vị
Thiết kế giao diện cho frmTraCuuNVTheoDV như sau. Sau đó, click phải vào
DataGridView chọn Edit Columns để thêm cột tương ứng với các thông tin của
một NhanVien (nhớ chọn ReadOnly)
LT Ứng Dụng Quản Lý 2
Click phải vào ComboBox, sửa các thuộc tính:
+ Name = cbDSDonVi
+ DropDownStyle = DropDownList
Click phải vào DataGridView sửa các thuộc tính sau:
+ Name = gridViewDSNV
+ AllowUserToAddRows = False
+ AllowUserToDeleteRows = False
+ RowHeaderVisible =False
Đặt tên Button là btnTraCuu.
Xử lý sự kiện Load Form tra cứu:
Private Sub frmTraCuuNVTheoDV_Load(…) Handles MyBase.Load Dim xl As New XLDonVi Dim ds As List(Of DonVi) ds = xl.LayDSDinVi() cbDSDonVi.DataSource = ds cbDSDonVi.DisplayMember = "TenDV" cbDSDonVi.ValueMember = "MaDV" End Sub
Xử lý sự kiện Click nút tra cứu:
LT Ứng Dụng Quản Lý 2
Private Sub btnTraCuu_Click(…) Handles btnTraCuu.Click If cbDSDonVi.SelectedIndex >= 0 Then Dim dv As DonVi dv = cbDSDonVi.Items(cbDSDonVi.SelectedIndex) Dim ds As List(Of NhanVien) ds = dv.NhanViens.ToList() dgvDSNhanVien.Rows.Clear() If Not ds Is Nothing Then For i As Integer = 0 To ds.Count - 1 dgvDSNhanVien.Rows.Add(i + 1, ds(i).MaNV, ds(i).TenNV) dgvDSNhanVien.Rows(dgvDSNhanVien.RowCount - 1).Tag = ds(i) Next End If End If End Sub
Khi chạy, ta có kết quả sau:
2.6. Chức năng 3 – Lập báo cáo thống kê
Kéo vào frmLapBCTK một DataGridView.
+ Dock in parent container.
Thêm vào 2 cột Đơn vị và Số nhân viên.
Sửa thuộc tính của DataGridView:
+ Name = gridViewDSDonVi
+ AllowUserToAddRows = False
+ AllowUserToDeleteRows = False
+ RowHeaderVisible =False
LT Ứng Dụng Quản Lý 2
Xử lý sự kiện Load Form thống kê như sau:
Private Sub frmLapBCTK_Load(…) Handles MyBase.Load Dim xl As New XLDonVi Dim ds As List(Of DonVi) ds = xl.LayDSDinVi() dgvDSDVNV.Rows.Clear() If Not ds Is Nothing Then For i As Integer = 0 To ds.Count - 1 dgvDSDVNV.Rows.Add(ds(i).TenDV, ds(i).NhanViens.Count) Next End If End Sub
Kết quả khi chạy:
2.7. Chức năng 4 – Bổ sung đơn vị mới
Thiết kế giao diện FormThemDVMoi
Đặt tên TextBox = txtTenDV
Đặt tên Button = btnThem
Đặt tên Button = btnThoat
Xử lý sự kiện Click nút Thoát:
LT Ứng Dụng Quản Lý 2
Private Sub Button2_Click(…) Handles btnClose.Click Me.Close() End Sub
Viết hàm kiểm tra dữ liệu nhập vào. Hàm này sẽ trả về chuỗi lỗi. Chuỗi lỗi là
rỗng => dữ liệu nhập vào là hợp lệ:
Public Function KiemTraDuLieu() As String Dim str As String str = "" If txtName.Text.Trim() = "" Then str &= "Chưa nhập tên đơn vị" & vbCrLf End If Return str End Function
Quay lại Form thêm đơn vị, xử lý sự kiện Click nút Thêm như sau:
Private Sub x_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles x.Click Dim str As String str = KiemTraDuLieu() If str = "" Then Dim dv As New DonVi With {.TenDV = txtName.Text.Trim()} 'hoac dung 'dv.TenDV = txtName.Text.Trim() Dim xl As New XLDonVi xl.ThemDonVi(dv) MessageBox.Show("Thêm thành công") Else MessageBox.Show(str) End If End Sub
3. Bổ sung
Làm thêm các chức năng:
+ Xóa, sửa đơn vị
+ Thêm, xóa, sửa nhân viên