Màn hình đơn

Một phần của tài liệu hướng dẫn sử dụng visual basic (Trang 152 - 157)

II.1. Các khai báo

Nguồn dữ liệu cho màn đơn chỉ là một bảng, phần khai báo cho màn hình này thường như sau:

Ví dụ:

Private <bang_du_lieu> As <XL_TEN_BANG> Private Them_moi As Boolean = False

Private WithEvents Danh_sach As BindingManagerBase

ƒ <bang_du_lieu> là biến tham chiếu đến đối tượng của lớp xử lý nghiệp vụ trên màn hình.

ƒ Them_moi là biến theo dõi trạng thái thêm mới của dịng đang làm việc trên màn hình.

ƒ Danh_sach là biến tham chiếu đến BindingManagerBase của <bang_du_lieu> đang hiển thị trên màn hình

II.2. Các th tc nhp xut

Thực hiện nhập xuất trên màn hình đơn, chúng ta cĩ ba thủ tục sau:

ƒ Xuat_ho_so_<ten_bang>:

Private Sub Xuat_ho_so_<ten_bang> () If Danh_sach.Position >= 0 Then Them_moi = False

<Điều khiển 1>.<Thuộc tính liên kết dữ liệu> = _

Danh_sach.Current(<Cột 1>)

<Điều khiển 2>.<Thuộc tính liên kết dữ liệu> = _

Danh_sach.Current(<Cột 2>) . . . Else Xuat_ho_so_<ten_bang>_moi End If End Sub ƒ Xuat_ho_so_<ten_bang>_moi:

Private Sub Xuat_ho_so_<ten_bang>_moi() Them_moi = True

<Điều khiển 1>.<Thuộc tính liên kết dữ liệu> = _

<Giá trị mặc định của cột hoặc của kiểu> <Điều khiển 2>.<Thuộc tính liên kết dữ liệu> = _

<Giá trị mặc định của cột hoặc của kiểu> . . .

ƒ Nhap_ho_so_<ten_bang>:

Private Sub Nhap_ho_so_<ten_bang>()

Danh_sach.Current(<Cột 1>) = <Điều khiển 1>.<Thuộc tính liên kết dữ

liệu>

Danh_sach.Current(<Cột 2>) = <Điều khiển 2>.<Thuộc tính liên kết dữ

liệu> . . . End Sub

Nếu trên màn hình cĩ sử dụng các điều khiển liệt kê (ListControl) như ComboBox, ListBox, CheckListBox, lúc này cần phải cĩ thêm nguồn dữ liệu liệt kê cho điều khiển (<bang_liet_ke>) và cĩ thêm thủ tục:

ƒ Xuat_danh_sach_chon_<ten_bang>:

‘ <bang_liet_ke> là đối tượng cung cấp danh sách liệt kê cho điều khiển Private Sub Xuat_danh_sach_chon_<ten_bang>()

<Điều khiển liệt kê>.DisplayMember = _

<Tên cột muốn hiển thị trên bảng liệt kê> <Điều khiển liệt kê>.ValueMember = _ (adsbygoogle = window.adsbygoogle || []).push({});

<Tên cột muốn liên kết trên bảng dữ liệu> <Điều khiển liệt kê>.DataSource = <bang_liet_ke>

End Sub

Nếu màn hình hiển thị dữ liệu dưới dạng dịng cột sử dụng DataGrid, thủ tục xuất lưới sẽ là:

ƒ Xuat_luoi_<ten_bang>:

Private Sub Xuat_luoi_<ten_bang>()

<Điều khiển lưới>.DataSource = <bang_du_lieu> End Sub

II.3. Các hàm kim tra

Trước khi thực hiện nhập dữ liệu vào DataTable, cần kiểm tra dữ liệu nhập của mỗi điều khiển cĩ hợp lệ (khơng vi phạm các ràng buộc tồn vẹn dữ liệu, miền giá trị, v.v...)

Các hàm hiểm tra trả về trị Boolean: True là hợp lệ, False là khơng hợp lệ

Nội dung các hàm kiểm tra như sau:

ƒ Kiem_tra_<ten cot > As Boolean: (số lượng tùy theo sốđiều khiển cần kiểm tra) Private Function Kiem_tra_<ten_cot> As Boolean

Dim Ketqua As Boolean = <điều kiện giá trị trên điều khiển muốn kiểm tra hợp lệ>

If Not Ketqua Then ' Thơng báo lỗi <Điều khiển>.Focus

' Phần này thay đổi tùy mỗi trường hợp [Else

Ketqua = <điều kiện kiểm tra khác trên cùng điều khiển nếu cĩ> If Not Ketqua Then

' Thơng báo lỗi <Điều khiển>.Focus End If] End If Return Ketqua End Function

ƒ Kiem_tra_ghi_<ten_bang > As Boolean: phối hợp các hàm kiểm tra trên để lấy kết quả tổng hợp

Private Function Kiem_tra_ghi_<ten_bang> As Boolean Dim Ketqua As Boolean = Kiem_tra_<ten_cot_1> AndAlso _

Kiem_tra_<ten_cot_2> ...

Return Ketqua End Function

ƒ Kiem_tra_huy_<ten_bang > As Boolean: kiểm tra hủy dữ liệu cĩ vi phạm ràng buộc tồn vẹn khơng (kiểm tra trên các bảng nhiều)

Private Function Kiem_tra_huy_<ten_bang> As Boolean Dim Ketqua As Boolean

Dim bang As _

New XL_<TEN_BANG_CON>(<điều kiện lọc theo khĩa bảng kiểm tra>) Ketqua = (bang.So_dong = 0)

' kiểm tra trên các bảng con khác nếu cần Return Ketqua

End Function

II.4. Các x lý s kin

Trên màn hình đơn, chúng ta thường cĩ các xử lý sự kiện sau:

ƒ Form_Load: Khởi tạo bảng dữ liệu và thực hiện xuất danh sách chọn (nếu cĩ), xuất lưới, xuất hồ sơ

Private Sub MH_Load(ByVal sender As System.Object, _ (adsbygoogle = window.adsbygoogle || []).push({});

ByVal e As System.EventArgs) Handles MyBase.Load <bang_du_lieu> = New <XL_TEN_BANG>

Danh_sach = Me.BindingContext(<bang_du_lieu>) Xuat_luoi_<ten_bang>()

Xuat_ho_so_<ten_bang>() End Sub

ƒ Sự kiện nhấn của các nút lệnh di chuyển: thay đổi dịng hiện hành nếu hợp lệ

Private Sub Dau_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Dau.Click

If Danh_sach.Position > 0 Then Danh_sach.Position = 0 End If

End Sub

Private Sub Truoc_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Truoc.Click

If Danh_sach.Position > 0 Then Danh_sach.Position -= 1 End If

End Sub

Private Sub Sau_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Sau.Click

If Danh_sach.Position < Danh_sach.Count - 1 Then Danh_sach.Position += 1

End If End Sub

Private Sub Cuoi_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Cuoi.Click

If Danh_sach.Position < Danh_sach.Count - 1 Then Danh_sach.Position = Danh_sach.Count - 1 End If

End Sub

ƒ Sự kiện nhấn của nút thêm: Thực hiện xuất hồ sơ mới và đưa con trỏ nhập liệu về điều khiển bắt đầu

Private Sub Them_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Them.Click

Xuat_ho_so_<ten bang>_moi() <Điều khiển bắt đầu>.Focus End Sub

Sự kiện nhấn của nút ghi: Thực hiện kiểm tra ghi. Nếu hợp lệ, thực hiện các bước: + Nếu Them_moi là True (đang thêm), thêm dịng mới trên Danh_sach

+ Nhập hồ sơ

+ Xuất hồ sơ

Private Sub Ghi_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Ghi.Click

If Kiem_tra_ghi_<ten bang>() Then If Them_moi Then Danh_sach.AddNew() Nhap_ho_so_<ten bang>() Danh_sach.EndCurrentEdit() <bang_du_lieu>.Ghi() Xuat_ho_so_<ten bang>() End If End Sub (adsbygoogle = window.adsbygoogle || []).push({});

ƒ Sự kiện nhấn của nút khơng: Thực hiện xuất lại thơng tin trước đĩ.

Private Sub Khong_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Khong.Click

Xuat_ho_so_<ten bang>() End Sub

ƒ Sự kiện nhấn của nút hủy: Nếu Them_moi là True, thực hiện xuất hồ sơ; ngược lại nếu kiểm tra hủy hợp lệ và đồng ý xĩa thực hiện:

+ Đánh dấu hủy dịng hiện hành trên Danh_sach + Thực hiện ghi dữ liệu của lớp xử lý

+ Xuất hồ sơ

Private Sub Huy_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles Huy.Click

If Them_moi Then

Xuat_ho_so_<ten bang>() Exit Sub

Else If Kiem_tra_huy_<ten bang>() Then

If MsgBox("Đồng ý hủy ?", MsgBoxStyle.Question + _

MsgBoxStyle.YesNo,"Xin cho biết") = MsgBoxResult.Yes Then Danh_sach.Current.Delete() <bang_du_lieu>.Ghi() End If Else ' Thơng báo lỗi End If End Sub

ƒ Sự kiện CurrentChanged của Danh_sach: Thực hiện xuất hồ sơ, nếu khơng phải đang thêm mới Private Sub Danh_sach_CurrentChanged(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Danh_sach.CurrentChanged

If Not Them_moi Then

Xuat_ho_so_<ten_bang>() End If

End Sub

Một phần của tài liệu hướng dẫn sử dụng visual basic (Trang 152 - 157)