Hdth08 ltudql02-linq

562
-1

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
562
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hdth08 ltudql02-linq

  1. 1. LT Ứng Dụng Quản Lý 2Contents1. Đề bài ............................................................................................................................................ 22. 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 ................................................................................... 143. Bổ sung........................................................................................................................................ 15
  2. 2. 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
  3. 3. 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:
  4. 4. 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:
  5. 5. 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
  6. 6. 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
  7. 7. 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:
  8. 8. 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:
  9. 9. 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
  10. 10. 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:
  11. 11. 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)
  12. 12. 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:
  13. 13. 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
  14. 14. 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:
  15. 15. 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

×