1. ANHMATTROI – TIN5A
1
CẬP NHẬT CƠ SỞ DỮ LIỆU TRONG VB.NET
Link tải project ví dụ bên dưới:
http://www.mediafire.com/download/7c9b4vs2lp692jf/QLVP.rar
1. Tạo cơ sử dư liệu
Bạn tạo một project và đặt tên cho project là De4
- Tạo cơ sở dữ liệu:
Cơ sở dữ liệu và form thiết kế theo bài tập sau:
+ Tạo trên visual basic: click chuột phải vào tên project chọn add -> new folder và đặt tên cơ
thư mục là CSDL
2. ANHMATTROI – TIN5A
2
Tiếp theo bạn lại click chuột phải vào thư mực CSDL chọn add -> new item. Chọn SQL
Database trong visual studio 2012 là Service-based Database và đặt tên cho csdl là
QLVP.mdf
4. ANHMATTROI – TIN5A
4
+ Tiếp theo: bạn click chuột phải vào database QLVP.mdf chọn Open hình sau xuất hiện
5. ANHMATTROI – TIN5A
5
Bạn click chuột phải vào Tables chọn Add New Table và khai báo các cột như sau:
xong bạn lưu lại với tên bảng là NhanVien. Bạn lại click tiếp chuột phải vào Tables chọn Add
New Table và khai báo các cột:
rồi lưu lại với tên bảng là VP
+ Chèn dữ liệu vào bảng: bạn click chuột phải vào bảng NhanVien chọn Show Table Data
6. ANHMATTROI – TIN5A
6
Bạn có thể điền dữ liệu cho bảng nhân viên như hình sau: bạn nên điền hết hàng trước
Còn bảng VP bạn làm tượng tự như trên
+ Tạo một lớp KetNoi.vb trong project: bạn click chuột phải vào ten project chọn Add ->
New Folder và đăt tên cho thư mục này là Ket noi
7. ANHMATTROI – TIN5A
7
Tiếp theo bạn click chuột phải vào thư mục Ket noi chọn Add -> New Item và bạn chọn như
trong hình sau:
8. ANHMATTROI – TIN5A
8
+ Nội dung file KetNoi.vb:
Imports System.Data.SqlClient
Imports System.Data
Public Class KetNoi
Private cn As SqlConnection
„ hàm khởi tạo
Public Sub New()
cn = New SqlConnection()
End Sub
Public Function KetNoi() As Boolean
Try
cn.Open()
Return True
Catch ex As Exception
Return False
End Try
End Function
Public Sub NgatKN()
If cn.State = ConnectionState.Open Then
cn.Close()
9. ANHMATTROI – TIN5A
9
End If
End Sub
Public Function TinhTrang() As Boolean
If cn.State = ConnectionState.Open Then
Return True
End If
Return False
End Function
Public Property ChuoiKN() As String
Get
Return cn.ConnectionString
End Get
Set(ByVal value As String)
cn.ConnectionString = value
End Set
End Property
Public Function LayDL(ByVal bang As String) As DataTable
Dim dtb As New DataTable()
Dim adt As SqlDataAdapter
Dim dts As New DataSet()
adt = New SqlDataAdapter("select * from " + bang, cn)
Try
adt.Fill(dts)
dtb = dts.Tables(0)
Catch loi As Exception
MessageBox.Show(loi.ToString(), "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return dtb
End Function
Public Sub CapNhat(ByVal str As String)
Dim cm As SqlCommand
Try
cm = New SqlCommand(str, cn)
cm.ExecuteNonQuery()
Catch loi As Exception
MessageBox.Show(loi.ToString(), "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class
2. Thiết kế form
- Tạo thư mục chứa form: bạn click chuột phải vào tên project chọn Add -> New folder và
đặt tên cho thư mục là Giao dien. Tiếp theo bạn click chuột phải vào Form1.vb – được
10. ANHMATTROI – TIN5A
10
tạo ra lúc tạo project chọn Cut và Peste vào thư mục Giao dien, xong bạn đổi tên file
Form1.vb thành Main.vb
- Các file trong project De4:
- Tiếp theo: bạn kéo các đối tượng sau vào from: 1 MenuStrip, 2 Button, 1 TabControl, …
như trong hai hinh sau:
13. ANHMATTROI – TIN5A
13
Button Tên biến Button Tên biến
Xem và cập nhật btXem First btFirst
Tìm kiếm btTimKiem << btTruoc
Hiển thị btHienThi >> btSau
Thêm btThem Last btLast
Sửa btSua
Tìm kiếm (button ở
trong tabpage tìm
kiếm)
btTK
Xóa btXoa
+ Các Label:
Label Tên biến Label Tên biến
Mã NV lbMaNV Ngày vi phạm lbNgayVP
Họ tên lbHoten Xư lí lbXuLi
Ngày Sinh lbNgaySinh Lương lbLuong
Giới tinh lbGioiTinh
Quê quán lbQueQuan
STT lbSTT
Vi phạm lbViPham
+ Các DataGridView: DataGridView ở tab xem và cập nhật đổi tên biến thành dtgrvXem,
DataGridView ở tab tìm kiếm đổi thành dtgrvTK
+ Các TextBox: đổi tên biến các TextBox
14. ANHMATTROI – TIN5A
14
Còn một TextBox trong tab tìm kiếm bạn đổi thanh tbTK
+ TabControl đổi thành tctr, TabPage Xem và cập nhật đổi thành tpXem, TabPage Tìm kiếm
đổi thành tpTimKiem
+ ComboBox đổi thành cbXem và điền danh sách bảng vào ComboBox như hình sau:
15. ANHMATTROI – TIN5A
15
+ Đổi MenuStrip thành mnstr, Form xem và cập nhật đổi thành mnCapNhat, Form tìm kiếm
đổi thành mnTimKiem, Thoát đổi thanh mnThoat
- Click chuột phải vào file Main.vb chọn View code rồi xóa hết code trong tab hiện ra rồi
copy đoạn code sau vào:
Public Class Main
Private TP As List(Of TabPage)
Private ibutton As Integer
Private dtbNV As DataTable
Private dtbVP As DataTable
Private kn As KetNoi
Private ikn As Integer
Private icn As Integer
Private Sub Bai2_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
kn = New KetNoi()
kn.ChuoiKN = " "
If Not kn.KetNoi() Then
MessageBox.Show("Lỗi kết nối", "Lỗi", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
kn = Nothing
Return
End If
TP = New List(Of TabPage)
TP.Add(tpXem)
TP.Add(tpTimKiem)
tctr.TabPages.RemoveAt(1)
ibutton = 0
dtbNV = New DataTable()
dtbVP = New DataTable()
ikn = 0
16. ANHMATTROI – TIN5A
16
icn = 0
End Sub
Private Sub Main_FormClosing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
If kn.TinhTrang() Then
kn.NgatKN()
End If
End Sub
Private Sub btXem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btXem.Click, mnCapNhat.Click
If ibutton <> 0 Then
tctr.TabPages.Remove(TP(ibutton))
tctr.TabPages.Add(tpXem)
ibutton = 0
End If
End Sub
Private Sub btTimKiem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btTimKiem.Click, mnTimKiem.Click
If ibutton <> 1 Then
tctr.TabPages.Remove(TP(ibutton))
tctr.TabPages.Add(tpTimKiem)
ibutton = 1
End If
End Sub
Private Sub cbXem_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cbXem.SelectedIndexChanged, btHienThi.Click
If kn.TinhTrang() Then
If cbXem.SelectedIndex = 0 Then
icn = 0
lbMaNV.Enabled = True
tbMaNV.Enabled = True
tbMaNV.Text = ""
tbMaNV.Focus()
lbHoTen.Enabled = True
tbHoTen.Text = ""
tbHoTen.Enabled = True
lbNgaySinh.Enabled = True
tbNgaySinh.Enabled = True
tbNgaySinh.Text = ""
lbGioiTinh.Enabled = True
tbGioiTinh.Enabled = True
tbGioiTinh.Text = ""
lbQueQuan.Enabled = True
tbQueQuan.Enabled = True
tbQueQuan.Text = ""
lbLuong.Enabled = True
tbLuong.Enabled = True
18. ANHMATTROI – TIN5A
18
dtgrvXem.DataSource = dtbVP
HienDLLenTextBox()
End If
Else
MessageBox.Show("Bạn chưa kết nối cơ sở dữ liệu", "Thông báo", _
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Private Sub btTK_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btTK.Click
If kn.TinhTrang() Then
Dim adt As SqlClient.SqlDataAdapter
Dim dts As New DataSet()
Try
adt = New SqlClient.SqlDataAdapter("select * from NhanVien where MaNV = " _
+ tbTK.Text, kn.KN())
adt.Fill(dts)
dtbNV = dts.Tables(0)
dtgrvTK.DataSource = dtbNV
Catch ex As Exception
End Try
Else
MessageBox.Show("Bạn chưa kết nối cơ sở dữ liệu", "Thông báo", _
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Private Sub btXoa_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btXoa.Click
If kn.TinhTrang() Then
If cbXem.SelectedIndex = 0 Then
If dtgrvXem.RowCount > 1 Then
kn.CapNhat("delete NhanVien where MaNV = '" _
+ dtgrvXem.Item(0, icn).Value + "'")
icn = icn - 1
If icn < 0 Then
icn = 0
End If
dtbNV = kn.LayDL("NhanVien")
dtgrvXem.DataSource = dtbNV
Try
HienDLLenTextBox()
dtgrvXem.Rows(0).Selected = False
dtgrvXem.Rows(icn).Selected = True
Catch loi As Exception
End Try
End If
ElseIf cbXem.SelectedIndex = 1 Then
If dtgrvXem.RowCount > 1 Then
19. ANHMATTROI – TIN5A
19
kn.CapNhat("delete VP where STT = " _
+ dtgrvXem.Item(0, icn).Value.ToString())
icn = icn - 1
If icn < 0 Then
icn = 0
End If
kn.CapNhat("declare @i int set @i = 0 " + _
"update VP set STT = @i, @i = @i + 1")
dtbVP = kn.LayDL("VP")
dtgrvXem.DataSource = dtbVP
Try
HienDLLenTextBox()
dtgrvXem.Rows(0).Selected = False
dtgrvXem.Rows(icn).Selected = True
Catch loi As Exception
End Try
End If
End If
Else
MessageBox.Show("Bạn chưa kết nối cơ sở dữ liệu", "Thông báo", _
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Private Sub btThem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btThem.Click
If kn.TinhTrang() Then
If cbXem.SelectedIndex = 0 Then
Dim chuoi As String = "insert into NhanVien values('" + _
tbMaNV.Text + "',N'" + tbHoTen.Text + "','" + _
tbNgaySinh.Text + "',N'" + _
tbGioiTinh.Text + "',N'" + tbQueQuan.Text + "'," + _
tbLuong.Text + ")"
kn.CapNhat(chuoi)
dtbNV = kn.LayDL("NhanVien")
dtgrvXem.DataSource = dtbNV
HienDLLenTextBox()
Try
dtgrvXem.Rows(0).Selected = False
icn = dtgrvXem.RowCount - 2
dtgrvXem.Rows(icn).Selected = True
Catch loi As Exception
End Try
ElseIf cbXem.SelectedIndex = 1 Then
Dim chuoi As String = "insert into VP values(1, N'" + _
tbViPham.Text + "','" + tbNgayVP.Text + "',N'" + _
tbXuLi.Text + "','" + tbMaNV.Text + "')"
kn.CapNhat(chuoi)
kn.CapNhat("declare @i int set @i = 0 " + _
"update VP set STT = @i, @i = @i + 1")
dtbVP = kn.LayDL("VP")
20. ANHMATTROI – TIN5A
20
dtgrvXem.DataSource = dtbVP
HienDLLenTextBox()
Try
dtgrvXem.Rows(0).Selected = False
icn = dtgrvXem.RowCount - 2
dtgrvXem.Rows(icn).Selected = True
Catch loi As Exception
End Try
End If
Else
MessageBox.Show("Bạn chưa kết nối cơ sở dữ liệu", "Thông báo", _
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Private Sub btFirst_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btFirst.Click
If kn.TinhTrang() Then
If dtgrvXem.RowCount > 1 Then
dtgrvXem.Rows(icn).Selected = False
dtgrvXem.Rows(0).Selected = True
icn = 0
HienDLLenTextBox()
End If
End If
End Sub
Private Sub btLast_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btLast.Click
If kn.TinhTrang() Then
If dtgrvXem.RowCount > 1 Then
dtgrvXem.Rows(icn).Selected = False
icn = dtgrvXem.RowCount - 2
dtgrvXem.Rows(icn).Selected = True
HienDLLenTextBox()
End If
End If
End Sub
Private Sub btTruoc_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btTruoc.Click
If dtgrvXem.RowCount > 1 Then
dtgrvXem.Rows(icn).Selected = False
icn = icn - 1
If icn < 0 Then
icn = dtgrvXem.RowCount - 2
End If
dtgrvXem.Rows(icn).Selected = True
HienDLLenTextBox()
End If
End Sub
21. ANHMATTROI – TIN5A
21
Private Sub btSau_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btSau.Click
If dtgrvXem.RowCount > 1 Then
dtgrvXem.Rows(icn).Selected = False
icn = icn + 1
If icn > dtgrvXem.RowCount - 2 Then
icn = 0
End If
dtgrvXem.Rows(icn).Selected = True
HienDLLenTextBox()
End If
End Sub
Private Sub dtgrvXem_CellClick(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles
dtgrvXem.CellClick
icn = e.RowIndex
If icn < 0 Then
icn = 0
Return
End If
If icn = dtgrvXem.RowCount - 1 Then
dtgrvXem.Rows(icn).Selected = False
Return
End If
HienDLLenTextBox()
End Sub
Public Sub HienDLLenTextBox()
If cbXem.SelectedIndex = 0 Then
If dtgrvXem.RowCount > 1 Then
If icn = -1 Or icn = dtgrvXem.RowCount - 1 Then
Return
End If
Try
tbMaNV.Text = dtgrvXem.Item(0, icn).Value
tbHoTen.Text = dtgrvXem.Item(1, icn).Value
tbNgaySinh.Text = dtgrvXem.Item(2, icn).Value
tbGioiTinh.Text = dtgrvXem.Item(3, icn).Value
tbQueQuan.Text = dtgrvXem.Item(4, icn).Value
tbLuong.Text = dtgrvXem.Item(5, icn).Value
Catch loi As Exception
End Try
End If
ElseIf cbXem.SelectedIndex = 1 Then
If dtgrvXem.RowCount > 1 Then
If icn = -1 Or icn = dtgrvXem.RowCount - 1 Then
Return
End If
Try
22. ANHMATTROI – TIN5A
22
tbSTT.Text = dtgrvXem.Item(0, icn).Value
tbViPham.Text = dtgrvXem.Item(1, icn).Value
tbNgayVP.Text = dtgrvXem.Item(2, icn).Value
tbXuLi.Text = dtgrvXem.Item(3, icn).Value
tbMaNV.Text = dtgrvXem.Item(4, icn).Value
Catch loi As Exception
End Try
End If
End If
End Sub
Private Sub btSua_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btSua.Click
If kn.TinhTrang() Then
If cbXem.SelectedIndex = 0 Then
Dim chuoi As String = "update NhanVien set MaNV = '" + _
tbMaNV.Text + "',HoTen = N'" + tbHoTen.Text + "',NgaySinh = '" + _
tbNgaySinh.Text + "',GioiTinh = N'" + tbGioiTinh.Text + _
"',QueQuan = N'" + tbQueQuan.Text + "',Luong = " _
+ tbLuong.Text + " where MaNV = '" + tbMaNV.Text + "'"
kn.CapNhat(chuoi)
dtbNV = kn.LayDL("NhanVien")
dtgrvXem.DataSource = dtbNV
HienDLLenTextBox()
dtgrvXem.Rows(0).Selected = False
dtgrvXem.Rows(icn).Selected = True
ElseIf cbXem.SelectedIndex = 1 Then
Dim chuoi As String = "update VP set ViPham = N'" _
+ tbViPham.Text + "',NgayVP = '" + tbNgayVP.Text _
+ "',XuLi = N'" + tbXuLi.Text + "',MaNV = '" _
+ tbMaNV.Text + "' where STT = " _
+ dtgrvXem.Item(0, icn).Value.ToString()
kn.CapNhat(chuoi)
dtbVP = kn.LayDL("VP")
dtgrvXem.DataSource = dtbVP
HienDLLenTextBox()
dtgrvXem.Rows(0).Selected = False
dtgrvXem.Rows(icn).Selected = True
End If
Else
MessageBox.Show("Bạn chưa kết nối cơ sở dữ liệu", "Thông báo", _
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Private Sub mnThoat_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnThoat.Click
Me.Close()
End Sub
End Class
23. ANHMATTROI – TIN5A
23
3. Kết nối CSDL
a. CSDL tạo trên vb
- Mở cơ sở dữ liệu copy chuỗi kết nối: click chuột phải vào QLVP.mdf chọn Open ,
Đợi một lúc hình sau hiện ra, rồi bạn lại click chuột phải vào QLVP.mdf chọn properties.
Bạn copy toàn bộ chuỗi kết nối ở thẻ Connnection String: bạn nhớ copy đầy đủ trong thẻ này
24. ANHMATTROI – TIN5A
24
Peste toàn bộ chuỗi kết nối vào đây: trở lại đoạn code ở trên
Nếu trong chuỗi kết nối có dấu nháy đôi nào bạn xóa hết đi
Bây giờ bạn có thể chạy chương trình của mình rui, chúc bạn thành công
b. CSDL tạo trên SQL Server
25. ANHMATTROI – TIN5A
25
- CSDL QLVP.mdf tạo trên sql server như sau:
+ Click vào Tool chọn Connect to Database
27. ANHMATTROI – TIN5A
27
Tiếp theo
Bạn mở sql server của bạn lên gõ hết các chữ ở hình sau vào Server name hay bước 1 ở hình
trên
28. ANHMATTROI – TIN5A
28
Hình này là sql server trên máy của mình còn trên máy của bạn là khác đấy
Sau khi bước 5 hoàn thành click vào các dấu cộng để mở csdl và click chuột phải vào
Xong bạn lại copy chuỗi kết nối và peste vào chỗ như mình đã trình bày ở trên
c. Kết nối tới file database đã có sẵn