Ðề: Quản lý mua bán hàng - Phần 4: Thiết kế form
Cảm ơn bạn lehongduc.
To all mem:
Tip của bạn lehongduc rất hữu ích vì khi khởi nạp form sẽ nạp trắng dữ liệu, do vậy thời gian khởi nạp sẽ nhanh.
Tuy nhiên, cần lưu ý, do thiết kế chúng ta có 4 nút đầu trước sau cuối, nên nếu khởi nạp trắng thì 4 nút này vô tác dụng nếu lúc nạp vào người sử dụng muốn dùng chúng để di chuyển đến một record nào đó.
Trao đổi thêm:
Với cách làm theo đề nghị của tôi, các nút lệnh duyệt từng mẫu tin tới lui chỉ có hiệu lực đối với các mẫu tin được nhập vào kể từ lúc mở Form.
Trong trường hợp cần duyệt các mẫu tin đang có trong table DmHanghoa theo 1 điều kiện nào đó chúng ta cần viết 1 thủ tục để duyệt theo điều kiện xác định (hoặc duyệt toàn bộ nếu cần).
Để tiện cho các Bạn tham khảo cụ thể, đồng thời tránh làm xáo trộn file ứng dụng chung chúng ta đang xây dựng, sau đây tôi xin thuyết minh chi tiết với 1 dữ liệu mẫu riêng:
File dữ liệu mẫu lưu tại link sau:
http://www.mediafire.com/download.php?zm21c0zwwml
Giả định tôi có table đặt tên là: DmHanghoa đăng ký danh mục hàng hoá
Trong đó có 2 field:
+ MSHH: đăng ký mã số hàng hoá
+ TenHanghoa: đăng ký tên hàng hoá
Tôi thiết kế Form nhập Danh mục hàng hoá đặt tên là: frmCapnhatDmHanghoa
Trong Form này:
+ có 3 TextBox: MSHH, TenHangHoa và 1 TextBox dùng để ghi tổng số mẫu tin hiện có trong table DmHanghoa
+ có các nút lệnh: cmdThemmoi, cmdToi, cmdLui, cmdXoa, cmdHienTatca, cmdLoc
+ Khai báo thuộc tính
Record Source của Form như sau:
SELECT * FROM DmHanghoa WHERE False
Thủ tục gán cho sự kiện Click của từng nút lệnh trên như sau:
Private Sub cmdloc_click()
'Lọc lại dữ liệu theo điều kiện xác định
Dim sDieukien
'Lấy điều kiện được khai báo thông qua hàm Inputbox
sDieukien = InputBox("Xin nhap vao 1 hoac mot so ky tu dau cua Ma so hang hoa can loc: ", "Loc Danh muc")
If Not IsNull(sDieukien) Then
'Gán lại RecordSource cho Form
Me.RecordSource = "SELECT * FROM DmHanghoa WHERE((DmHanghoa.MSHH) Like '" & sDieukien & "*');"
Me.Requery
End If
End Sub
Private Sub cmdthemmoi_click()
'Thêm mới
On Error GoTo Err_Command5_Click
'Gán lại RecordSource cho Form như lúc ban đầu
Me.RecordSource = "SELECT * FROM DmHanghoa WHERE False;"
Me.Requery
'Dòng này để nạp lại dữ liệu nguồn cho Form
'Chuyển sang chế độ nhập mới
DoCmd.GoToRecord , , acNewRec
Exit_Command5_Click:
Exit Sub
Err_Command5_Click:
MsgBox Err.Description
Resume Exit_Command5_Click
End Sub
Private Sub cmdtoi_click()
'Duyệt đến mẫu tin kế tiếp sau
On Error GoTo Err_Command6_Click
DoCmd.GoToRecord , , acNext
Exit_Command6_Click:
Exit Sub
Err_Command6_Click:
MsgBox Err.Description
Resume Exit_Command6_Click
End Sub
Private Sub cmdlui_click()
'Duyệt đến mẫu tin kế tiếp trước
On Error GoTo Err_Command7_Click
DoCmd.GoToRecord , , acPrevious
Exit_Command7_Click:
Exit Sub
Err_Command7_Click:
MsgBox Err.Description
Resume Exit_Command7_Click
End Sub
Private Sub cmdhientatca_click()
'Cho hiện toàn bộ các mẫu tin trong table DmHanghoa
'Bằng cách gán lại RecordSource cho Form
Me.RecordSource = "DmHanghoa"
Me.Requery
End Sub
Private Sub cmdxoa_click()
'Xoá mẫu tin đang thấy
On Error GoTo Err_Command11_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Command11_Click:
Exit Sub
Err_Command11_Click:
MsgBox Err.Description
Resume Exit_Command11_Click
End Sub