I. Thiết kế tổng quan
I.1. Cấu trúc chi tiết lớp XL_BANG
I.1.1. Khai báo biến thành viên
#Region "Khai báo biến thành viên"
'Đối tượng truy xuất cập nhật dữ liệu
Private WithEvents mBo_doc_ghi As OleDbDataAdapter
'Biến chuỗi chứa nội dung truy vấn dữ liệu Private mChuoi_SQL As String = ""
'Biến chứa tên bảng muốn truy vấn Private mTen_bang As String
'Biến kết nối dùng chung đến nguồn dữ liệu Private Shared mKet_noi As OleDbConnection
'Biến chứa thông tin vị trí nguồn dữ liệu.
'Giá trị này phải được gán trước khi sử dụng lớp.
Public Shared Chuoi_CSDL As String
#End Region
I.1.2. Danh sách các thuộc tính
Ứng với mỗi biến thành viên cần giao tiếp ra bên ngoài, chúng ta cung cấp thuộc tính tương ứng để làm việc.
#Region "Danh sách các thuộc tính"
Public Property Chuoi_SQL() As String Get
Return mChuoi_SQL End Get
Set(ByVal Value As String) mChuoi_SQL = Value End Set
End Property
Public Property Ten_bang() As String Get
Return mTen_bang End Get
Set(ByVal Value As String) mTen_bang = Value End Set
End Property
Public Shared Property Ket_noi() As OleDbConnection Get
Return mKet_noi End Get
Set(ByVal Value As OleDbConnection) mKet_noi = Value
End Set End Property
'Cho biết số dòng đang hiển thị của DefaultView Public ReadOnly Property So_dong() As Integer Get
Return DefaultView.Count End Get
End Property
#End Region
I.1.3. Nhóm hàm khởi tạo đối tượng
#Region "Nhóm hàm khởi tạo đối tượng"
Public Sub New() MyBase.New() End Sub
'Thủ tục khởi tạo đọc toàn bộ bảng
Public Sub New(ByVal pTen_bang As String) MyBase.New(pTen_bang)
mTen_bang = pTen_bang Doc_bang()
End Sub
'Thủ tục khởi tạo đọc bảng theo câu lệnh sql
Public Sub New(ByVal pTen_bang As String, ByVal pChuoi_SQL As String) MyBase.New(pTen_bang)
mTen_bang = pTen_bang mChuoiSQL = pChuoi_SQL Doc_bang()
End Sub
#End Region
I.1.4. Nhóm hàm cung cấp thông tin
#Region "Nhóm hàm cung cấp thông tin"
'Thực hiện lấy cấu trúc và dữ liệu vào DataTable.
'Sau đó, phát sinh bộ lệnh cập nhật dữ liệu Private Sub Doc_bang()
If mChuoi_SQL = "" Then mChuoi_SQL = "SELECT * FROM " & mTen_bang If mKet_noi Is Nothing Then
mKet_noi = New OleDbConnection mKet_noi.ConnectionString = _
Chuoi_lien_ket & "Data Source=" & Chuoi_CSDL End If
Try
mBo_doc_ghi = New _
OleDbDataAdapter(mChuoi_SQL, mKet_noi) mBo_doc_ghi.Fill(Me)
mBo_doc_ghi.FillSchema(Me, SchemaType.Mapped) mBo_doc_ghi.SelectCommand.CommandText = _ "Select * FROM " & mTen_bang
Dim Bo_phat_sinh As New _
OleDbCommandBuilder(mBo_doc_ghi) Catch ex As OleDbException
End Try End Sub
#End Region
I.1.5. Nhóm hàm xử lý tính toán
#Region "Nhóm hàm xử lý tính toán"
'Hàm cập nhật các thay đổi trên DataTable vào CSDL Public Function Ghi() As Boolean
Dim ketqua As Boolean = True Try
mBo_doc_ghi.Update(Me) Me.AcceptChanges() Catch e As Exception Me.RejectChanges() ketqua = False End Try
Return ketqua End Function
'Lọc dữ liệu của DefaultView theo điều kiện lọc Public Sub Loc_du_lieu(ByVal pDieu_kien As String) Try
Me.DefaultView.RowFilter = pDieu_kien Catch ex As Exception
End Try End Sub
'Hàm thực hiện nội dung lệnh truyền vào.
'- Nếu thành công, trả về số mẩu tin được cập nhật '- Nếu thành công, hàm trả về -1
Public Function Thuc_hien_lenh(ByVal Lenh As String) As Integer Try
Dim Cau_lenh As New OleDbCommand(Lenh, mKet_noi) mKet_noi.Open()
Dim ket_qua As Integer = Cau_lenh.ExecuteNonQuery() mKet_noi.Close()
Return ket_qua
Catch ex As OleDbException Return -1
End Try End Function
'Hàm thực hiện nội dung lệnh tính toán thống kê '- Nếu thành công, trả về kết quả thống kê
'- Nếu thành công, trả về Nothing
Public Function Thuc_hien_lenh_tinh_toan(ByVal _
Lenh As String) As Object
Try
Dim Cau_lenh As New OleDbCommand(Lenh, mKet_noi) mKet_noi.Open()
Dim ket_qua As Object = Cau_lenh.ExecuteScalar mKet_noi.Close()
Return ket_qua
Catch ex As OleDbException Return Nothing
End Try End Function
I.1.6. Nhóm hàm xử lý sự kiện
#Region "Xử lý sự kiện"
'Cập nhật giá trị cột AutoNumber làm khóa chính Private Sub mBo_doc_ghi_RowUpdated _
(ByVal sender As Object, ByVal e As _
System.Data.OleDb.OleDbRowUpdatedEventArgs) _ Handles mBo_doc_ghi.RowUpdated
If e.Status = UpdateStatus.Continue AndAlso _ e.StatementType = StatementType.Insert Then 'Lay gia tri AutoNumber
If Me.PrimaryKey(0).AutoIncrement Then
Dim cmd As New OleDbCommand("Select @@IDENTITY", mKet_noi) e.Row.Item(0) = cmd.ExecuteScalar()
e.Row.AcceptChanges()
End If
End If End Sub
#End Region